Compare commits

..

8 Commits
v1.1.4 ... v1.2

Author SHA1 Message Date
Markos Gogoulos
632db06ca3 command for mp4hls path 2021-03-22 21:35:32 +02:00
swiftugandan
0129ab6732 Fix docker chown recursion performance and bento4 upgrade (#95)
* optimize docker chown performance

* upgrades bento4
2021-03-22 20:04:12 +02:00
dependabot[bot]
2b65afc8dd Bump pillow from 8.0.1 to 8.1.1 (#108)
Bumps [pillow](https://github.com/python-pillow/Pillow) from 8.0.1 to 8.1.1.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/8.0.1...8.1.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-03-22 20:02:59 +02:00
Dan1ell
b27e3ca6f6 Update Configuration.md (#86)
Clarifying which local_settings.py file to use.
2021-03-21 20:38:40 +02:00
Markos Gogoulos
1a7adb80da Update Configuration.md (#93)
add option
2021-03-21 20:38:18 +02:00
Markos Gogoulos
2552551662 removes redundant usage of FRONTEND_HOST variable (#102) 2021-03-21 20:36:32 +02:00
Markos Gogoulos
3b35ce0262 use mediacms image from docker hub (#69)
* use mediacms image from docker hub
2021-03-08 21:54:09 +02:00
Markos Gogoulos
883af9bb4a on Readme page resize screenshots (#68)
* image formating on Readme
2021-03-08 21:36:41 +02:00
17 changed files with 113 additions and 116 deletions

2
.gitignore vendored
View File

@@ -1,6 +1,8 @@
media_files/encoded/ media_files/encoded/
media_files/original/ media_files/original/
media_files/hls/ media_files/hls/
media_files/chunks/
media_files/uploads/
postgres_data/ postgres_data/
celerybeat-schedule celerybeat-schedule
logs/ logs/

View File

@@ -16,12 +16,12 @@ RUN pip install -r requirements.txt
COPY . /home/mediacms.io/mediacms COPY . /home/mediacms.io/mediacms
WORKDIR /home/mediacms.io/mediacms WORKDIR /home/mediacms.io/mediacms
RUN wget -q http://zebulon.bok.net/Bento4/binaries/Bento4-SDK-1-6-0-632.x86_64-unknown-linux.zip && \ RUN wget -q http://zebulon.bok.net/Bento4/binaries/Bento4-SDK-1-6-0-637.x86_64-unknown-linux.zip && \
unzip Bento4-SDK-1-6-0-632.x86_64-unknown-linux.zip -d ../bento4 && \ unzip Bento4-SDK-1-6-0-637.x86_64-unknown-linux.zip -d ../bento4 && \
mv ../bento4/Bento4-SDK-1-6-0-632.x86_64-unknown-linux/* ../bento4/ && \ mv ../bento4/Bento4-SDK-1-6-0-637.x86_64-unknown-linux/* ../bento4/ && \
rm -rf ../bento4/Bento4-SDK-1-6-0-632.x86_64-unknown-linux && \ rm -rf ../bento4/Bento4-SDK-1-6-0-637.x86_64-unknown-linux && \
rm -rf ../bento4/docs && \ rm -rf ../bento4/docs && \
rm Bento4-SDK-1-6-0-632.x86_64-unknown-linux.zip rm Bento4-SDK-1-6-0-637.x86_64-unknown-linux.zip
############ RUNTIME IMAGE ############ ############ RUNTIME IMAGE ############
FROM python:3.8-slim-buster as runtime-image FROM python:3.8-slim-buster as runtime-image
@@ -47,7 +47,7 @@ ENV ENABLE_MIGRATIONS='yes'
ENV VIRTUAL_ENV=/home/mediacms.io ENV VIRTUAL_ENV=/home/mediacms.io
ENV PATH="$VIRTUAL_ENV/bin:$PATH" ENV PATH="$VIRTUAL_ENV/bin:$PATH"
COPY --from=compile-image /home/mediacms.io /home/mediacms.io COPY --chown=www-data:www-data --from=compile-image /home/mediacms.io /home/mediacms.io
RUN apt-get update -y && apt-get -y upgrade && apt-get install --no-install-recommends \ RUN apt-get update -y && apt-get -y upgrade && apt-get install --no-install-recommends \
supervisor nginx ffmpeg imagemagick procps -y && \ supervisor nginx ffmpeg imagemagick procps -y && \

View File

@@ -9,18 +9,11 @@ A demo is available at https://demo.mediacms.io
## Screenshots ## Screenshots
![MediaCMS](docs/images/index.jpg) <p align="center">
<img src="https://raw.githubusercontent.com/mediacms-io/mediacms/main/docs/images/index.jpg" width="340">
Vanilla MediaCMS index page <img src="https://raw.githubusercontent.com/mediacms-io/mediacms/main/docs/images/video.jpg" width="340">
<img src="https://raw.githubusercontent.com/mediacms-io/mediacms/main/docs/images/embed.jpg" width="340">
![MediaCMS](docs/images/video.jpg) </p>
Video page with player different options
![MediaCMS](docs/images/embed.jpg)
Embed video page
## Features ## Features
- **Complete control over your data**: host it yourself! - **Complete control over your data**: host it yourself!
@@ -94,15 +87,15 @@ git clone https://github.com/mediacms-io/mediacms
cd mediacms cd mediacms
``` ```
The default option to serve MediaCMS is on http://localhost. If you want to set a url and have it served there, set the `FRONTEND_HOST` variable on file `deploy/docker/local_settings.py`. The default option is to serve MediaCMS on all ips available of the server (including localhost).
Now run Now run
```bash ```bash
docker-compose build && docker-compose up docker-compose up
``` ```
This will build an image, download and setup necessary Docker images and start all containers. Once it finishes, MediaCMS will be installed and available on http://localhost (or the url you've set as `FRONTEND_HOST` on file `deploy/docker/local_settings.py`) This will download all MediaCMS related Docker images and start all containers. Once it finishes, MediaCMS will be installed and available on http://localhost or http://ip
For more instructions, checkout the docs on the [Docker deployment](docs/Docker_deployment.md) page. Docker Compose support has been contributed by @swiftugandan. For more instructions, checkout the docs on the [Docker deployment](docs/Docker_deployment.md) page. Docker Compose support has been contributed by @swiftugandan.

View File

@@ -42,7 +42,11 @@ ALLOW_RATINGS_CONFIRMED_EMAIL_ONLY = True
# ip of the server should be part of this # ip of the server should be part of this
ALLOWED_HOSTS = ["*", "mediacms.io", "127.0.0.1", "localhost"] ALLOWED_HOSTS = ["*", "mediacms.io", "127.0.0.1", "localhost"]
FRONTEND_HOST = "http://localhost" FRONTEND_HOST = "http://localhost"
# this variable - along with SSL_FRONTEND_HOST is used on several places
# as email where a URL need appear etc
# FRONTEND_HOST needs an http prefix - at the end of the file # FRONTEND_HOST needs an http prefix - at the end of the file
# there's a conversion to https with the SSL_FRONTEND_HOST env # there's a conversion to https with the SSL_FRONTEND_HOST env
INTERNAL_IPS = "127.0.0.1" INTERNAL_IPS = "127.0.0.1"
@@ -209,7 +213,7 @@ CANNOT_ADD_MEDIA_MESSAGE = ""
# mp4hls command, part of Bendo4 # mp4hls command, part of Bendo4
MP4HLS_COMMAND = ( MP4HLS_COMMAND = (
"/home/mediacms.io/mediacms/Bento4-SDK-1-6-0-632.x86_64-unknown-linux/bin/mp4hls" "/home/mediacms.io/mediacms/Bento4-SDK-1-6-0-637.x86_64-unknown-linux/bin/mp4hls"
) )
# highly experimental, related with remote workers # highly experimental, related with remote workers

View File

@@ -4,6 +4,7 @@ set -e
# forward request and error logs to docker log collector # forward request and error logs to docker log collector
ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log && \ ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log && \
ln -sf /dev/stdout /var/log/nginx/mediacms.io.access.log && ln -sf /dev/stderr /var/log/nginx/mediacms.io.error.log ln -sf /dev/stdout /var/log/nginx/mediacms.io.access.log && ln -sf /dev/stderr /var/log/nginx/mediacms.io.error.log
cp /home/mediacms.io/mediacms/deploy/docker/local_settings.py /home/mediacms.io/mediacms/cms/local_settings.py cp /home/mediacms.io/mediacms/deploy/docker/local_settings.py /home/mediacms.io/mediacms/cms/local_settings.py
mkdir -p /home/mediacms.io/mediacms/{logs,pids,media_files/hls} mkdir -p /home/mediacms.io/mediacms/{logs,pids,media_files/hls}
@@ -12,8 +13,6 @@ touch /home/mediacms.io/mediacms/logs/debug.log
# Remove any dangling pids # Remove any dangling pids
rm -rf /home/mediacms.io/mediacms/pids/* rm -rf /home/mediacms.io/mediacms/pids/*
chown -R www-data. /home/mediacms.io/
TARGET_GID=$(stat -c "%g" /home/mediacms.io/mediacms/) TARGET_GID=$(stat -c "%g" /home/mediacms.io/mediacms/)
EXISTS=$(cat /etc/group | grep $TARGET_GID | wc -l) EXISTS=$(cat /etc/group | grep $TARGET_GID | wc -l)
@@ -28,6 +27,9 @@ else
usermod -a -G $GROUP www-data usermod -a -G $GROUP www-data
fi fi
# We should do this only for folders that have a different owner, since it is an expensive operation
find /home/mediacms.io/ ! \( -user www-data -group $TARGET_GID \) -exec chown www-data:$TARGET_GID {} +
chmod +x /home/mediacms.io/mediacms/deploy/docker/start.sh /home/mediacms.io/mediacms/deploy/docker/prestart.sh chmod +x /home/mediacms.io/mediacms/deploy/docker/start.sh /home/mediacms.io/mediacms/deploy/docker/prestart.sh
exec "$@" exec "$@"

View File

@@ -7,15 +7,15 @@ server {
error_log /var/log/nginx/mediacms.io.error.log warn; error_log /var/log/nginx/mediacms.io.error.log warn;
# redirect to https if logged in # # redirect to https if logged in
if ($http_cookie ~* "sessionid") { # if ($http_cookie ~* "sessionid") {
rewrite ^/(.*)$ https://localhost/$1 permanent; # rewrite ^/(.*)$ https://localhost/$1 permanent;
} # }
# redirect basic forms to https # # redirect basic forms to https
location ~ (login|login_form|register|mail_password_form)$ { # location ~ (login|login_form|register|mail_password_form)$ {
rewrite ^/(.*)$ https://localhost/$1 permanent; # rewrite ^/(.*)$ https://localhost/$1 permanent;
} # }
location /static { location /static {
alias /home/mediacms.io/mediacms/static ; alias /home/mediacms.io/mediacms/static ;

View File

@@ -9,7 +9,7 @@ services:
- /var/run/docker.sock:/tmp/docker.sock:ro - /var/run/docker.sock:/tmp/docker.sock:ro
- ./deploy/docker/reverse_proxy/client_max_body_size.conf:/etc/nginx/conf.d/client_max_body_size.conf:ro - ./deploy/docker/reverse_proxy/client_max_body_size.conf:/etc/nginx/conf.d/client_max_body_size.conf:ro
migrations: migrations:
image: mediacms:latest image: mediacms/mediacms:latest
volumes: volumes:
- ./:/home/mediacms.io/mediacms/ - ./:/home/mediacms.io/mediacms/
environment: environment:
@@ -24,10 +24,7 @@ services:
db: db:
condition: service_healthy condition: service_healthy
web: web:
build: image: mediacms/mediacms:latest
context: .
target: runtime-image
image: mediacms:latest
deploy: deploy:
replicas: 1 replicas: 1
volumes: volumes:
@@ -41,7 +38,7 @@ services:
depends_on: depends_on:
- migrations - migrations
celery_beat: celery_beat:
image: mediacms:latest image: mediacms/mediacms:latest
volumes: volumes:
- ./:/home/mediacms.io/mediacms/ - ./:/home/mediacms.io/mediacms/
environment: environment:
@@ -53,7 +50,7 @@ services:
depends_on: depends_on:
- redis - redis
celery_worker: celery_worker:
image: mediacms:latest image: mediacms/mediacms:latest
deploy: deploy:
replicas: 1 replicas: 1
volumes: volumes:

View File

@@ -11,7 +11,7 @@ services:
- ./deploy/docker/reverse_proxy/certs/:/etc/nginx/certs/ - ./deploy/docker/reverse_proxy/certs/:/etc/nginx/certs/
- ./deploy/docker/reverse_proxy/client_max_body_size.conf:/etc/nginx/conf.d/client_max_body_size.conf:ro - ./deploy/docker/reverse_proxy/client_max_body_size.conf:/etc/nginx/conf.d/client_max_body_size.conf:ro
migrations: migrations:
image: mediacms:latest image: mediacms/mediacms:latest
volumes: volumes:
- ./:/home/mediacms.io/mediacms/ - ./:/home/mediacms.io/mediacms/
environment: environment:
@@ -26,10 +26,7 @@ services:
db: db:
condition: service_healthy condition: service_healthy
web: web:
build: image: mediacms/mediacms:latest
context: .
target: runtime-image
image: mediacms:latest
deploy: deploy:
replicas: 1 replicas: 1
volumes: volumes:
@@ -43,7 +40,7 @@ services:
depends_on: depends_on:
- migrations - migrations
celery_beat: celery_beat:
image: mediacms:latest image: mediacms/mediacms:latest
volumes: volumes:
- ./:/home/mediacms.io/mediacms/ - ./:/home/mediacms.io/mediacms/
environment: environment:
@@ -55,7 +52,7 @@ services:
depends_on: depends_on:
- redis - redis
celery_worker: celery_worker:
image: mediacms:latest image: mediacms/mediacms:latest
deploy: deploy:
replicas: 2 replicas: 2
volumes: volumes:

View File

@@ -2,7 +2,7 @@ version: "3"
services: services:
migrations: migrations:
image: mediacms:latest image: mediacms/mediacms:latest
volumes: volumes:
- ./deploy/docker/local_settings.py:/home/mediacms.io/mediacms/deploy/docker/local_settings.py - ./deploy/docker/local_settings.py:/home/mediacms.io/mediacms/deploy/docker/local_settings.py
environment: environment:
@@ -17,10 +17,7 @@ services:
db: db:
condition: service_healthy condition: service_healthy
web: web:
build: image: mediacms/mediacms:latest
context: .
target: runtime-image
image: mediacms:latest
deploy: deploy:
replicas: 1 replicas: 1
ports: ports:
@@ -37,7 +34,7 @@ services:
depends_on: depends_on:
- migrations - migrations
celery_beat: celery_beat:
image: mediacms:latest image: mediacms/mediacms:latest
volumes: volumes:
- ./deploy/docker/local_settings.py:/home/mediacms.io/mediacms/deploy/docker/local_settings.py - ./deploy/docker/local_settings.py:/home/mediacms.io/mediacms/deploy/docker/local_settings.py
environment: environment:
@@ -49,7 +46,7 @@ services:
depends_on: depends_on:
- redis - redis
celery_worker: celery_worker:
image: mediacms:latest image: mediacms/mediacms:latest
deploy: deploy:
replicas: 1 replicas: 1
volumes: volumes:

View File

@@ -2,7 +2,7 @@ version: "3"
services: services:
migrations: migrations:
image: mediacms:latest image: mediacms/mediacms:latest
volumes: volumes:
- ./:/home/mediacms.io/mediacms/ - ./:/home/mediacms.io/mediacms/
environment: environment:
@@ -17,10 +17,7 @@ services:
db: db:
condition: service_healthy condition: service_healthy
web: web:
build: image: mediacms/mediacms:latest
context: .
target: runtime-image
image: mediacms:latest
deploy: deploy:
replicas: 1 replicas: 1
ports: ports:
@@ -35,7 +32,7 @@ services:
depends_on: depends_on:
- migrations - migrations
celery_beat: celery_beat:
image: mediacms:latest image: mediacms/mediacms:latest
volumes: volumes:
- ./:/home/mediacms.io/mediacms/ - ./:/home/mediacms.io/mediacms/
environment: environment:
@@ -47,7 +44,7 @@ services:
depends_on: depends_on:
- redis - redis
celery_worker: celery_worker:
image: mediacms:latest image: mediacms/mediacms:latest
deploy: deploy:
replicas: 1 replicas: 1
volumes: volumes:

View File

@@ -2,7 +2,11 @@
A number of options are available on `cms/settings.py`. A number of options are available on `cms/settings.py`.
It is advisable to override any of them by adding it to `cms/local_settings.py` . It is advisable to override any of them by adding it to `local_settings.py` .
In case of a the single server installation, add to `cms/local_settings.py` .
In case of a docker compose installation, add to `deploy/docker/local_settings.py` . This will automatically overwrite `cms/local_settings.py` .
Any change needs restart of MediaCMS in order to take effect. So edit `cms/local_settings.py`, make a change and restart MediaCMS Any change needs restart of MediaCMS in order to take effect. So edit `cms/local_settings.py`, make a change and restart MediaCMS
@@ -94,6 +98,14 @@ Make changes (True/False) to any of the following:
- CAN_SHARE_MEDIA = True # whether the share media appears - CAN_SHARE_MEDIA = True # whether the share media appears
``` ```
### show/hide the download option on a media
Edit `templates/config/installation/features.html` and set
```
download: false
```
### automatically hide media upon being reported ### automatically hide media upon being reported
set a low number for variable `REPORTED_TIMES_THRESHOLD` set a low number for variable `REPORTED_TIMES_THRESHOLD`

View File

@@ -5,12 +5,7 @@ from .methods import is_mediacms_editor, is_mediacms_manager
def stuff(request): def stuff(request):
"""Pass settings to the frontend""" """Pass settings to the frontend"""
ret = {} ret = {}
if request.is_secure(): ret["FRONTEND_HOST"] = request.build_absolute_uri('/')
# in case session is https, pass this setting so
# that the frontend uses https too
ret["FRONTEND_HOST"] = settings.SSL_FRONTEND_HOST
else:
ret["FRONTEND_HOST"] = settings.FRONTEND_HOST
ret["DEFAULT_THEME"] = settings.DEFAULT_THEME ret["DEFAULT_THEME"] = settings.DEFAULT_THEME
ret["PORTAL_NAME"] = settings.PORTAL_NAME ret["PORTAL_NAME"] = settings.PORTAL_NAME
ret["LOAD_FROM_CDN"] = settings.LOAD_FROM_CDN ret["LOAD_FROM_CDN"] = settings.LOAD_FROM_CDN

View File

@@ -115,8 +115,8 @@ fi
# Bento4 utility installation, for HLS # Bento4 utility installation, for HLS
cd /home/mediacms.io/mediacms cd /home/mediacms.io/mediacms
wget http://zebulon.bok.net/Bento4/binaries/Bento4-SDK-1-6-0-632.x86_64-unknown-linux.zip wget http://zebulon.bok.net/Bento4/binaries/Bento4-SDK-1-6-0-637.x86_64-unknown-linux.zip
unzip Bento4-SDK-1-6-0-632.x86_64-unknown-linux.zip unzip Bento4-SDK-1-6-0-637.x86_64-unknown-linux.zip
mkdir /home/mediacms.io/mediacms/media_files/hls mkdir /home/mediacms.io/mediacms/media_files/hls
# last, set default owner # last, set default owner

View File

@@ -9,7 +9,7 @@ uwsgi==2.0.19.1
django-redis==4.12.1 django-redis==4.12.1
celery==4.4.7 celery==4.4.7
Pillow==8.0.1 Pillow==8.1.1
django-imagekit django-imagekit
markdown markdown
django-filter django-filter

View File

@@ -1,37 +1,37 @@
MediaCMS.url = { MediaCMS.url = {
home: "{{FRONTEND_HOST}}", home: "/",
search: "{{FRONTEND_HOST}}/search", search: "/search",
latestMedia: "{{FRONTEND_HOST}}/latest", latestMedia: "/latest",
featuredMedia: "{{FRONTEND_HOST}}/featured", featuredMedia: "/featured",
recommendedMedia: "{{FRONTEND_HOST}}/recommended", recommendedMedia: "/recommended",
members: "{{FRONTEND_HOST}}/members", members: "/members",
/* Error pages */ /* Error pages */
error404: "{{FRONTEND_HOST}}/error", error404: "/error",
/* Taxonomies pages */ /* Taxonomies pages */
tags: "{{FRONTEND_HOST}}/tags", tags: "/tags",
categories: "{{FRONTEND_HOST}}/categories", categories: "/categories",
topics: "{{FRONTEND_HOST}}/topics", topics: "/topics",
languages: "{{FRONTEND_HOST}}/languages", languages: "/languages",
countries: "{{FRONTEND_HOST}}/countries", countries: "/countries",
/* User pages */ /* User pages */
likedMedia: "{{FRONTEND_HOST}}/liked", likedMedia: "/liked",
history: "{{FRONTEND_HOST}}/history", history: "/history",
/* Add/edit pages */ /* Add/edit pages */
addMedia: "{{FRONTEND_HOST}}/upload", addMedia: "/upload",
/* User account pages */ /* User account pages */
editProfile: "{{user.edit_url}}", editProfile: "{{user.edit_url}}",
{% if request.user.is_authenticated %} {% if request.user.is_authenticated %}
signout: "{{FRONTEND_HOST}}/accounts/logout/", signout: "/accounts/logout/",
editChannel: "{{user.default_channel_edit_url}}", editChannel: "{{user.default_channel_edit_url}}",
changePassword: "{{FRONTEND_HOST}}/accounts/password/change/", changePassword: "/accounts/password/change/",
/* Administration pages */ /* Administration pages */
{% if IS_MEDIACMS_ADMIN %}admin: '/admin',{% endif %} {% if IS_MEDIACMS_ADMIN %}admin: '/admin',{% endif %}
/* Management pages */ /* Management pages */
{% if IS_MEDIACMS_ADMIN or IS_MEDIACMS_MANAGER or IS_MEDIACMS_EDITOR %}manageMedia: "{{FRONTEND_HOST}}/manage/media",{% endif %} {% if IS_MEDIACMS_EDITOR %}manageMedia: "/manage/media",{% endif %}
{% if IS_MEDIACMS_ADMIN or IS_MEDIACMS_MANAGER %}manageUsers: "{{FRONTEND_HOST}}/manage/users",{% endif %} {% if IS_MEDIACMS_MANAGER %}manageUsers: "/manage/users",{% endif %}
{% if IS_MEDIACMS_ADMIN or IS_MEDIACMS_MANAGER or IS_MEDIACMS_EDITOR %}manageComments: "{{FRONTEND_HOST}}/manage/comments",{% endif %} {% if IS_MEDIACMS_EDITOR %}manageComments: "/manage/comments",{% endif %}
{% else %} {% else %}
signin: "{{FRONTEND_HOST}}/accounts/login/", signin: "/accounts/login/",
register: "{{FRONTEND_HOST}}/accounts/signup/", register: "/accounts/signup/",
{% endif %} {% endif %}
}; };

View File

@@ -1,8 +1,8 @@
MediaCMS.site = { MediaCMS.site = {
id: 'mediacms', id: 'mediacms',
title: "{{PORTAL_NAME}}", title: "{{PORTAL_NAME}}",
url: '{{FRONTEND_HOST}}/', url: '{{FRONTEND_HOST}}',
api: '{{FRONTEND_HOST}}/api/v1', api: '{{FRONTEND_HOST}}api/v1',
theme: { theme: {
mode: 'light', // Valid values: 'light', 'dark'. mode: 'light', // Valid values: 'light', 'dark'.
switch: { switch: {
@@ -11,12 +11,12 @@ MediaCMS.site = {
}, },
logo:{ logo:{
lightMode:{ lightMode:{
img: "{{FRONTEND_HOST}}/static/images/logo_dark.png", img: "/static/images/logo_dark.png",
svg: "{{FRONTEND_HOST}}/static/images/logo_dark.svg", svg: "/static/images/logo_dark.svg",
}, },
darkMode:{ darkMode:{
img: "{{FRONTEND_HOST}}/static/images/logo_light.png", img: "/static/images/logo_light.png",
svg: "{{FRONTEND_HOST}}/static/images/logo_light.svg", svg: "/static/images/logo_light.svg",
}, },
}, },
pages: { pages: {
@@ -50,3 +50,4 @@ MediaCMS.site = {
}, },
}, },
}; };