MediaCMS frontend, initial commit

This commit is contained in:
styiannis
2020-12-16 13:48:37 +02:00
parent e29fa326ce
commit f34d500377
183 changed files with 72472 additions and 0 deletions

9
templates/404.html Normal file
View File

@@ -0,0 +1,9 @@
{% extends "base.html" %}
{% block headtitle %} - error{% endblock headtitle %}
{% block innercontent %}
<p>you are lost!</p>
{% endblock %}

View File

@@ -0,0 +1,19 @@
{% extends "base.html" %}
{% block headtitle %} | Account Inactive{% endblock headtitle %}
{% load i18n %}
{% block head_title %}{% trans "Account Inactive" %}{% endblock %}
{% block innercontent %}
<div class="user-action-form-wrap">
<div class="user-action-form-inner">
<h1>{% trans "Account Inactive" %}</h1>
<p>{% trans "This account is inactive." %}</p>
</div>
</div>
{% endblock innercontent %}

View File

@@ -0,0 +1,83 @@
{% extends "base.html" %}
{% block headtitle %} | E-mail Addresses{% endblock headtitle %}
{% load i18n %}
{% block head_title %}{% trans "Account" %}{% endblock %}
{% block innercontent %}
<div class="user-action-form-wrap">
<div class="user-action-form-inner">
<h1>{% trans "E-mail Addresses" %}</h1>
{% if user.emailaddress_set.all %}
<p>{% trans 'The following e-mail addresses are associated with your account:' %}</p>
<form action="{% url 'account_email' %}" class="email_list" method="post">
{% csrf_token %}
<fieldset class="blockLabels">
{% for emailaddress in user.emailaddress_set.all %}
<div class="ctrlHolder">
<label for="email_radio_{{forloop.counter}}" class="{% if emailaddress.primary %}primary_email{%endif%}">
<input id="email_radio_{{forloop.counter}}" type="radio" name="email" {% if emailaddress.primary or user.emailaddress_set.count == 1 %}checked="checked"{%endif %} value="{{emailaddress.email}}"/>
{{ emailaddress.email }}
{% if emailaddress.verified %}
<span class="verified">{% trans "Verified" %}</span>
{% else %}
<span class="unverified">{% trans "Unverified" %}</span>
{% endif %}
{% if emailaddress.primary %}<span class="primary">{% trans "Primary" %}</span>{% endif %}
</label>
</div>
{% endfor %}
<div class="buttonHolder">
<button class="secondaryAction" type="submit" name="action_primary" >{% trans 'Make Primary' %}</button>
<button class="secondaryAction" type="submit" name="action_send" >{% trans 'Re-send Verification' %}</button>
<button class="primaryAction" type="submit" name="action_remove" >{% trans 'Remove' %}</button>
</div>
</fieldset>
</form>
{% else %}
<p><strong>{% trans 'Warning:'%}</strong> {% trans "You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc." %}</p>
{% endif %}
<h2>{% trans "Add E-mail Address" %}</h2>
<form method="post" action="{% url 'account_email' %}" class="add_email">
{% csrf_token %}
{{ form.as_p }}
<button name="action_add" type="submit">{% trans "Add E-mail" %}</button>
</form>
</div>
</div>
{% endblock %}
{% block extra_body %}
<script type="text/javascript">
(function() {
var message = "{% trans 'Do you really want to remove the selected e-mail address?' %}";
var actions = document.getElementsByName('action_remove');
if (actions.length) {
actions[0].addEventListener("click", function(e) {
if (! confirm(message)) {
e.preventDefault();
}
});
}
})();
</script>
{% endblock %}

View File

@@ -0,0 +1,8 @@
{% load account %}{% user_display user as user_display %}{% load i18n %}{% autoescape off %}{% blocktrans with site_name=current_site.name site_domain=current_site.domain %}Hello from {{ site_name }}!
You're receiving this e-mail because user {{ user_display }} has given yours as an e-mail address to connect their account.
To confirm this is correct, go to {{ activate_url }}
{% endblocktrans %}{% endautoescape %}
{% blocktrans with site_name=current_site.name site_domain=current_site.domain %}Thank you from {{ site_name }}!
{{ site_domain }}{% endblocktrans %}

View File

@@ -0,0 +1 @@
{% include "account/email/email_confirmation_message.txt" %}

View File

@@ -0,0 +1 @@
{% include "account/email/email_confirmation_subject.txt" %}

View File

@@ -0,0 +1,4 @@
{% load i18n %}
{% autoescape off %}
{% blocktrans %}Please Confirm Your E-mail Address{% endblocktrans %}
{% endautoescape %}

View File

@@ -0,0 +1,9 @@
{% load i18n %}{% blocktrans with site_name=current_site.name site_domain=current_site.domain %}Hello from {{ site_name }}!
You're receiving this e-mail because you or someone else has requested a password for your user account.
It can be safely ignored if you did not request a password reset. Click the link below to reset your password.{% endblocktrans %}
{{ password_reset_url }}
{% if username %}{% blocktrans %}In case you forgot, your username is {{ username }}.{% endblocktrans %}
{% endif %}

View File

@@ -0,0 +1,4 @@
{% load i18n %}
{% autoescape off %}
{% blocktrans %}Password Reset E-mail{% endblocktrans %}
{% endautoescape %}

View File

@@ -0,0 +1,33 @@
{% extends "base.html" %}
{% load account %}
{% load i18n %}
{% block headtitle %} | Confirm E-mail Address{% endblock headtitle %}
{% block innercontent %}
<div class="user-action-form-wrap">
<div class="user-action-form-inner">
{% if confirmation %}
{% user_display confirmation.email_address.user as user_display %}
<p>{% blocktrans with confirmation.email_address.email as email %}Please confirm that <a href="mailto:{{ email }}">{{ email }}</a> is an e-mail address for user {{ user_display }}.{% endblocktrans %}</p>
<form method="post" action="{% url 'account_confirm_email' confirmation.key %}">
{% csrf_token %}
<button type="submit">{% trans 'Confirm' %}</button>
</form>
{% else %}
{% url 'account_email' as email_url %}
<p>{% blocktrans %}This e-mail confirmation link expired or is invalid. Please <a href="{{ email_url }}">issue a new e-mail confirmation request</a>.{% endblocktrans %}</p>
{% endif %}
</div>
</div>
{% endblock innercontent %}

View File

@@ -0,0 +1,26 @@
{% extends "base.html" %}
{% block headtitle %} | Sign In{% endblock headtitle %}
{% block innercontent %}
<div class="user-action-form-wrap">
<div class="user-action-form-inner">
<h1>Sign In</h1>
<p>If you have not created an account yet, then please <a href="{{ signup_url }}">sign up</a> first.</p>
<form class="login" method="POST" action="{% url 'account_login' %}">
{% csrf_token %}
{{ form.as_p }}
{% if redirect_field_value %}
<input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" />
{% endif %}
<button class="primaryAction" type="submit">Sign In</button>
<a class="button secondaryAction" href="{% url 'account_reset_password' %}">Forgot Password?</a>
</form>
</div>
</div>
{% endblock innercontent %}

View File

@@ -0,0 +1,24 @@
{% extends "base.html" %}
{% block headtitle %} | Sign Out{% endblock headtitle %}
{% block innercontent %}
<div class="user-action-form-wrap">
<div class="user-action-form-inner">
<h1>Sign Out</h1>
<p>Are you sure you want to sign out?</p>
<form method="post" class="logout" action="{% url 'account_logout' %}">
{% csrf_token %}
{% if redirect_field_value %}
<input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}"/>
{% endif %}
<button type="submit">Sign Out</button>
<a class="button secondaryAction" href="/">Cancel</a>
</form>
</div>
</div>
{% endblock innercontent %}

View File

@@ -0,0 +1,2 @@
{% load i18n %}
{% blocktrans %}You cannot remove your primary e-mail address ({{email}}).{% endblocktrans %}

View File

@@ -0,0 +1,2 @@
{% load i18n %}
{% blocktrans %}Confirmation e-mail sent to {{email}}.{% endblocktrans %}

View File

@@ -0,0 +1,2 @@
{% load i18n %}
{% blocktrans %}You have confirmed {{email}}.{% endblocktrans %}

View File

@@ -0,0 +1,2 @@
{% load i18n %}
{% blocktrans %}Removed e-mail address {{email}}.{% endblocktrans %}

View File

@@ -0,0 +1,4 @@
{% load account %}
{% load i18n %}
{% user_display user as name %}
{% blocktrans %}Successfully signed in as {{name}}.{% endblocktrans %}

View File

@@ -0,0 +1,2 @@
{% load i18n %}
{% blocktrans %}You have signed out.{% endblocktrans %}

View File

@@ -0,0 +1,2 @@
{% load i18n %}
{% blocktrans %}Password successfully changed.{% endblocktrans %}

View File

@@ -0,0 +1,2 @@
{% load i18n %}
{% blocktrans %}Password successfully set.{% endblocktrans %}

View File

@@ -0,0 +1,2 @@
{% load i18n %}
{% blocktrans %}Primary e-mail address set.{% endblocktrans %}

View File

@@ -0,0 +1,2 @@
{% load i18n %}
{% blocktrans %}Your primary e-mail address must be verified.{% endblocktrans %}

View File

@@ -0,0 +1,24 @@
{% extends "base.html" %}
{% load crispy_forms_tags %}
{% block headtitle %} | Change Password{% endblock headtitle %}
{% load i18n %}
{% block head_title %}{% trans "Change Password" %}{% endblock %}
{% block innercontent %}
<div class="user-action-form-wrap">
<div class="user-action-form-inner">
<h1>{% trans "Change Password" %}</h1>
<form method="POST" action="{% url 'account_change_password' %}" class="password_change">
{% csrf_token %}
{{ form|crispy }}
<button type="submit" name="action">{% trans "Change Password" %}</button>
</form>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,29 @@
{% extends "base.html" %}
{% load i18n %}
{% load account %}
{% block headtitle %} | Password Reset{% endblock headtitle %}
{% block innercontent %}
<div class="user-action-form-wrap">
<div class="user-action-form-inner">
<h1>{% trans "Password Reset" %}</h1>
{% if user.is_authenticated %}
{% include "account/snippets/already_logged_in.html" %}
{% endif %}
<p>{% trans "Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it." %}</p>
<form method="POST" action="{% url 'account_reset_password' %}" class="password_reset">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="{% trans 'Reset My Password' %}" />
</form>
<p>{% blocktrans %}Please contact us if you have any trouble resetting your password.{% endblocktrans %}</p>
</div>
</div>
{% endblock innercontent %}

View File

@@ -0,0 +1,26 @@
{% extends "base.html" %}
{% block headtitle %} | Password Reset{% endblock headtitle %}
{% load i18n %}
{% load account %}
{% block head_title %}{% trans "Password Reset" %}{% endblock %}
{% block innercontent %}
<div class="user-action-form-wrap">
<div class="user-action-form-inner">
<h1>{% trans "Password Reset" %}</h1>
{% if user.is_authenticated %}
{% include "account/snippets/already_logged_in.html" %}
{% endif %}
<p>{% blocktrans %}We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.{% endblocktrans %}</p>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,33 @@
{% extends "base.html" %}
{% block headtitle %} | Change Password{% endblock headtitle %}
{% load i18n %}
{% block head_title %}{% trans "Change Password" %}{% endblock %}
{% block innercontent %}
<div class="user-action-form-wrap">
<div class="user-action-form-inner">
<h1>{% if token_fail %}{% trans "Bad Token" %}{% else %}{% trans "Change Password" %}{% endif %}</h1>
{% if token_fail %}
{% url 'account_reset_password' as passwd_reset_url %}
<p>{% blocktrans %}The password reset link was invalid, possibly because it has already been used. Please request a <a href="{{ passwd_reset_url }}">new password reset</a>.{% endblocktrans %}</p>
{% else %}
{% if form %}
<form method="POST" action="{{ action_url }}">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" name="action" value="{% trans 'change password' %}"/>
</form>
{% else %}
<p>{% trans 'Your password is now changed.' %}</p>
{% endif %}
{% endif %}
</div>
</div>
{% endblock innercontent %}

View File

@@ -0,0 +1,19 @@
{% extends "base.html" %}
{% block headtitle %} | Change Password{% endblock headtitle %}
{% load i18n %}
{% block head_title %}{% trans "Change Password" %}{% endblock %}
{% block innercontent %}
<div class="user-action-form-wrap">
<div class="user-action-form-inner">
<h1>{% trans "Change Password" %}</h1>
<p>{% trans 'Your password is now changed.' %}</p>
</div>
</div>
{% endblock innercontent %}

View File

@@ -0,0 +1,25 @@
{% extends "base.html" %}
{% block headtitle %} | Set Password{% endblock headtitle %}
{% load i18n %}
{% block head_title %}{% trans "Set Password" %}{% endblock %}
{% block innercontent %}
<div class="user-action-form-wrap">
<div class="user-action-form-inner">
<h1>{% trans "Set Password" %}</h1>
<form method="POST" action="{% url 'account_set_password' %}" class="password_set">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" name="action" value="{% trans 'Set Password' %}"/>
</form>
</div>
</div>
{% endblock innercontent %}

View File

@@ -0,0 +1,25 @@
{% extends "base.html" %}
{% block headtitle %} | Sign Up{% endblock headtitle %}
{% block innercontent %}
<div class="user-action-form-wrap">
<div class="user-action-form-inner">
<h1>Sign Up</h1>
<p>Already have an account? Then please <a href="{{ login_url }}">sign in</a>.</p>
<form class="signup" id="signup_form" method="post" action="{% url 'account_signup' %}">
{% csrf_token %}
{{ form.as_p }}
{% if redirect_field_value %}
<input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" />
{% endif %}
<button type="submit">Sign Up &raquo;</button>
</form>
</div>
</div>
{% endblock innercontent %}

View File

@@ -0,0 +1,19 @@
{% extends "base.html" %}
{% block headtitle %} | Sign Up Closed{% endblock headtitle %}
{% load i18n %}
{% block head_title %}{% trans "Sign Up Closed" %}{% endblock %}
{% block innercontent %}
<div class="user-action-form-wrap">
<div class="user-action-form-inner">
<h1>{% trans "Sign Up Closed" %}</h1>
<p>{% trans "We are sorry, but the sign up is currently closed." %}</p>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,5 @@
{% load i18n %}
{% load account %}
{% user_display user as user_display %}
<p><strong>{% trans "Note" %}:</strong> {% blocktrans %}you are already logged in as {{ user_display }}.{% endblocktrans %}</p>

View File

@@ -0,0 +1,17 @@
{% extends "base.html" %}
{% load i18n %}
{% block headtitle %} | Verify Your E-mail Address{% endblock headtitle %}
{% block innercontent %}
<div class="user-action-form-wrap">
<div class="user-action-form-inner">
<h1>{% trans "Verify Your E-mail Address" %}</h1>
<p>{% blocktrans %}We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.{% endblocktrans %}</p>
</div>
</div>
{% endblock innercontent %}

View File

@@ -0,0 +1,25 @@
{% extends "base.html" %}
{% load i18n %}
{% block headtitle %} | Verify Your E-mail Address{% endblock headtitle %}
{% block innercontent %}
<div class="user-action-form-wrap">
<div class="user-action-form-inner">
{% url 'account_email' as email_url %}
<p>{% blocktrans %}This part of the site requires us to verify that
you are who you claim to be. For this purpose, we require that you
verify ownership of your e-mail address. {% endblocktrans %}</p>
<p>{% blocktrans %}We have sent an e-mail to you for
verification. Please click on the link inside this e-mail. Please
contact us if you do not receive it within a few minutes.{% endblocktrans %}</p>
<p>{% blocktrans %}<strong>Note:</strong> you can still <a href="{{ email_url }}">change your e-mail address</a>.{% endblocktrans %}</p>
</div>
</div>
{% endblock innercontent %}

View File

@@ -0,0 +1,5 @@
{% extends "base.html" %}
{% block beforecontent %}
{% include "components/header.html" %}
{% endblock %}

22
templates/base.html Normal file
View File

@@ -0,0 +1,22 @@
{% extends "root.html" %}
{% load static %}
{% block beforecontent %}
{% include "components/header.html" %}
{% include "components/sidebar.html" %}
{% endblock %}
{% block content %}
<div class="page-main">
<div class="page-main-inner">
{% block innercontent %}{% endblock innercontent %}
</div>
<div class="page-sidebar-content-overlay"></div>
</div>
{% endblock %}
{% block aftercontent %}
{% include "components/footer.html" %}
{% endblock %}
{% block bottomimports %}<script src="{% static "js/base.js" %}"></script>{% endblock bottomimports %}

47
templates/cms/about.html Normal file
View File

@@ -0,0 +1,47 @@
{% extends "base.html" %}
{% block headtitle %}About - {{PORTAL_NAME}}{% endblock headtitle %}
{% block headermeta %}
<meta property="og:title" content="About - {{PORTAL_NAME}}">
<meta property="og:type" content="website">
<meta property="og:description" content="">
<meta name="twitter:card" content="summary">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "{{PORTAL_NAME}}",
"item": {
"@type": "WebPage",
"@id": "{{FRONTEND_HOST}}"
}
},
{
"@type": "ListItem",
"position": 2,
"name": "About",
"item": {
"@type": "AboutPage",
"@id": "{{FRONTEND_HOST}}/about"
}
}]
}
</script>
{% endblock headermeta %}
{% block innercontent %}
<div class="custom-page-wrapper">
<h2>About</h2>
<hr/>
<p><a href="https://mediacms.io">MediaCMS</a> is a modern, fully featured open source video and media CMS. It is developed to meet the needs of modern web platforms for viewing and sharing media.</p>
</div>
{% endblock %}

View File

@@ -0,0 +1,238 @@
{% extends "base.html" %}
{% load static %}
{% block headtitle %}Add new media - {{PORTAL_NAME}}{% endblock headtitle %}
{% block externallinks %}
{% if LOAD_FROM_CDN %}
<link href="https://cdnjs.cloudflare.com/ajax/libs/file-uploader/5.13.0/fine-uploader.min.js" rel="preload" as="script">
<script src="https://cdnjs.cloudflare.com/ajax/libs/file-uploader/5.13.0/fine-uploader.min.js"></script>
{% else %}
<link href="{% static "lib/file-uploader/5.13.0/fine-uploader.min.js" %}" rel="preload" as="script">
<script src="{% static "lib/file-uploader/5.13.0/fine-uploader.min.js" %}"></script>
{% endif %}
{% endblock externallinks %}
{% block topimports %}
<link href="{% static "css/add-media.css" %}" rel="preload" as="style">
<link href="{% static "css/add-media.css" %}" rel="stylesheet">
{%endblock topimports %}
{% block innercontent %}
{% if request.user.is_authenticated %}
{% if can_add %}
<div class="media-uploader-wrap">
<div class="media-uploader-top-wrap">
<div class="media-uploader-top-left-wrap">
<h1>Upload media files</h1>
</div>
<div class="media-uploader-top-right-wrap"> </div>
</div>
<script type="text/template" id="qq-template">
<div class="media-uploader-bottom-wrap qq-uploader-selector">
<div class="media-uploader-bottom-left-wrap">
<div class="media-drag-drop-wrap">
<div class="media-drag-drop-inner" qq-drop-area-text="Drop files here">
<div class="media-drag-drop-content">
<div class="media-drag-drop-content-inner">
<span><i class="material-icons">cloud_upload</i></span>
<span>Drag and drop files</span>
<span>or</span>
<span class="browse-files-btn-wrap">
<span class="qq-upload-button-selector">Browse your files</span>
</span>
<div class="qq-upload-drop-area-selector media-dropzone" qq-hide-dropzone>
<span class="qq-upload-drop-area-text-selector"></span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="media-uploader-bottom-right-wrap">
<ul class="media-upload-items-list qq-upload-list-selector">
<li>
<div class="media-upload-item-main">
<div class="media-upload-item-thumb">
<img class="qq-thumbnail-selector" qq-max-size="120" qq-server-scale alt="" />
<span class="media-upload-item-spinner qq-upload-spinner-selector"><i class="material-icons">autorenew</i></span>
<button type="button" class="qq-upload-retry-selector retry-media-upload-item" aria-label="Retry"><i class="material-icons">refresh</i> Retry</button>
</div>
<div class="media-upload-item-details">
<div class="media-upload-item-name">
<span class="media-upload-item-filename qq-upload-file-selector"></span>
<input class="media-upload-item-filename-input qq-edit-filename-selector" tab-index="0" type="text" />
</div>
<div class="media-upload-item-details-bottom">
<div class="media-upload-item-progress-bar-container qq-progress-bar-container-selector">
<div role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" class="media-upload-item-progress-bar qq-progress-bar-selector"></div>
</div>
<span class="media-upload-item-upload-size qq-upload-size-selector"></span>
<span role="status" class="media-upload-item-status-text qq-upload-status-text-selector"></span>
</div>
<div class="media-upload-item-top-actions">
<span class="filename-edit qq-edit-filename-icon-selector" aria-label="Edit filename">Edit filename <i class="material-icons">create</i></span>
<button type="button" class="delete-media-upload-item qq-upload-delete-selector" aria-label="Delete">Delete <i class="material-icons">delete</i></button>
<button type="button" class="cancel-media-upload-item qq-upload-cancel-selector" aria-label="Cancel">Cancel <i class="material-icons">cancel</i></button>
<a href="#" class="view-uploaded-media-link qq-hide" target="_blank">View media <i class="material-icons">open_in_new</i></a>
</div>
<div class="media-upload-item-bottom-actions">
<button type="button" class="continue-media-upload-item qq-upload-continue-selector" aria-label="Continue"><i class="material-icons">play_circle_outline</i> Continue</button>
<button type="button" class="pause-media-upload-item qq-upload-pause-selector" aria-label="Pause"><i class="material-icons">pause_circle_outline</i> Pause</button>
</div>
</div>
</div>
</li>
</ul>
<dialog class="qq-alert-dialog-selector">
<div class="qq-dialog-message-selector"></div>
<div class="qq-dialog-buttons">
<button type="button" class="qq-cancel-button-selector">CLOSE</button>
</div>
</dialog>
<dialog class="qq-confirm-dialog-selector">
<div class="qq-dialog-message-selector"></div>
<div class="qq-dialog-buttons">
<button type="button" class="qq-cancel-button-selector">NO</button>
<button type="button" class="qq-ok-button-selector">YES</button>
</div>
</dialog>
<dialog class="qq-prompt-dialog-selector">
<div class="qq-dialog-message-selector"></div>
<input type="text">
<div class="qq-dialog-buttons">
<button type="button" class="qq-cancel-button-selector">CANCEL</button>
<button type="button" class="qq-ok-button-selector">OK</button>
</div>
</dialog>
</div>
</div>
</script>
<div class="media-uploader"></div>
</div>
{% else %}
{{can_upload_exp}}
<br>
<a href='/contact'>Contact</a> the admin owners for more information.
{% endif %}
{% else %}
<div class="user-action-form-wrap">
<div class="user-action-form-inner">
<h1>Sign In</h1>
Please login or register before you upload a media!
{% url 'upload_media' as redirect_url %}
<p>If you have not created an account yet, then please <a href="{% url 'account_signup' %}?next={{ redirect_url }}">sign up</a> first.</p>
<form class="login" method="POST" action="{% url 'account_login' %}">
{% csrf_token %}
{{ form.as_p }}
<input type="hidden" name="next" value="{{ redirect_url }}" />
<a class="button secondaryAction" href="{% url 'account_reset_password' %}">Forgot Password?</a>
<button class="primaryAction" type="submit">Sign In</button>
</form>
</div>
</div>
{% endif %}
{% endblock innercontent %}
{% block bottomimports %}
<script src="{% static "js/add-media.js" %}"></script>
<script>
document.addEventListener("DOMContentLoaded", function(event) {
function getCSRFToken() {
var i, cookies, cookie, cookieVal = null;
if ( document.cookie && '' !== document.cookie ) {
cookies = document.cookie.split(';');
i = 0;
while( i < cookies.length ){
cookie = cookies[i].trim();
if ( 'csrftoken=' === cookie.substring(0, 10) ) {
cookieVal = decodeURIComponent( cookie.substring(10) );
break;
}
i += 1;
}
}
return cookieVal;
}
var default_concurrent_chunked_uploader = new qq.FineUploader({
debug: false,
element: document.querySelector('.media-uploader'),
request: {
endpoint: '{% url 'uploader:upload' %}',
customHeaders: {
'X-CSRFToken': getCSRFToken('csrftoken'),
},
},
retry: {
enableAuto: true,
maxAutoAttempts: 2,
},
validation: {
itemLimit: {{UPLOAD_MAX_FILES_NUMBER}},
sizeLimit: {{UPLOAD_MAX_SIZE}},
},
chunking: {
enabled: true,
concurrent: {
enabled: true,
},
success: {
endpoint: '{% url 'uploader:upload' %}?done',
},
},
callbacks: {
onError: function(id, name, errorReason, xhrOrXdr) {
console.warn(qq.format("Error on file number {} - {}. Reason: {}", id, name, errorReason));
},
onComplete: function( id, name, response, request ) {
if( response.success ){
if( response.media_url ) {
if( 1 === this._currentItemLimit ) {
setTimeout(function(){ window.location.href = response.media_url; }, 500);
return;
}
}
var listEl = document.querySelector( '.qq-file-id-' + id );
var viewFileEl = listEl.querySelector( '.view-uploaded-media-link' );
if( listEl ){
var fileUrl = response.media_url;
listEl.style.cursor = 'pointer';
listEl.addEventListener( 'click', function(ev){
ev.preventDefault();
ev.stopPropagation();
var win = window.open( fileUrl, '_blank' );
win.focus();
});
}
if( viewFileEl ){
viewFileEl.setAttribute( 'href', response.media_url );
viewFileEl.setAttribute( 'class', 'view-uploaded-media-link' );
}
}
},
},
});
});
</script>
{% endblock bottomimports %}

View File

@@ -0,0 +1,17 @@
{% extends "base.html" %}
{% load crispy_forms_tags %}
{% block headtitle %}Add subtitle - {{PORTAL_NAME}}{% endblock headtitle %}
{% block innercontent %}
<div class="user-action-form-wrap">
<div class="user-action-form-inner">
<h1>Add subtitle</h1>
<form enctype="multipart/form-data" action="" method="post" class="post-form">
{% csrf_token %}
{{ form|crispy }}
<button class="primaryAction" type="submit">Add</button>
</form>
</div>
</div>
{% endblock innercontent %}

View File

@@ -0,0 +1,45 @@
{% extends "base.html" %}
{% load static %}
{% block headtitle %}Categories - {{PORTAL_NAME}}{% endblock headtitle %}
{% block headermeta %}
<meta property="og:title" content="Categories - {{PORTAL_NAME}}">
<meta property="og:type" content="website">
<meta property="og:description" content="">
<meta name="twitter:card" content="summary">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "{{PORTAL_NAME}}",
"item": {
"@type": "WebPage",
"@id": "{{FRONTEND_HOST}}"
}
},
{
"@type": "ListItem",
"position": 2,
"name": "Categories",
"item": {
"@type": "WebPage",
"@id": "{{FRONTEND_HOST}}/categories"
}
}]
}
</script>
{% endblock headermeta %}
{% block content %}<div id="page-categories"></div>{% endblock %}
{% block bottomimports %}
<script src="{% static "js/categories.js" %}"></script>
{% endblock bottomimports %}

View File

@@ -0,0 +1,16 @@
{% extends "base.html" %}
{% load crispy_forms_tags %}
{% block headtitle %}Edit channel - {{PORTAL_NAME}}{% endblock headtitle %}
{% block innercontent %}
<div class="user-action-form-wrap">
<div class="user-action-form-inner">
<h1>Edit Channel</h1>
<form enctype="multipart/form-data" action="" method="post" class="post-form"> {% csrf_token %}
{{ form|crispy }}
<button class="primaryAction" type="submit">Update Channel</button>
</form>
</div>
</div>
{% endblock innercontent %}

View File

@@ -0,0 +1,56 @@
{% extends "base.html" %}
{% block headtitle %}Contact us - {{PORTAL_NAME}}{% endblock headtitle %}
{% block headermeta %}
<meta property="og:title" content="Contact us - {{PORTAL_NAME}}">
<meta property="og:type" content="website">
<meta property="og:description" content="">
<meta name="twitter:card" content="summary">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "{{PORTAL_NAME}}",
"item": {
"@type": "WebPage",
"@id": "{{FRONTEND_HOST}}"
}
},
{
"@type": "ListItem",
"position": 2,
"name": "Contact us",
"item": {
"@type": "ContactPage",
"@id": "{{FRONTEND_HOST}}/contact"
}
}]
}
</script>
{%endblock headermeta %}
{% block innercontent %}
<div class="user-action-form-wrap">
<div class="user-action-form-inner">
{% if success_msg %}
<h1>{{success_msg}}<h1>
{% else %}
<h1>Contact us</h1>
<form enctype="multipart/form-data" action="" method="post" class="post-form">
{% csrf_token %}
{{ form.as_p }}
<button class="primaryAction" type="submit">Submit</button>
</form>
{% endif %}
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,24 @@
{% extends "base.html" %}
{% load crispy_forms_tags %}
{% load static %}
{% block headtitle %}Edit media - {{PORTAL_NAME}}{% endblock headtitle %}
{% block headermeta %}{% endblock headermeta %}
{% block innercontent %}
<script type="text/javascript" src="{% static "ckeditor/ckeditor-init.js" %}"></script>
<script type="text/javascript" src="{% static "ckeditor/ckeditor/ckeditor.js" %}"></script>
<div class="user-action-form-wrap">
<div class="user-action-form-inner">
<h1>Edit Media</h1>
<form enctype="multipart/form-data" action="" method="post" class="post-form">
{% csrf_token %}
{{ form|crispy }}
<button class="primaryAction" type="submit">Update Media</button>
</form>
</div>
</div>
{% endblock innercontent %}

13
templates/cms/embed.html Normal file
View File

@@ -0,0 +1,13 @@
{% extends "root.html" %}
{% load static %}
{% block topimports %}
<link href="{% static "css/embed.css" %}" rel="preload" as="style">
<link href="{% static "css/embed.css" %}" rel="stylesheet">
{%endblock topimports %}
{% block content %}<div id="page-embed"></div>{% endblock content %}
{% block bottomimports %}
<script src="{% static "js/embed.js" %}"></script>
{% endblock bottomimports %}

View File

@@ -0,0 +1,47 @@
{% extends "base.html" %}
{% load static %}
{% block headtitle %}Featured - {{PORTAL_NAME}}{% endblock headtitle %}
{% block headermeta %}
<meta property="og:title" content="Featured - {{PORTAL_NAME}}">
<meta property="og:type" content="website">
<meta property="og:description" content="">
<meta name="twitter:card" content="summary">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "{{PORTAL_NAME}}",
"item": {
"@type": "WebPage",
"@id": "{{FRONTEND_HOST}}"
}
},
{
"@type": "ListItem",
"position": 2,
"name": "Featured",
"item": {
"@type": "WebPage",
"@id": "{{FRONTEND_HOST}}/featured"
}
}]
}
</script>
{% endblock headermeta %}
{% block content %}
{% if user %}<div id="page-featured"></div>{% endif %}
{% endblock %}
{% block bottomimports %}
<script src="{% static "js/featured.js" %}"></script>
{% endblock bottomimports %}

View File

@@ -0,0 +1,17 @@
{% extends "base.html" %}
{% load static %}
{% block headtitle %}History - {{PORTAL_NAME}}{% endblock headtitle %}
{% block topimports %}
<link href="{% static "css/history.css" %}" rel="preload" as="style">
<link href="{% static "css/history.css" %}" rel="stylesheet">
{%endblock topimports %}
{% block content %}
{% if user %}<div id="page-history"></div>{% endif %}
{% endblock %}
{% block bottomimports %}
<script src="{% static "js/history.js" %}"></script>
{% endblock bottomimports %}

50
templates/cms/index.html Normal file
View File

@@ -0,0 +1,50 @@
{% extends "base.html" %}
{% load static %}
{% block headermeta %}
<link rel="canonical" href="{{FRONTEND_HOST}}{{media_object.get_absolute_url}}">
<meta property="og:title" content="{{PORTAL_NAME}}">
<meta property="og:url" content="{{FRONTEND_HOST}}">
<meta property="og:type" content="website">
<meta property="og:description" content="">
<meta name="twitter:card" content="summary">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"url": "{{FRONTEND_HOST}}",
"potentialAction": {
"@type": "SearchAction",
"target": "{{FRONTEND_HOST}}/search?q={search_query_string}",
"query-input": "required name=search_query_string"
}
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "{{PORTAL_NAME}}",
"item": {
"@type": "WebPage",
"@id": "{{FRONTEND_HOST}}"
}
}]
}
</script>
{% endblock headermeta %}
{% block content %}<div id="page-home"></div>{% endblock %}
{% block bottomimports %}
<script src="{% static "js/index.js" %}"></script>
{% endblock bottomimports %}

View File

@@ -0,0 +1,47 @@
{% extends "base.html" %}
{% load static %}
{% block headtitle %}Recent uploads - {{PORTAL_NAME}}{% endblock headtitle %}
{% block headermeta %}
<meta property="og:title" content="Recent uploads - {{PORTAL_NAME}}">
<meta property="og:type" content="website">
<meta property="og:description" content="">
<meta name="twitter:card" content="summary">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "{{PORTAL_NAME}}",
"item": {
"@type": "WebPage",
"@id": "{{FRONTEND_HOST}}"
}
},
{
"@type": "ListItem",
"position": 2,
"name": "Recent uploads",
"item": {
"@type": "WebPage",
"@id": "{{FRONTEND_HOST}}/latest"
}
}]
}
</script>
{% endblock headermeta %}
{% block content %}
{% if user %}<div id="page-latest"></div>{% endif %}
{% endblock %}
{% block bottomimports %}
<script src="{% static "js/latest.js" %}"></script>
{% endblock bottomimports %}

View File

@@ -0,0 +1,17 @@
{% extends "base.html" %}
{% load static %}
{% block headtitle %}Liked media - {{PORTAL_NAME}}{% endblock headtitle %}
{% block topimports %}
<link href="{% static "css/liked.css" %}" rel="preload" as="style">
<link href="{% static "css/liked.css" %}" rel="stylesheet">
{%endblock topimports %}
{% block content %}
{% if user %}<div id="page-liked"></div>{% endif %}
{% endblock %}
{% block bottomimports %}
<script src="{% static "js/liked.js" %}"></script>
{% endblock bottomimports %}

View File

@@ -0,0 +1,18 @@
{% extends "base.html" %}
{% load static %}
{% block headtitle %}Manage comments - {{PORTAL_NAME}}{% endblock headtitle %}
{% block headermeta %}
<meta property="og:title" content="Manage comments - {{PORTAL_NAME}}">
<meta property="og:type" content="website">
<meta property="og:description" content="">
{% endblock headermeta %}
{% block content %}<div id="page-manage-comments"></div>{% endblock %}
{% block bottomimports %}
<script src="{% static "js/manage-comments.js" %}"></script>
{% endblock bottomimports %}

View File

@@ -0,0 +1,19 @@
{% extends "base.html" %}
{% load static %}
{% block headtitle %}Manage media - {{PORTAL_NAME}}{% endblock headtitle %}
{% block headermeta %}
<meta property="og:title" content="Manage media - {{PORTAL_NAME}}">
<meta property="og:type" content="website">
<meta property="og:description" content="">
{% endblock headermeta %}
{% block content %}<div id="page-manage-media"></div>{% endblock %}
{% block bottomimports %}
<script src="{% static "js/manage-media.js" %}"></script>
{% endblock bottomimports %}

View File

@@ -0,0 +1,18 @@
{% extends "base.html" %}
{% load static %}
{% block headtitle %}Manage users - {{PORTAL_NAME}}{% endblock headtitle %}
{% block headermeta %}
<meta property="og:title" content="Manage users - {{PORTAL_NAME}}">
<meta property="og:type" content="website">
<meta property="og:description" content="">
{% endblock headermeta %}
{% block content %}<div id="page-manage-users"></div>{% endblock %}
{% block bottomimports %}
<script src="{% static "js/manage-users.js" %}"></script>
{% endblock bottomimports %}

128
templates/cms/media.html Normal file
View File

@@ -0,0 +1,128 @@
{% extends "base.html" %}
{% load static %}
{% block headtitle %}{{media_object.title}} - {{PORTAL_NAME}}{% endblock headtitle %}
{% block headermeta %}
<link rel="canonical" href="{{FRONTEND_HOST}}{{media_object.get_absolute_url}}">
<meta name="description" content="{% if media_object.summary %}{{media_object.summary}}{% else %}{{media_object.description}}{% endif %}">
<meta property="og:title" content="{{media_object.title}} - {{PORTAL_NAME}}">
<meta property="og:url" content="{{FRONTEND_HOST}}{{media_object.get_absolute_url}}">
<meta property="og:description" content="{% if media_object.summary %}{{media_object.summary}}{% else %}{{media_object.description}}{% endif %}">
<meta property="og:updated_time" content="{{media_object.edit_date}}">
{% if media_object.media_type == "video" %}
<meta property="og:type" content="video.other">
{% else %}
<meta property="og:type" content="website">
{% endif %}
{% if media_object.media_type == "video" %}
<meta property="og:image" content="{{FRONTEND_HOST}}{{media_object.poster_url}}">
<meta name="twitter:card" content="summary_large_image">
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "VideoObject",
"name": "{{media_object.title}} - {{PORTAL_NAME}}",
"url": "{{FRONTEND_HOST}}{{media_object.get_absolute_url}}",
"description": "{% if media_object.summary %}{{media_object.summary}}{% else %}{{media_object.description}}{% endif %}",
"thumbnailUrl": [
"{{FRONTEND_HOST}}{{media_object.poster_url}}"
],
"uploadDate": "{{media_object.add_date}}",
"dateModified": "{{media_object.edit_date}}",
"embedUrl": "{{FRONTEND_HOST}}/embed?m={{media}}",
"duration": "T{{media_object.duration}}S",
"potentialAction": {
"@type": "ViewAction",
"target": "{{FRONTEND_HOST}}{{media_object.get_absolute_url}}"
}
}
</script>
{% elif media_object.media_type == "audio" %}
<meta property="og:image" content="{{FRONTEND_HOST}}{{media_object.poster_url}}">
<meta name="twitter:card" content="summary_large_image">
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "AudioObject",
"name": "{{media_object.title}} - {{PORTAL_NAME}}",
"url": "{{FRONTEND_HOST}}{{media_object.get_absolute_url}}",
"description": "{% if media_object.summary %}{{media_object.summary}}{% else %}{{media_object.description}}{% endif %}",
"uploadDate": "{{media_object.add_date}}",
"dateModified": "{{media_object.edit_date}}",
"duration": "T{{media_object.duration}}S",
"potentialAction": {
"@type": "ViewAction",
"target": "{{FRONTEND_HOST}}{{media_object.get_absolute_url}}"
}
}
</script>
{% elif media_object.media_type == "image" %}
<meta property="og:image" content="{{FRONTEND_HOST}}{{media_object.original_media_url}}">
<meta name="twitter:card" content="summary_large_image">
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "ImageObject",
"name": "{{media_object.title}} - {{PORTAL_NAME}}",
"url": "{{FRONTEND_HOST}}{{media_object.get_absolute_url}}",
"description": "{% if media_object.summary %}{{media_object.summary}}{% else %}{{media_object.description}}{% endif %}",
"uploadDate": "{{media_object.add_date}}",
"dateModified": "{{media_object.edit_date}}",
"potentialAction": {
"@type": "ViewAction",
"target": "{{FRONTEND_HOST}}{{media_object.get_absolute_url}}"
}
}
</script>
{% else %}
<meta name="twitter:card" content="summary">
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "MediaObject",
"name": "{{media_object.title}} - {{PORTAL_NAME}}",
"url": "{{FRONTEND_HOST}}{{media_object.get_absolute_url}}",
"description": "{% if media_object.summary %}{{media_object.summary}}{% else %}{{media_object.description}}{% endif %}",
"uploadDate": "{{media_object.add_date}}",
"dateModified": "{{media_object.edit_date}}",
"potentialAction": {
"@type": "ViewAction",
"target": "{{FRONTEND_HOST}}{{media_object.get_absolute_url}}"
}
}
</script>
{% endif %}
{% endblock headermeta %}
{% block topimports %}
<link href="{% static "css/media.css" %}" rel="preload" as="style">
<link href="{% static "css/media.css" %}" rel="stylesheet">
{%endblock topimports %}
{% block content %}<div id="page-media"></div>{% endblock content %}
{% block bottomimports %}
<script src="{% static "js/media.js" %}"></script>
{% endblock bottomimports %}

View File

@@ -0,0 +1,45 @@
{% extends "base.html" %}
{% load static %}
{% block headtitle %}Members - {{PORTAL_NAME}}{% endblock headtitle %}
{% block headermeta %}
<meta property="og:title" content="Members - {{PORTAL_NAME}}">
<meta property="og:type" content="website">
<meta property="og:description" content="">
<meta name="twitter:card" content="summary">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "{{PORTAL_NAME}}",
"item": {
"@type": "WebPage",
"@id": "{{FRONTEND_HOST}}"
}
},
{
"@type": "ListItem",
"position": 2,
"name": "Members",
"item": {
"@type": "WebPage",
"@id": "{{FRONTEND_HOST}}/members"
}
}]
}
</script>
{% endblock headermeta %}
{% block content %}<div id="page-members"></div>{% endblock %}
{% block bottomimports %}
<script src="{% static "js/members.js" %}"></script>
{% endblock bottomimports %}

View File

@@ -0,0 +1,47 @@
{% extends "base.html" %}
{% load static %}
{% block headtitle %}Recommended - {{PORTAL_NAME}}{% endblock headtitle %}
{% block headermeta %}
<meta property="og:title" content="Recommended - {{PORTAL_NAME}}">
<meta property="og:type" content="website">
<meta property="og:description" content="">
<meta name="twitter:card" content="summary">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "{{PORTAL_NAME}}",
"item": {
"@type": "WebPage",
"@id": "{{FRONTEND_HOST}}"
}
},
{
"@type": "ListItem",
"position": 2,
"name": "Recommended",
"item": {
"@type": "WebPage",
"@id": "{{FRONTEND_HOST}}/recommended"
}
}]
}
</script>
{% endblock headermeta %}
{% block content %}
{% if user %}<div id="page-recommended"></div>{% endif %}
{% endblock %}
{% block bottomimports %}
<script src="{% static "js/recommended.js" %}"></script>
{% endblock bottomimports %}

10
templates/cms/search.html Normal file
View File

@@ -0,0 +1,10 @@
{% extends "base.html" %}
{% load static %}
{% block content %}
{% if user %}<div id="page-search"></div>{% endif %}
{% endblock %}
{% block bottomimports %}
<script src="{% static "js/search.js" %}"></script>
{% endblock bottomimports %}

45
templates/cms/tags.html Normal file
View File

@@ -0,0 +1,45 @@
{% extends "base.html" %}
{% load static %}
{% block headtitle %}Tags - {{PORTAL_NAME}}{% endblock headtitle %}
{% block headermeta %}
<meta property="og:title" content="Tags - {{PORTAL_NAME}}">
<meta property="og:type" content="website">
<meta property="og:description" content="">
<meta name="twitter:card" content="summary">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "{{PORTAL_NAME}}",
"item": {
"@type": "WebPage",
"@id": "{{FRONTEND_HOST}}"
}
},
{
"@type": "ListItem",
"position": 2,
"name": "Tags",
"item": {
"@type": "WebPage",
"@id": "{{FRONTEND_HOST}}/tags"
}
}]
}
</script>
{% endblock headermeta %}
{% block content %}<div id="page-tags"></div>{% endblock %}
{% block bottomimports %}
<script src="{% static "js/tags.js" %}"></script>
{% endblock bottomimports %}

46
templates/cms/tos.html Normal file
View File

@@ -0,0 +1,46 @@
{% extends "base.html" %}
{% block headtitle %}Terms - {{PORTAL_NAME}}{% endblock headtitle %}
{% block headermeta %}
<meta property="og:title" content="Terms - {{PORTAL_NAME}}">
<meta property="og:type" content="website">
<meta property="og:description" content="">
<meta name="twitter:card" content="summary">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "{{PORTAL_NAME}}",
"item": {
"@type": "WebPage",
"@id": "{{FRONTEND_HOST}}"
}
},
{
"@type": "ListItem",
"position": 2,
"name": "Terms",
"item": {
"@type": "WebPage",
"@id": "{{FRONTEND_HOST}}/terms"
}
}]
}
</script>
{% endblock headermeta %}
{% block innercontent %}
<div class="custom-page-wrapper">
<h2>Terms</h2>
<hr/>
<p>Terms of service</p>
</div>
{% endblock %}

33
templates/cms/user.html Normal file
View File

@@ -0,0 +1,33 @@
{% extends "base.html" %}
{% load static %}
{% block headtitle %}{% if user.name %}{{user.name}} - {% endif %}{{PORTAL_NAME}}{% endblock headtitle %}
{% block headermeta %}
<meta property="og:title" content="{% if user.name %}{{user.name}} - {% endif %}{{PORTAL_NAME}}">
<meta property="og:type" content="website">
<meta property="og:description" content="">
<meta name="twitter:card" content="summary">
{% endblock headermeta %}
{% block topimports %}
<link href="{% static "css/profile-home.css" %}" rel="preload" as="style">
<link href="{% static "css/profile-home.css" %}" rel="stylesheet">
{%endblock topimports %}
{% block innercontent %}
{% if user %}{% else %}
No such user
{% endif %}
{% endblock %}
{% block content %}
{% if user %}<div id="page-profile-home"></div>{% endif %}
{% endblock %}
{% block bottomimports %}
<script src="{% static "js/profile-home.js" %}"></script>
{% endblock bottomimports %}

View File

@@ -0,0 +1,33 @@
{% extends "base.html" %}
{% load static %}
{% block headtitle %}{% if user.name %}{{user.name}} - {% endif %}About - {{PORTAL_NAME}}{% endblock headtitle %}
{% block headermeta %}
<meta property="og:title" content="{% if user.name %}{{user.name}} - {% endif %}About - {{PORTAL_NAME}}">
<meta property="og:type" content="website">
<meta property="og:description" content="">
<meta name="twitter:card" content="summary">
{% endblock headermeta %}
{% block topimports %}
<link href="{% static "css/profile-about.css" %}" rel="preload" as="style">
<link href="{% static "css/profile-about.css" %}" rel="stylesheet">
{%endblock topimports %}
{% block innercontent %}
{% if user %}{% else %}
No such user
{% endif %}
{% endblock %}
{% block content %}
{% if user %}<div id="page-profile-about"></div>{% endif %}
{% endblock %}
{% block bottomimports %}
<script src="{% static "js/profile-about.js" %}"></script>
{% endblock bottomimports %}

View File

@@ -0,0 +1,19 @@
{% extends "base.html" %}
{% load static %}
{% block headtitle %}Edit profile - {% endblock headtitle %}
{% block innercontent %}
<script type="text/javascript" src="{% static "ckeditor/ckeditor-init.js" %}"></script>
<script type="text/javascript" src="{% static "ckeditor/ckeditor/ckeditor.js" %}"></script>
<div class="user-action-form-wrap">
<div class="user-action-form-inner">
<h1>Edit Profile</h1>
<form enctype="multipart/form-data" action="" method="post" class="post-form">
{% csrf_token %}
{{ form.as_p }}
<button class="primaryAction" type="submit">Update Profile</button>
</form>
</div>
</div>
{% endblock innercontent %}

View File

@@ -0,0 +1,3 @@
{% load static %}
<script src="{% static "js/_commons.js" %}"></script>

View File

@@ -0,0 +1,30 @@
{% load static %}
<link rel="apple-touch-icon" sizes="180x180" href="{% static "favicons/apple-touch-icon.png" %}">
<link rel="icon" type="image/png" sizes="32x32" href="{% static "favicons/favicon-32x32.png" %}">
<link rel="icon" type="image/png" sizes="16x16" href="{% static "favicons/favicon-16x16.png" %}">
<link rel="manifest" href="{% static "favicons/site.webmanifest" %}">
<link rel="mask-icon" href="{% static "favicons/safari-pinned-tab.svg" %}" color="#009933">
<link rel="shortcut icon" href="{% static "favicons/favicon.ico" %}">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-config" content="{% static "favicons/browserconfig.xml" %}">
<meta name="theme-color" content="#ffffff">
{% if LOAD_FROM_CDN %}
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="preload" as="style">
<link href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,500,500i,700,700i&display=swap" rel="preload" as="style">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,500,500i,700,700i&display=swap" rel="stylesheet">
{% else %}
<link href="{% static "lib/material-icons/material-icons.css" %}" rel="preload" as="style">
<link href="{% static "lib/gfonts/gfonts.css" %}" rel="preload" as="style">
<link href="{% static "lib/material-icons/material-icons.css" %}" rel="stylesheet">
<link href="{% static "lib/gfonts/gfonts.css" %}" rel="stylesheet">
{% endif %}
<link href="{% static "css/_commons.css" %}" rel="preload" as="style">
<link href="{% static "css/_commons.css" %}" rel="stylesheet">
<link href="{% static "css/_extra.css" %}" rel="preload" as="style">
<link href="{% static "css/_extra.css" %}" rel="stylesheet">
<link href="{% static "js/_commons.js" %}" rel="preload" as="script">

View File

@@ -0,0 +1,14 @@
<meta charset="utf-8">
<meta content="ie=edge" http-equiv="x-ua-compatible">
<meta content="width=device-width, initial-scale=1" name="viewport">
<meta name="robots" content="index, follow" />
<meta name="slurp" content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1" />
<meta name="bingbot" content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1" />
<meta name="googlebot" content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1" />
<meta name="yandexbot" content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1" />
<meta name="baiduspider" content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1" />
<meta property="og:site_name" content="{{PORTAL_NAME}}" />

View File

@@ -0,0 +1 @@
<div id="app-footer"></div>

View File

@@ -0,0 +1 @@
<div id="app-header"></div>

View File

@@ -0,0 +1 @@
<div id="app-sidebar"></div>

View File

@@ -0,0 +1,14 @@
MediaCMS.api = {
media: "/media",
comments: '/comments',
search: "/search",
tags: '/tags',
categories: '/categories',
members: '/users',
liked: '/user/action/like',
history: '/user/action/watch',
actions: '/actions',
{% if IS_MEDIACMS_ADMIN or IS_MEDIACMS_MANAGER or IS_MEDIACMS_EDITOR %}manage_media: '/manage_media',{% endif %}
{% if IS_MEDIACMS_ADMIN or IS_MEDIACMS_MANAGER %}manage_users: '/manage_users',{% endif %}
{% if IS_MEDIACMS_ADMIN or IS_MEDIACMS_MANAGER or IS_MEDIACMS_EDITOR %}manage_comments: '/manage_comments',{% endif %}
};

View File

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

View File

@@ -0,0 +1,27 @@
MediaCMS.user = {
name: {% if request.user.is_authenticated %}"{{request.user.username}}"{% else %}null{% endif %},
username: {% if request.user.is_authenticated %}"{{request.user.username}}"{% else %}null{% endif %},
thumbnail: {% if request.user.is_authenticated %}"{{request.user.thumbnail_url}}"{% else %}null{% endif %},
is: {
admin: {% if IS_MEDIACMS_ADMIN %}true{% else %}false{% endif %},
anonymous: {% if request.user.is_authenticated %}false{% else %}true{% endif %},
},
can: {
addMedia: {% if CAN_UPLOAD_MEDIA %}true{% else %}false{% endif %},
editMedia: {% if CAN_EDIT_MEDIA %}true{% else %}false{% endif %},
deleteMedia: {% if CAN_DELETE_MEDIA %}true{% else %}false{% endif %},
editSubtitle: {% if CAN_EDIT_MEDIA %}true{% else %}false{% endif %},
readComment: true,
addComment: true,
deleteComment: {% if CAN_DELETE_COMMENTS %}true{% else %}false{% endif %},
editProfile: {% if CAN_EDIT %}true{% else %}false{% endif %},
deleteProfile: {% if CAN_DELETE_PROFILE %}true{% else %}false{% endif %},
manageMedia: {% if IS_MEDIACMS_ADMIN or IS_MEDIACMS_MANAGER or IS_MEDIACMS_EDITOR %}true{% else %}false{% endif %},
manageUsers: {% if IS_MEDIACMS_ADMIN or IS_MEDIACMS_MANAGER %}true{% else %}false{% endif %},
manageComments: {% if IS_MEDIACMS_ADMIN or IS_MEDIACMS_MANAGER or IS_MEDIACMS_EDITOR %}true{% else %}false{% endif %},
},
pages: {
home: '/user/{{request.user.username}}',
about: '/user/{{request.user.username}}/about',
}
};

View File

@@ -0,0 +1,19 @@
<script type="text/javascript">
var MediaCMS = {
{% if media %}mediaId: "{{media}}", {% endif %}
{% if user %}profileId: "{{user.username}}", {% endif %}
};
{% include "config/core/api.html" %}
{% include "config/core/url.html" %}
{% include "config/core/user.html" %}
{% include "config/installation/contents.html" %}
{% include "config/installation/features.html" %}
{% include "config/installation/pages.html" %}
{% include "config/installation/site.html" %}
window.MediaCMS = MediaCMS;
</script>

View File

@@ -0,0 +1,26 @@
MediaCMS.contents = {
sidebar: {
navMenuItems: [{
text: "About",
link: "/about",
icon: 'contact_support',
},
{
text: "Terms",
link: "/tos",
icon: 'insert_drive_file',
},
{
text: "Contact",
link: "/contact",
icon: 'alternate_email',
}
],
belowNavMenu: null,
footer: 'Powered by <a href="//mediacms.io" title="mediacms.io" target="_blank">mediacms.io</a>',
},
uploader: {
belowUploadArea: "{{PRE_UPLOAD_MEDIA_MESSAGE}}",
postUploadMessage: "{{POST_UPLOAD_AUTHOR_MESSAGE_UNLISTED_NO_COMMENTARY}}",
},
};

View File

@@ -0,0 +1,28 @@
MediaCMS.features = {
embeddedVideo: {
initialDimensions: { // In pixels.
width: 560,
height: 315,
},
},
headerBar:{
hideLogin: {% if CAN_LOGIN %}false{% else %}true{% endif %},
hideRegister: {% if CAN_REGISTER %}false{% else %}true{% endif %},
},
media:{
actions:{
share: {% if CAN_SHARE_MEDIA %}true{% else %}false{% endif %},
report: {% if CAN_REPORT_MEDIA %}true{% else %}false{% endif %},
like: {% if CAN_LIKE_MEDIA %}true{% else %}false{% endif %},
dislike: {% if CAN_DISLIKE_MEDIA %}true{% else %}false{% endif %},
download: true,
comment: true,
},
shareOptions: [ 'embed', 'fb', 'tw', 'whatsapp', 'telegram', 'reddit', 'tumblr', 'vk', 'pinterest', 'mix', 'linkedin', 'email' ],
},
mediaItem:{
hideDate: false,
hideViews: false,
hideAuthor: false,
},
};

View File

@@ -0,0 +1,22 @@
MediaCMS.pages = {
home: {
sections:{
latest:{
title: 'Latest',
},
},
},
media: {
categoriesWithTitle: false,
htmlInDescription: false,
hideViews: false,
related:{
initialSize: 15,
},
},
profile:{
htmlInDescription: false,
includeHistory: false,
includeLikedMedia: false,
},
};

View File

@@ -0,0 +1,52 @@
MediaCMS.site = {
id: 'mediacms',
title: "{{PORTAL_NAME}}",
url: '{{FRONTEND_HOST}}/',
api: '{{FRONTEND_HOST}}/api/v1',
theme: {
mode: 'light', // Valid values: 'light', 'dark'.
switch: {
position: 'header', // Valid values: 'header', 'sidebar'.
},
},
logo:{
lightMode:{
img: "{{FRONTEND_HOST}}/static/images/logo_light.png",
svg: "{{FRONTEND_HOST}}/static/images/logo_light.svg",
},
darkMode:{
img: "{{FRONTEND_HOST}}/static/images/logo_dark.png",
svg: "{{FRONTEND_HOST}}/static/images/logo_dark.svg",
},
},
pages: {
latest:{
title: 'Recent uploads',
},
featured:{
title: 'Featured',
},
recommended:{
title: 'Recommended',
},
members:{
title: 'Members',
},
},
userPages: {
liked: {
title: 'Liked media',
},
history: {
title: 'History',
},
},
taxonomies: {
tags: {
title: 'Tags',
},
categories: {
title: 'Categories',
},
},
};

16
templates/messages.html Normal file
View File

@@ -0,0 +1,16 @@
{% block messages %}
{% if messages %}
{% for message in messages %}
<div class="alert {{ message.tags }} alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
{{ message }}
</div>
{% endfor %}
{% endif %}
{% endblock %}

55
templates/root.html Normal file
View File

@@ -0,0 +1,55 @@
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
{% block head %}
<title>{% block headtitle %}{{PORTAL_NAME}}{% endblock headtitle %}</title>
{% include "common/head-meta.html" %}
{% block headermeta %}
<meta property="og:title" content="{{PORTAL_NAME}}">
<meta property="og:type" content="website">
{%endblock headermeta %}
{% block externallinks %}{% endblock externallinks %}
{% include "common/head-links.html" %}
{% block topimports %}{%endblock topimports %}
{% include "config/index.html" %}
{% endblock head %}
</head>
<body>
{% block beforecontent %}{% endblock %}
<div class="page-main-wrap">
{% include "messages.html" %}
{% block content %}{% endblock %}
</div>
{% block aftercontent %}{% endblock %}
{% if LOAD_FROM_CDN %}
<script src="https://vjs.zencdn.net/7.7.5/video.min.js"></script>
{% else %}
<script src="{% static "lib/video-js/7.7.5/video.min.js" %}"></script>
{% endif %}
{% block externalscripts %}{% endblock externalscripts %}
{% include "common/body-scripts.html" %}
{% block bottomimports %}{% endblock bottomimports %}
</body>
</html>