Merge pull request #1 from bludit/master

Regular Merge from Bludit Master
This commit is contained in:
David Blake 2020-01-05 09:56:59 +00:00 committed by GitHub
commit ace253fcdb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
90 changed files with 611 additions and 414 deletions

View File

@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2015-2019 Diego Najar
Copyright (c) 2015-2020 Diego Najar
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@ -62,8 +62,8 @@ Bludit is open soruce and free, but if you really like the project and is useful
- <a href="https://www.patreon.com/clickwork" target="_blank">Clickwork</a>
- <a href="https://www.patreon.com/user/creators?u=10331784" target="_blank">KreativMind</a>
- <a href="https://www.patreon.com/user/creators?u=3969453" target="_blank">Martin Cajzer</a>
- <a href="https://www.patreon.com/user/creators?u=12261033" target="_blank">Jan Rippl</a>
- <a href="https://www.patreon.com/user/creators?u=28428918" target="_blank">Curious Activity</a>
License
-------

View File

@ -51,13 +51,7 @@ $numberOfPages = count($listOfFilesByPage);
</table>
<!-- Paginator -->
<nav>
<ul class="pagination justify-content-center flex-wrap">
<?php for ($i=1; $i<=$numberOfPages; $i++): ?>
<li class="page-item"><button type="button" class="btn btn-link page-link" onClick="getFiles(<?php echo $i ?>)"><?php echo $i ?></button></li>
<?php endfor; ?>
</ul>
</nav>
<nav id="jsbluditMediaTablePagination"></nav>
</div>
</div>
@ -94,7 +88,7 @@ function hideMediaAlert() {
}
// Show the files in the table
function displayFiles(files) {
function displayFiles(files, numberOfPages = <?= $numberOfPages ?>) {
if (!Array.isArray(files)) {
return false;
}
@ -121,10 +115,19 @@ function displayFiles(files) {
'<\/tr>';
$('#jsbluditMediaTable').append(tableRow);
});
mediaPagination = '<ul class="pagination justify-content-center flex-wrap">';
for (var i = 1; i <= numberOfPages; i++) {
mediaPagination += '<li class="page-item"><button type="button" class="btn btn-link page-link" onClick="getFiles('+i+')">'+i+'</button></li>';
}
mediaPagination += '</ul>';
$('#jsbluditMediaTablePagination').html(mediaPagination);
}
if (files.length == 0) {
$('#jsbluditMediaTable').html("<p><?php (IMAGE_RESTRICT ? $L->p('There are no images for the page') : $L->p('There are no images')) ?></p>");
$('#jsbluditMediaTablePagination').html('');
}
}
@ -138,7 +141,7 @@ function getFiles(pageNumber) {
},
function(data) { // success function
if (data.status==0) {
displayFiles(data.files);
displayFiles(data.files, data.numberOfPages);
} else {
console.log(data.message);
}

View File

@ -31,6 +31,11 @@ echo '<td>Bludit Build Number</td>';
echo '<td>'.BLUDIT_BUILD.'</td>';
echo '</tr>';
echo '<tr>';
echo '<td>Disk usage</td>';
echo '<td>'.Filesystem::bytesToHumanFileSize(Filesystem::getSize(PATH_ROOT)).'</td>';
echo '</tr>';
echo '<tr>';
echo '<td><a href="'.HTML_PATH_ADMIN_ROOT.'developers'.'">Bludit Developers</a></td>';
echo '<td></td>';

View File

@ -66,8 +66,8 @@
html += '<div class="search-suggestion">';
html += '<div class="search-suggestion-item">'+data.text+' <span class="badge badge-pill badge-light">'+data.type+'</span></div>';
html += '<div class="search-suggestion-options">';
html += '<a target="_blank" href="'+DOMAIN_PAGES+data.id+'">View</a>';
html += '<a class="ml-2" href="'+DOMAIN_ADMIN+'edit-content/'+data.id+'">Edit</a>';
html += '<a target="_blank" href="'+DOMAIN_PAGES+data.id+'"><?php $L->p('view') ?></a>';
html += '<a class="ml-2" href="'+DOMAIN_ADMIN+'edit-content/'+data.id+'"><?php $L->p('edit') ?></a>';
html += '</div></div>';
}

View File

@ -268,6 +268,15 @@
'placeholder'=>'',
'tip'=>''
));
echo Bootstrap::formInputText(array(
'name'=>'vk',
'label'=>'VK',
'value'=>$user->vk(),
'class'=>'',
'placeholder'=>'',
'tip'=>''
));
?>
</div>
</div>

File diff suppressed because one or more lines are too long

View File

@ -251,6 +251,24 @@ function deactivatePlugin($pluginClassName) {
return false;
}
function deactivateAllPlugin() {
global $plugins;
global $syslog;
global $L;
// Check if the plugin exists
foreach ($plugins['all'] as $plugin) {
if ($plugin->uninstall()) {
// Add to syslog
$syslog->add(array(
'dictionaryKey'=>'plugin-deactivated',
'notes'=>$plugin->name()
));
}
}
return false;
}
function changePluginsPosition($pluginClassList) {
global $plugins;
global $syslog;
@ -491,6 +509,8 @@ function createUser($args) {
global $L;
global $syslog;
$args['new_username'] = Text::removeSpecialCharacters($args['new_username']);
// Check empty username
if (Text::isEmpty($args['new_username'])) {
Alert::set($L->g('username-field-is-empty'), ALERT_STATUS_FAIL);
@ -517,7 +537,7 @@ function createUser($args) {
// Filter form fields
$tmp = array();
$tmp['username'] = Text::removeSpecialCharacters($args['new_username']);
$tmp['username'] = $args['new_username'];
$tmp['password'] = $args['new_password'];
$tmp['role'] = $args['role'];
$tmp['email'] = $args['email'];
@ -873,3 +893,17 @@ function transformImage($file, $imageDir, $thumbnailDir=false) {
return $image;
}
function downloadRestrictedFile($file) {
if (is_file($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit(0);
}
}

View File

@ -264,4 +264,32 @@ class Filesystem {
public static function extension($file) {
return pathinfo($file, PATHINFO_EXTENSION);
}
/**
* Get Size of file or directory in bytes
* @param [string] $fileOrDirectory
* @return [int|bool [bytes or false on error]
*/
public static function getSize($fileOrDirectory) {
// Files
if (is_file($fileOrDirectory)) {
return filesize($fileOrDirectory);
}
// Directories
if (file_exists($fileOrDirectory)) {
$size = 0;
foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($fileOrDirectory)) as $file){
$size += $file->getSize();
}
return $size;
}
return false;
}
public static function bytesToHumanFileSize($bytes, $decimals = 2) {
$size = array('B','kB','MB','GB','TB','PB','EB','ZB','YB');
$factor = floor((strlen($bytes) - 1) / 3);
return sprintf("%.{$decimals}f ", $bytes / pow(1024, $factor)) . @$size[$factor];
}
}

View File

@ -13,7 +13,8 @@ class Theme {
'instagram'=>'Instagram',
'codepen'=>'Codepen',
'linkedin'=>'Linkedin',
'mastodon'=>'Mastodon'
'mastodon'=>'Mastodon',
'vk'=>'VK'
);
foreach ($socialNetworks as $key=>$label) {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -122,9 +122,14 @@ class Page {
}
// Returns the date according to locale settings and format settings
public function dateModified()
public function dateModified($format=false)
{
return $this->getValue('dateModified');
$dateRaw = $this->getValue('dateModified');
if ($format===false) {
global $site;
$format = $site->dateFormat();
}
return Date::format($dateRaw, DB_DATE_FORMAT, $format);
}
// Returns the username who created the page
@ -273,6 +278,7 @@ class Page {
$tmp['dateRaw'] = $this->dateRaw();
$tmp['tags'] = $this->tags(false);
$tmp['username'] = $this->username();
$tmp['category'] = $this->category();
$tmp['dateUTC'] = Date::convertToUTC($this->dateRaw(), DB_DATE_FORMAT, DB_DATE_FORMAT);
$tmp['permalink'] = $this->permalink(true);
$tmp['coverImage'] = $this->coverImage(true);

View File

@ -17,7 +17,7 @@ class Parsedown
{
# ~
const version = '1.7.3';
const version = '1.7.4';
# ~
@ -1489,7 +1489,22 @@ class Parsedown
}
}
$permitRawHtml = false;
if (isset($Element['text']))
{
$text = $Element['text'];
}
// very strongly consider an alternative if you're writing an
// extension
elseif (isset($Element['rawHtml']))
{
$text = $Element['rawHtml'];
$allowRawHtmlInSafeMode = isset($Element['allowRawHtmlInSafeMode']) && $Element['allowRawHtmlInSafeMode'];
$permitRawHtml = !$this->safeMode || $allowRawHtmlInSafeMode;
}
if (isset($text))
{
$markup .= '>';
@ -1500,11 +1515,15 @@ class Parsedown
if (isset($Element['handler']))
{
$markup .= $this->{$Element['handler']}($Element['text'], $Element['nonNestables']);
$markup .= $this->{$Element['handler']}($text, $Element['nonNestables']);
}
elseif (!$permitRawHtml)
{
$markup .= self::escape($text, true);
}
else
{
$markup .= self::escape($Element['text'], true);
$markup .= $text;
}
$markup .= '</'.$Element['name'].'>';

View File

@ -32,6 +32,7 @@ class Site extends dbJSON {
'linkedin'=> '',
'mastodon'=> '',
'dribbble'=> '',
'vk'=> '',
'orderBy'=> 'date', // date or position
'extremeFriendly'=> true,
'autosaveInterval'=> 2, // minutes
@ -192,6 +193,11 @@ class Site extends dbJSON {
return $this->getField('dribbble');
}
public function vk()
{
return $this->getField('vk');
}
public function orderBy()
{
return $this->getField('orderBy');

View File

@ -145,6 +145,11 @@ class User {
return $this->getValue('mastodon');
}
public function vk()
{
return $this->getValue('vk');
}
public function profilePicture()
{
$filename = $this->getValue('username').'.png';
@ -169,6 +174,7 @@ class User {
$tmp['gitlab'] = $this->gitlab();
$tmp['linkedin'] = $this->linkedin();
$tmp['mastodon'] = $this->mastodon();
$tmp['vk'] = $this->vk();
$tmp['profilePicture'] = $this->profilePicture();
if ($returnsArray) {

View File

@ -22,7 +22,8 @@ class Users extends dbJSON {
'github'=>'',
'gitlab'=>'',
'linkedin'=>'',
'mastodon'=>''
'mastodon'=>'',
'vk'=>''
);
function __construct()

View File

@ -388,8 +388,8 @@
"remove-logo": "Удалить логотип",
"preview": "Предпросмотр",
"author-can-write-and-edit-their-own-content": "Автор: Может писать и редактировать собственные записи. Редактор: может писать и редактировать как свои записи, так и других пользователей.",
"custom-fields": "Custom fields",
"define-custom-fields-for-the-content": "Define custom fields for the content. Learn more about custom fields in the <a href='https:\/\/docs.bludit.com\/en\/content\/custom-fields'>documentation<\/a>.",
"start-typing-to-see-a-list-of-suggestions": "Start typing to see a list of suggestions.",
"view": "View"
"custom-fields": "Настраиваемые поля",
"define-custom-fields-for-the-content": "Определите настраиваемые поля для содержимого. Узнайте больше о пользовательских полях в <a href='https:\/\/docs.bludit.com\/en\/content\/custom-fields'>документации<\/a> (только на английском).",
"start-typing-to-see-a-list-of-suggestions": "Начните писать, чтобы увидеть список подсказок.",
"view": "Просмотр"
}

View File

@ -3,7 +3,7 @@
"native": "Türkçe",
"english-name": "Turkish",
"locale": "tr, tr_TR",
"last-update": "2018-02-06",
"last-update": "2019-12-28",
"authors": [
"Ali Demirtas",
"",
@ -378,18 +378,18 @@
"thumbnail-quality-in-percentage": "Yüzde olarak küçük resim kalitesi (%).",
"maximum-load-file-size-allowed:": "İzin verilen en yüksek dosya yükleme boyutu:",
"file-type-is-not-supported": "Dosya türü desteklenmiyor. İzin verilen türler:",
"page-content": "Page content",
"markdown-parser": "Markdown parser",
"site-logo": "Site logo",
"search": "Search",
"search-plugins": "Search plugins",
"enabled-plugins": "Enabled plugins",
"disabled-plugins": "Disabled plugins",
"remove-logo": "Remove logo",
"preview": "Preview",
"author-can-write-and-edit-their-own-content": "Author: Can write and edit their own content. Editor: Can write and edit the content of others.",
"custom-fields": "Custom fields",
"define-custom-fields-for-the-content": "Define custom fields for the content. Learn more about custom fields in the <a href='https:\/\/docs.bludit.com\/en\/content\/custom-fields'>documentation<\/a>.",
"start-typing-to-see-a-list-of-suggestions": "Start typing to see a list of suggestions.",
"view": "View"
"page-content": "Sayfa içeriği",
"markdown-parser": "Markdown ayrıştırıcı",
"site-logo": "Site logosu",
"search": "Ara",
"search-plugins": "Eklentilerde ara",
"enabled-plugins": "Etkin eklentiler",
"disabled-plugins": "Etkin olmayan eklentiler",
"remove-logo": "Logoyu kaldır",
"preview": "Ön izleme",
"author-can-write-and-edit-their-own-content": "Yazar: Kendi içeriklerini yazabilir ve düzenleyebilir. Editör: Başkalarının içeriğini yazabilir ve düzenleyebilir.",
"custom-fields": "Özel alanlar",
"define-custom-fields-for-the-content": "İçerik için özel alanlar tanımlayın. Özel alanlar hakkında daha fazla bilgiyi <a href='https:\/\/docs.bludit.com\/en\/content\/custom-fields'>belgeler<\/a> adresinde bulabilirsiniz.",
"start-typing-to-see-a-list-of-suggestions": "Bir öneri listesi görmek için yazmaya başlayın.",
"view": "Görüntüle"
}

View File

@ -1,10 +1,10 @@
{
"language-data": {
"native": "Traditional Chinese (Taiwan)",
"native": "繁體中文 (台灣Taiwan)",
"english-name": "Traditional Chinese",
"last-update": "2015-12-10",
"last-update": "2019-11-24",
"authors": [
"Ethan Chen http:\/\/single4.ml",
"Ethan Chen http:\/\/ethan42411.ml",
"",
"",
""
@ -18,13 +18,13 @@
"Fri": "Fri",
"Sat": "Sat",
"Sun": "Sun",
"Monday": "Monday",
"Tuesday": "Tuesday",
"Wednesday": "Wednesday",
"Thursday": "Thursday",
"Friday": "Friday",
"Saturday": "Saturday",
"Sunday": "Sunday",
"Monday": "星期一",
"Tuesday": "星期二",
"Wednesday": "星期三",
"Thursday": "星期四",
"Friday": "星期五",
"Saturday": "星期六",
"Sunday": "星期日",
"Jan": "Jan",
"Feb": "Feb",
"Mar": "Mar",
@ -36,102 +36,102 @@
"Oct": "Oct",
"Nov": "Nov",
"Dec": "Dec",
"January": "January",
"February": "February",
"March": "March",
"April": "April",
"May": "May",
"June": "June",
"July": "July",
"August": "August",
"September": "September",
"October": "October",
"November": "November",
"December": "December"
"January": "一月",
"February": "二月",
"March": "三月",
"April": "四月",
"May": "五月",
"June": "六月",
"July": "七月",
"August": "八月",
"September": "九月",
"October": "十月",
"November": "十一月",
"December": "十二月"
},
"dashboard": "主頁面",
"manage-users": "管理使用者",
"manage-categories": "Manage categories",
"manage-categories": "管理分類",
"general-settings": "一般設定",
"advanced-settings": "進階設定",
"thanks-for-supporting-bludit": "Thanks for support Bludit",
"upgrade-to-bludit-pro": "Upgrade to Bludit PRO",
"thanks-for-supporting-bludit": "感謝支持Bludit",
"upgrade-to-bludit-pro": "升級至Bludit PRO",
"language": "語言",
"plugin": "Plugin",
"plugin": "延伸模組",
"plugins": "延伸模組",
"developers": "Developers",
"developers": "開發者",
"themes": "佈景主題",
"about": "關於",
"url": "URL",
"welcome": "Welcome",
"url": "網址",
"welcome": "歡迎",
"logout": "登出",
"website": "網站",
"publish": "發表",
"manage": "管理",
"content": "內容",
"category": "Category",
"categories": "Categories",
"category": "分類",
"categories": "分類",
"users": "使用者",
"settings": "設定",
"general": "一般設定",
"advanced": "進階設定",
"new-content": "New content",
"manage-content": "Manage content",
"add-new-content": "Add new content",
"new-category": "New category",
"new-content": "新內容",
"manage-content": "管理內容",
"add-new-content": "增加新內容",
"new-category": "新增分類",
"you-do-not-have-sufficient-permissions": "您沒有權限存取此頁面,請聯絡管理員",
"add-a-new-user": "新增使用者",
"url-associated-with-the-content": "URL associated with the content.",
"url-associated-with-the-content": "與內容關聯的網址.",
"language-and-timezone": "語言與時區",
"change-your-language-and-region-settings": "更改您所使用的語言與地區設定",
"notifications": "Notifications",
"plugin-activated": "Plugin activated",
"plugin-deactivated": "Plugin deactivated",
"new-theme-configured": "New theme configured",
"settings-changes": "Changes on settings",
"plugin-configured": "Plugin configured",
"notifications": "通知",
"plugin-activated": "延伸模組已啟用",
"plugin-deactivated": "延伸模組已關閉",
"new-theme-configured": "新佈景主題已設定",
"settings-changes": "變更設定",
"plugin-configured": "延伸模組已設定",
"welcome-to-bludit": "歡迎使用Bludit",
"statistics": "統計",
"drafts": "草稿",
"title": "標題",
"save": "儲存",
"save-as-draft": "Save as draft",
"save-as-draft": "儲存成草稿",
"cancel": "取消",
"description": "簡介",
"this-field-can-help-describe-the-content": "這個欄位可以幫助快速理解內容不能超過150個字",
"images": "圖片",
"error": "錯誤",
"supported-image-file-types": "可以上傳的檔案格式",
"cover-image": "Cover image",
"cover-image": "封面圖片",
"drag-and-drop-or-click-here": "拖曳您的圖片到這裡或是點選這裡選擇圖片",
"there-are-no-images": "There are no images",
"upload-and-more-images": "Upload and more images",
"click-on-the-image-for-options": "Click on the image for options.",
"click-here-to-cancel": "Click here to cancel.",
"there-are-no-images": "目前沒有圖片",
"upload-and-more-images": "上傳更多圖片",
"click-on-the-image-for-options": "點選圖片來進行設定",
"click-here-to-cancel": "點選此處來取消",
"insert-image": "插入圖片",
"set-as-cover-image": "Set as cover image",
"delete-image": "Delete image",
"set-as-cover-image": "設為封面圖片",
"delete-image": "刪除圖片",
"tags": "標籤",
"add": "新增",
"status": "狀態",
"published": "已發表",
"draft": "草稿",
"empty-title": "空白標題",
"empty": "empty",
"empty": "空白",
"date": "日期",
"external-cover-image": "External cover image",
"external-cover-image": "外部封面圖片",
"parent": "繼承頁面",
"full-image-url": "Full image URL.",
"this-field-is-used-when-you-order-the-content-by-position": "This field is used when you order the content by position.",
"full-image-url": "全圖網址",
"this-field-is-used-when-you-order-the-content-by-position": "當您依照位置排序內容,此欄位將會被使用",
"position": "位置",
"friendly-url": "友善網址",
"image-description": "Image description",
"add-a-new-category": "Add a new category",
"image-description": "圖片描述",
"add-a-new-category": "新增一個新分類",
"name": "名稱",
"username": "使用者名稱",
"first-name": "名",
"last-name": "姓",
"to-schedule-the-content-select-the-date-and-time": "To schedule the content select the date and time, the status has to be set to \"Published\".",
"to-schedule-the-content-select-the-date-and-time": "選取時間日期來進行此內容發表排程,狀態必須設定成\"發表\"",
"email": "Email",
"role": "角色",
"registered": "已註冊",
@ -144,7 +144,7 @@
"you-can-add-a-site-description-to-provide": "您可以新增一段簡短的簡介來介紹您的網站",
"footer-text": "頁尾文字",
"you-can-add-a-small-text-on-the-bottom": "您可以在每一頁的頁尾放置一些短短的文字,例如: 版權、所有人、日期...",
"social-networks-links": "Social networks links",
"social-networks-links": "社群網站連結",
"site-url": "網站網址",
"email-account-settings": "Email帳戶設定",
"sender-email": "寄件者email",
@ -156,44 +156,44 @@
"locale": "區域",
"date-and-time-formats": "日期與時間格式",
"date-format": "日期格式",
"current-format": "Current format",
"current-format": "目前格式",
"version": "版本",
"author": "作者",
"activate": "啟用",
"deactivate": "關閉",
"edit-category": "Edit category",
"edit-category": "編輯分類",
"delete": "刪除",
"password": "使用者密碼",
"confirm-password": "確認密碼",
"editor": "作者",
"administrator": "管理員",
"edit-user": "編輯使用者",
"edit-content": "Edit content",
"edit-content": "編輯內容",
"profile": "個人檔案",
"change-password": "更改密碼",
"enabled": "啟用",
"disable-the-user": "Disable the user",
"disable-the-user": "停用此使用者",
"profile-picture": "大頭貼",
"edit-or-delete-your-categories": "Edit or delete your categories",
"create-a-new-category-to-organize-your-content": "Create a new category to organize your content",
"edit-or-delete-your-categories": "編輯或刪除您的分類",
"create-a-new-category-to-organize-your-content": "新增一個新的分類來組織您的內容",
"confirm-delete-this-action-cannot-be-undone": "確認刪除? 這個動作不可復原",
"do-you-want-to-disable-the-user": "Do you want to disable the user ?",
"do-you-want-to-disable-the-user": "您確定要停用此使用者嗎?",
"new-password": "新密碼",
"you-can-change-this-field-when-save-the-current-changes": "You can change this field when save the current changes.",
"items-per-page": "Items per page",
"invite-a-friend-to-collaborate-on-your-site": "Invite a friend to collaborate on your site",
"number-of-items-to-show-per-page": "Number of items to show per page.",
"website-or-blog": "Website or Blog",
"order-content-by": "Order content By",
"edit-or-delete-content-from-your-site": "Edit or delete content from your site",
"order-the-content-by-date-to-build-a-blog": "Order the content by date to build a Blog or order the content by position to build a Website.",
"page-not-found-content": "Hey! look like the page doesn't exist.",
"page-not-found": "Page not found",
"predefined-pages": "Predefined pages",
"returning-page-when-the-page-doesnt-exist": "Returning page when the page doesn't exist, leave it blank if you want to returns a default message.",
"returning-page-for-the-main-page": "Returning page for the main page, leave it blank if you want to show all the pages on the main page.",
"full-url-of-your-site": "Full URL of your site. Complete with the protocol HTTP or HTTPS (only if you have enabled SSL on your server).",
"with-the-locales-you-can-set-the-regional-user-interface": "With the locales, you can set the regional user interface, such as the dates in your language. The locales need to be installed on your system.",
"you-can-change-this-field-when-save-the-current-changes": "當儲存目前變更時,您可以修改此欄位",
"items-per-page": "每頁的項目",
"invite-a-friend-to-collaborate-on-your-site": "邀請您的朋友一同合作管理您的網站",
"number-of-items-to-show-per-page": "每頁顯示多少項目",
"website-or-blog": "網站或是部落格",
"order-content-by": "依序甚麼規格排序內容",
"edit-or-delete-content-from-your-site": "從您的網站編輯或刪除內容",
"order-the-content-by-date-to-build-a-blog": "依照時間排序建構一個部落個或使用位置排序來建構一個網站",
"page-not-found-content": "嘿! 這看起來像是不存在此頁面",
"page-not-found": "找不到此頁面",
"predefined-pages": "預先定義頁面",
"returning-page-when-the-page-doesnt-exist": "當頁面不存在時,則導向此頁面。如果您想要顯示預設訊息,則請保持空白",
"returning-page-for-the-main-page": "返回主頁面的頁面。如果您想要在主頁面顯示全部的頁面,請保持空白",
"full-url-of-your-site": "網站的完整網址包含http或是https(僅有在伺服器已啟用SSL的情況下)",
"with-the-locales-you-can-set-the-regional-user-interface": "語言環境,您可以設定區域使用者介面語言,或是您所在當地的日期格式,當然語言檔案必須被安裝於系統上",
"bludit-installer": "Bludit 安裝程式",
"choose-your-language": "選擇您所使用的語言",
"next": "下一步",
@ -203,192 +203,192 @@
"login": "登入",
"back-to-login-form": "返回登入畫面",
"get-login-access-code": "獲得登入存取碼",
"email-access-code": "Email access code",
"email-access-code": "Email存取碼",
"whats-next": "接下來",
"username-or-password-incorrect": "使用者帳號或密碼不正確",
"follow-bludit-on": "Follow Bludit on",
"follow-bludit-on": "追蹤Bludit",
"this-is-a-brief-description-of-yourself-our-your-site": "這是關於您的自己或是網站的簡短介紹,如果想要修改介紹,請至管理介面\/設定\/延伸模組,設定一個名為關於的延伸模組。",
"new-version-available": "New version available",
"new-category-created": "New category created",
"category-deleted": "Category deleted",
"category-edited": "Category edited",
"new-user-created": "New user created",
"user-edited": "User edited",
"new-version-available": "有新版本可以使用",
"new-category-created": "新分類已建立",
"category-deleted": "分類已刪除",
"category-edited": "分類已編輯",
"new-user-created": "新使用者已建立",
"user-edited": "使用者已編輯",
"user-deleted": "使用者已刪除",
"recommended-for-recovery-password-and-notifications": "Recommended for recovery password and notifications.",
"recommended-for-recovery-password-and-notifications": "建議用於恢復密碼與通知訊息",
"authentication-token": "Authentication Token",
"token": "Token",
"current-status": "Current status",
"current-status": "目前狀態",
"upload-image": "上傳圖片",
"the-changes-have-been-saved": "變更已經儲存",
"label": "Label",
"links": "Links",
"this-title-is-almost-always-used-in-the-sidebar-of-the-site": "This title is almost always used in the sidebar of the site.",
"label": "標籤",
"links": "連結",
"this-title-is-almost-always-used-in-the-sidebar-of-the-site": "該標題通常會被在網站的側邊欄",
"password-must-be-at-least-6-characters-long": "密碼長度必須在6字元以上",
"ip-address-has-been-blocked": "IP 位址已被封鎖",
"try-again-in-a-few-minutes": "請過幾分鐘後再試",
"content-published-from-scheduler": "Content published from scheduler",
"blog": "Blog",
"complete-all-fields": "Complete all fields",
"static": "Static",
"about-your-site-or-yourself": "About your site or yourself",
"homepage": "Homepage",
"disabled": "Disabled",
"to-enable-the-user-you-must-set-a-new-password": "To enable the user you must set a new password.",
"delete-the-user-and-associate-his-content-to-admin-user": "Delete the user and associate his content to admin user",
"delete-the-user-and-all-his-content": "Delete the user and all his content",
"user-disabled": "User disabled",
"user-password-changed": "User password changed",
"the-password-and-confirmation-password-do-not-match": "The password and confirmation password do not match",
"scheduled-content": "Scheduled content",
"there-are-no-scheduled-content": "There are no scheduled content.",
"new-content-created": "New content created",
"content-edited": "Content edited",
"content-deleted": "Contente deleted",
"undefined": "Undefined",
"create-new-content-for-your-site": "Create new content for your site",
"order-items-by": "Order items by",
"all-content": "All content",
"dynamic": "Dynamic",
"type": "Type",
"draft-content": "Draft content",
"post": "Post",
"default": "Default",
"latest-content": "Latest content",
"default-message": "Default message",
"no-parent": "No parent",
"have-you-seen-my-ball": "Have you seen my ball?",
"content-published-from-scheduler": "內容已透過排程發表",
"blog": "部落格",
"complete-all-fields": "完成所有欄位",
"static": "靜態",
"about-your-site-or-yourself": "關於您的網站或您自己",
"homepage": "首頁",
"disabled": "停用",
"to-enable-the-user-you-must-set-a-new-password": "必須設定新密碼才能啟用此使用者",
"delete-the-user-and-associate-his-content-to-admin-user": "刪除此使用者,並將他所建立的內容關連到管理員帳號",
"delete-the-user-and-all-his-content": "刪除此使用者與其所有內容",
"user-disabled": "使用者已經停用",
"user-password-changed": "使用者密碼已變更",
"the-password-and-confirmation-password-do-not-match": "密碼和確認密碼不匹配",
"scheduled-content": "已排程的內容",
"there-are-no-scheduled-content": "目前沒有排程發表的內容",
"new-content-created": "新內容已建立",
"content-edited": "內容已編輯",
"content-deleted": "內容已刪除",
"undefined": "未定義",
"create-new-content-for-your-site": "為您的網站建立新的內容",
"order-items-by": "依照什麼規則排序",
"all-content": "全部內容",
"dynamic": "動態",
"type": "類型",
"draft-content": "草稿內容",
"post": "發表",
"default": "預設",
"latest-content": "最新內容",
"default-message": "預設訊息",
"no-parent": "無繼承",
"have-you-seen-my-ball": "您有看到我的球嗎?",
"pagebreak": "Page break",
"pages": "頁面",
"this-plugin-may-not-be-supported-by-this-version-of-bludit": "This plugin may not be supported by this version of Bludit",
"previous": "Previous",
"previous-page": "Previous page",
"next-page": "Next page",
"scheduled": "Scheduled",
"this-token-is-similar-to-a-password-it-should-not-be-shared": "This token is similar to a password, it should not be shared.",
"congratulations-you-have-successfully-installed-your-bludit": "Congratulations you have successfully installed your **Bludit**",
"this-theme-may-not-be-supported-by-this-version-of-bludit": "This theme may not be supported by this version of Bludit",
"read-more": "Read more",
"remember-me": "Remember me",
"plugins-position": "Plugin position",
"this-plugin-may-not-be-supported-by-this-version-of-bludit": "此延伸模組可能不支援此版本的Bludit",
"previous": "較早之前",
"previous-page": "上一頁",
"next-page": "下一頁",
"scheduled": "已排程",
"this-token-is-similar-to-a-password-it-should-not-be-shared": "此token類似於密碼因此它不應該被公開分享",
"congratulations-you-have-successfully-installed-your-bludit": "恭喜,您已經成功安裝 **Bludit**",
"this-theme-may-not-be-supported-by-this-version-of-bludit": "此佈景主題可能不相容此版本的Bludit",
"read-more": "閱讀更多",
"remember-me": "記住我",
"plugins-position": "延伸模組放置位置",
"plugins-sorted": "Plugins sorted",
"plugins-position-changed": "Plugin position changed",
"drag-and-drop-to-set-the-position-of-the-plugin": "Drag and Drop to set the position of the plugins",
"change-the-position-of-the-plugins": "Change the position of the plugins",
"reading-time": "Reading time",
"minutes": "minutes",
"minute": "minute",
"plugins-position-changed": "延伸模組放置位置已變更",
"drag-and-drop-to-set-the-position-of-the-plugin": "拖放來設定延伸模組的位置",
"change-the-position-of-the-plugins": "變更延伸模組的位置",
"reading-time": "閱讀時間",
"minutes": "分鐘",
"minute": "分鐘",
"example-page-1-slug": "create-your-own-content",
"example-page-1-title": "Create your own content",
"example-page-1-content": "Start writing your own content or edit the current to fit your needs. To create, edit or remove content you need to login to the <a href=\".\/admin\/\">admin panel<\/a> with the username `admin` and the password you set on the installation process.",
"example-page-1-title": "建立屬於您自己的內容",
"example-page-1-content": "開始撰寫屬於您自己的內容或是編輯目前的內容來符合您的需求。想要開始新增、編輯或是移除內容您需要使用預設管理者帳號admin與安裝時設定的密碼來登入 <a href=\".\/admin\/\">管理頁面<\/a>。",
"example-page-2-slug": "set-up-your-new-site",
"example-page-2-title": "Set up your new site",
"example-page-2-content": "Update the settings of your site from the <a href=\".\/admin\/\">admin panel<\/a>, you can change the title, description and the social networks from <a href=\".\/admin\/settings\" target=\"_blank\">Settings > General<\/a>.",
"example-page-2-title": "設定您的新網站",
"example-page-2-content": "更新您的網站設定透過 <a href=\".\/admin\/\">管理頁面<\/a>,您可以透過 <a href=\".\/admin\/settings\" target=\"_blank\">設定 > 一般設定<\/a>來變更網站標題、網站描述或是社群網站連結。",
"example-page-3-slug": "follow-bludit",
"example-page-3-title": "Follow Bludit",
"example-page-3-content": "Get information about news, new releases, new themes or new plugins on our social networks <a href=\"https:\/\/www.facebook.com\/bluditcms\/\" target=\"_blank\">Facebook<\/a>, <a href=\"https:\/\/www.twitter.com\/bludit\/\" target=\"_blank\">Twitter<\/a> and <a href=\"https:\/\/www.youtube.com\/c\/Bluditcms\" target=\"_blank\">YouTube<\/a> or visit our <a href=\"https:\/\/blog.bludit.com\" target=\"_blank\">Blog<\/a>.",
"example-page-4-slug": "about",
"example-page-4-title": "About",
"example-page-4-content": "Your About page is typically one of the most visited pages on your site, need to be simple with a few key things, such as your name, who are you, how can contact you, a small story, etc.",
"the-extension-zip-is-not-installed": "The extension zip is not installed, to use this plugin you need to install the extension.",
"there-are-no-sticky-pages-at-this-moment": "There are no sticky pages at this moment.",
"there-are-no-scheduled-pages-at-this-moment": "There are no scheduled pages at this moment.",
"update": "Update",
"template": "Template",
"nickname": "Nickname",
"disable-user": "Disable user",
"delete-user-and-keep-content": "Delete user and keep content",
"delete-user-and-delete-content": "Delete user and delete content (Warning)",
"social-networks": "Social Networks",
"interval": "Interval",
"number-in-minutes-for-every-execution-of-autosave": "Number in minutes for every execution of autosave.",
"extreme-friendly-url": "Extreme friendly URL",
"title-formats": "Title formats",
"delete-content": "Delete content",
"are-you-sure-you-want-to-delete-this-page": "Are you sure you want to delete this page?",
"sticky": "Sticky",
"actions": "Actions",
"edit": "Edit",
"options": "Options",
"enter-title": "Enter title",
"media-manager": "Media Manager",
"set-a-cover-image-from-external-url,-such-as-a-cdn-or-some-server-dedicated-for-images": "Set a cover image from an external URL, such as a CDN or some server dedicated for images.",
"user": "User",
"date-format-format": "Date format: <code>YYYY-MM-DD Hours:Minutes:Seconds<\/code>",
"start-typing-a-page-title-to-see-a-list-of-suggestions": "Start typing a page title to see a list of suggestions.",
"field-used-when-ordering-content-by-position": "Field used when ordering content by position",
"write-a-template-name-to-filter-the-page-in-the-theme-and-change-the-style-of-the-page": "Write a template name to filter the page in the theme and change the style of the page.",
"write-the-tags-separated-by-commas": "Write the tags separated by comma.",
"apply-code-noindex-code-to-this-page": "Apply <code>noindex<\/code> to this page.",
"this-tells-search-engines-not-to-show-this-page-in-their-search-results": "This tells search engines not to show this page in their search results.",
"apply-code-nofollow-code-to-this-page": "Apply <code>nofollow<\/code> to this page.",
"this-tells-search-engines-not-to-follow-links-on-this-page": "This tells search engines not to follow links on this page.",
"apply-code-noarchive-code-to-this-page": "Apply <code>noarchive<\/code> to this page.",
"this-tells-search-engines-not-to-save-a-cached-copy-of-this-page": "This tells search engines not to save a cached copy of this page.",
"uncategorized": "Uncategorized",
"done": "Done",
"delete-category": "Delete category",
"are-you-sure-you-want-to-delete-this-category?": "Are you sure you want to delete this category?",
"confirm-new-password": "Confirm new password",
"the-nickname-is-almost-used-in-the-themes-to-display-the-author-of-the-content": "The nickname is almost used in the themes to display the author of the content",
"allow-unicode": "Allow Unicode",
"allow-unicode-characters-in-the-url-and-some-part-of-the-system": "Allow Unicode characters in the URL and some part of the system.",
"variables-allowed": "Variables allowed",
"tag": "Tag",
"drag-and-drop-to-sort-the-plugins": "Drag and Drop to sort the plugins.",
"example-page-3-title": "追蹤 Bludit",
"example-page-3-content": "獲得更多關於新版本資訊、新佈景主題或是新的延伸模組,可以透過造訪我們的社群網站<a href=\"https:\/\/www.facebook.com\/bluditcms\/\" target=\"_blank\">Facebook<\/a>, <a href=\"https:\/\/www.twitter.com\/bludit\/\" target=\"_blank\">Twitter<\/a> <a href=\"https:\/\/www.youtube.com\/c\/Bluditcms\" target=\"_blank\">YouTube<\/a> 或是 <a href=\"https:\/\/blog.bludit.com\" target=\"_blank\">部落格<\/a>。",
"example-page-4-slug": "關於",
"example-page-4-title": "關於",
"example-page-4-content": "您的關於頁面通常是網站頁面瀏覽率最多的頁面之一,需要一些簡單但關鍵的事情,像是您的名字、您是誰、如何聯絡到您,或是一個小故事...等等",
"the-extension-zip-is-not-installed": "擴充套件zip並沒有被安裝使用此延伸模組必須先安裝此擴充套件",
"there-are-no-sticky-pages-at-this-moment": "目前沒有便利貼頁面",
"there-are-no-scheduled-pages-at-this-moment": "目前沒有排程發表的頁面",
"update": "更新",
"template": "範本",
"nickname": "暱稱",
"disable-user": "停用使用者",
"delete-user-and-keep-content": "刪除使用者並保存其建立的內容",
"delete-user-and-delete-content": "刪除使用者並一並刪除其建立的內容(警告)",
"social-networks": "社群網站",
"interval": "間隔",
"number-in-minutes-for-every-execution-of-autosave": "每次執行自動保存的分鐘數",
"extreme-friendly-url": "極其友好的網址",
"title-formats": "標題格式",
"delete-content": "刪除內容",
"are-you-sure-you-want-to-delete-this-page": "您確定想要刪除此頁面嗎?",
"sticky": "便利貼",
"actions": "動作",
"edit": "編輯",
"options": "選項",
"enter-title": "請輸入標題",
"media-manager": "多媒體管理器",
"set-a-cover-image-from-external-url,-such-as-a-cdn-or-some-server-dedicated-for-images": "透過外部網址來設定封面圖片像是CDN或是一些其他的伺服器空間來存放圖片",
"user": "使用者",
"date-format-format": "日期格式: <code>YYYY-MM-DD Hours:Minutes:Seconds<\/code>",
"start-typing-a-page-title-to-see-a-list-of-suggestions": "開始輸入頁面標題來查看建議列表",
"field-used-when-ordering-content-by-position": "當使用位置排序時所使用的字段",
"write-a-template-name-to-filter-the-page-in-the-theme-and-change-the-style-of-the-page": "撰寫一個範本名稱來套用佈景主題中的頁面,並變更該頁面的風格",
"write-the-tags-separated-by-commas": "用逗號分隔標籤",
"apply-code-noindex-code-to-this-page": "在此頁面內使用 <code>noindex<\/code>",
"this-tells-search-engines-not-to-show-this-page-in-their-search-results": "這將通知搜尋引擎不要將此頁面顯示於他們的搜尋結果",
"apply-code-nofollow-code-to-this-page": "在此頁面內使用 <code>nofollow<\/code>",
"this-tells-search-engines-not-to-follow-links-on-this-page": "這將通知搜尋引擎不要關注此頁面中的連結",
"apply-code-noarchive-code-to-this-page": "在此頁面內使用 <code>noarchive<\/code>",
"this-tells-search-engines-not-to-save-a-cached-copy-of-this-page": "這將會告知搜尋引擎不要將此頁面收錄至快取頁面",
"uncategorized": "未分類",
"done": "完成",
"delete-category": "刪除分類",
"are-you-sure-you-want-to-delete-this-category?": "您確定想要刪除此分類嗎?",
"confirm-new-password": "確認新密碼",
"the-nickname-is-almost-used-in-the-themes-to-display-the-author-of-the-content": "暱稱通常會被佈景主題用來顯示文章的作者",
"allow-unicode": "允許Unicode",
"allow-unicode-characters-in-the-url-and-some-part-of-the-system": "允許在網址和系統的某些部份使用Unicode字符",
"variables-allowed": "可用的變數",
"tag": "標籤",
"drag-and-drop-to-sort-the-plugins": "拖放來排序延伸模組",
"seo": "SEO",
"documentation": "Documentation",
"forum-support": "Forum support",
"chat-support": "Chat support",
"quick-links": "Quick links",
"leave-empty-for-autocomplete-by-bludit": "Leave empty for autocomplete by Bludit.",
"choose-a-password-for-the-user-admin": "Choose a password for the user <code>admin<\/code>",
"access-denied": "Access denied",
"choose-images-to-upload": "Choose images to upload",
"insert": "Insert",
"upload": "Upload",
"autosave": "Autosave",
"the-content-is-saved-as-a-draft-to-publish-it": "The content is saved as a draft. To publish it click on the button <b>Publish<\/b> or if you still working on it click on <b>Save as draft<\/b>.",
"documentation": "文件",
"forum-support": "支援討論區",
"chat-support": "支援聊天室",
"quick-links": "快速連結",
"leave-empty-for-autocomplete-by-bludit": "留空來讓Bludit自動完成",
"choose-a-password-for-the-user-admin": "幫使用者<code>admin<\/code>設定一組密碼",
"access-denied": "存取被拒",
"choose-images-to-upload": "選取圖片來進行上傳",
"insert": "插入",
"upload": "上傳",
"autosave": "自動儲存",
"the-content-is-saved-as-a-draft-to-publish-it": "此內容已被儲存為草稿。可以透過點選<b>發表<\/b>來發佈或是點選<b>儲存為草稿<\/b>來繼續保持編輯狀態",
"site": "Site",
"first": "First",
"last": "Last",
"there-are-no-pages-at-this-moment": "There are no pages at this moment.",
"there-are-no-static-pages-at-this-moment": "There are no static pages at this moment.",
"there-are-no-draft-pages-at-this-moment": "There are no draft pages at this moment.",
"good-morning": "Good morning",
"good-afternoon": "Good afternoon",
"good-evening": "Good evening",
"good-night": "Good night",
"hello": "Hello",
"there-are-no-images-for-the-page": "There are no images for the page.",
"select-cover-image": "Select cover image",
"this-plugin-depends-on-the-following-plugins": "This plugin depends on the following plugins.",
"no-pages-found": "No pages found",
"system-updated": "System updated",
"security": "Security",
"remove-cover-image": "Remove cover image",
"width": "Width",
"height": "Height",
"quality": "Quality",
"thumbnails": "Thumbnails",
"thumbnail": "Thumbnail",
"thumbnail-width-in-pixels": "Thumbnail width in pixels (px).",
"thumbnail-height-in-pixels": "Thumbnail height in pixels (px).",
"thumbnail-quality-in-percentage": "Thumbnail quality in percentage (%).",
"maximum-load-file-size-allowed:": "Maximum load file size allowed:",
"file-type-is-not-supported": "File type is not supported. Allowed types:",
"page-content": "Page content",
"markdown-parser": "Markdown parser",
"site-logo": "Site logo",
"search": "Search",
"search-plugins": "Search plugins",
"enabled-plugins": "Enabled plugins",
"disabled-plugins": "Disabled plugins",
"remove-logo": "Remove logo",
"preview": "Preview",
"author-can-write-and-edit-their-own-content": "Author: Can write and edit their own content. Editor: Can write and edit the content of others.",
"custom-fields": "Custom fields",
"define-custom-fields-for-the-content": "Define custom fields for the content. Learn more about custom fields in the <a href='https:\/\/docs.bludit.com\/en\/content\/custom-fields'>documentation<\/a>.",
"start-typing-to-see-a-list-of-suggestions": "Start typing to see a list of suggestions.",
"view": "View"
"there-are-no-pages-at-this-moment": "目前沒有頁面",
"there-are-no-static-pages-at-this-moment": "目前沒有靜態頁面",
"there-are-no-draft-pages-at-this-moment": "目前沒有草稿頁面",
"good-morning": "早安",
"good-afternoon": "下午好",
"good-evening": "晚上好",
"good-night": "晚安",
"hello": "您好",
"there-are-no-images-for-the-page": "此頁面沒有圖片",
"select-cover-image": "選取一個封面照片",
"this-plugin-depends-on-the-following-plugins": "此延伸模組相依以下其他延伸模組",
"no-pages-found": "找不到頁面",
"system-updated": "系統已更新",
"security": "安全",
"remove-cover-image": "移除封面圖片",
"width": "",
"height": "",
"quality": "品質",
"thumbnails": "縮圖",
"thumbnail": "縮圖",
"thumbnail-width-in-pixels": "縮圖的寬像素 (px).",
"thumbnail-height-in-pixels": "縮圖的高像素 (px).",
"thumbnail-quality-in-percentage": "縮圖品質百分比 (%).",
"maximum-load-file-size-allowed:": "最大允許載入檔案大小:",
"file-type-is-not-supported": "此檔案類型不被支援,允許的類型為:",
"page-content": "頁面內容",
"markdown-parser": "Markdown 解析器",
"site-logo": "網站logo",
"search": "搜尋",
"search-plugins": "搜尋延伸模組",
"enabled-plugins": "啟用延伸模組",
"disabled-plugins": "關閉延伸模組",
"remove-logo": "移除logo",
"preview": "預覽",
"author-can-write-and-edit-their-own-content": "作者: 可以撰寫或編輯他們自己的內容。 編輯: 可以撰寫或編輯其他人的內容",
"custom-fields": "自訂欄位",
"define-custom-fields-for-the-content": "自行定義內容的欄位。欲學習如何自訂欄位,請造訪<a href='https:\/\/docs.bludit.com\/en\/content\/custom-fields'>文件<\/a>.",
"start-typing-to-see-a-list-of-suggestions": "開始輸入以查看建議列表",
"view": "查看"
}

View File

@ -121,6 +121,11 @@ class pluginAPI extends Plugin {
}
}
// Clean inputs
// ------------------------------------------------------------
unset($inputs['token']);
unset($inputs['authentication']);
// ENDPOINTS
// ------------------------------------------------------------
@ -147,6 +152,10 @@ class pluginAPI extends Plugin {
elseif ( ($method==='POST') && ($parameters[0]==='pages') && empty($parameters[1]) && $writePermissions ) {
$data = $this->createPage($inputs);
}
// (GET) /api/settings
elseif ( ($method==='GET') && ($parameters[0]==='settings') && empty($parameters[1]) && $writePermissions ) {
$data = $this->getSettings();
}
// (PUT) /api/settings
elseif ( ($method==='PUT') && ($parameters[0]==='settings') && empty($parameters[1]) && $writePermissions ) {
$data = $this->editSettings($inputs);
@ -509,6 +518,23 @@ class pluginAPI extends Plugin {
);
}
/*
| Get the settings
|
| @args array
|
| @return array
*/
private function getSettings()
{
global $site;
return array(
'status'=>'0',
'message'=>'Settings.',
'data'=>$site->get()
);
}
/*
| Edit the settings
| You can edit any field defined in the class site.class.php variable $dbFields

View File

@ -36,8 +36,13 @@ class pluginBackup extends Plugin {
public function adminSidebar()
{
$backups = $this->backupList();
return '<a class="nav-link" href="'.HTML_PATH_ADMIN_ROOT.'configure-plugin/'.$this->className().'">Backups <span class="badge badge-primary badge-pill">'.count($backups).'</span></a>';
global $login;
if ($login->role() === 'admin') {
$backups = $this->backupList();
return '<a class="nav-link" href="'.HTML_PATH_ADMIN_ROOT.'configure-plugin/'.$this->className().'">Backups <span class="badge badge-primary badge-pill">'.count($backups).'</span></a>';
} else {
return '';
}
}
public function form()
@ -66,7 +71,7 @@ class pluginBackup extends Plugin {
$html .= '<h4 class="font-weight-normal">'.Date::format($filename, BACKUP_DATE_FORMAT, 'F j, Y, g:i a').'</h4>';
// Allow download if a zip file
if ($this->zip) {
$html .= '<a class="btn btn-outline-secondary btn-sm mr-1 mt-1" href="'.DOMAIN_CONTENT.'workspaces/backup/'.$filename.'.zip"><span class="fa fa-download"></span> '.$L->get('download').'</a>';
$html .= '<a class="btn btn-outline-secondary btn-sm mr-1 mt-1" href="'.DOMAIN_BASE.'plugin-backup-download?file='.$filename.'.zip"><span class="fa fa-download"></span> '.$L->get('download').'</a>';
}
$html .= '<button name="restoreBackup" value="'.$filename.'" class="btn btn-outline-secondary btn-sm mr-1 mt-1" type="submit"><span class="fa fa-rotate-left"></span> '.$L->get('restore-backup').'</button>';
$html .= '<button name="deleteBackup" value="'.$filename.'" class="btn btn-outline-danger btn-sm mr-1 mt-1" type="submit"><span class="fa fa-trash"></span> '.$L->get('delete-backup').'</button>';
@ -76,6 +81,29 @@ class pluginBackup extends Plugin {
return $html;
}
/**
* Downloading Backups is not allowed by default server config
* This webhook is to allow downloads for admins
* Webhook: plugin-backup-download?file={backup-name.zip}
*/
public function beforeAll()
{
global $L;
$webhook = 'plugin-backup-download';
if ($this->webhook($webhook)) {
if (!empty($_GET['file'])) {
$login = new Login();
if ($login->role() === 'admin') {
downloadRestrictedFile(PATH_WORKSPACES.'backup/'.$_GET['file']);
} else {
Alert::set($L->g('You do not have sufficient permissions'));
Redirect::page('dashboard');
}
}
exit(0);
}
}
public function backupList()
{
if ($this->zip) {

View File

@ -0,0 +1,9 @@
{
"plugin-data":
{
"name": "Ara",
"description": "Sitenizin içeriğinde arama yapmak için kullanıcılarınıza bir arama kutusu sağlayın."
},
"search": "Ara",
"show-button-search": "Arama düğmesini göster"
}

View File

@ -116,7 +116,7 @@ EOF;
global $url;
// Change the whereAmI to avoid load pages in the rule 69.pages
// This is only for performance propose
// This is only for performance purpose
$url->setWhereAmI('search');
// Get the string to search from the URL
@ -125,7 +125,6 @@ EOF;
// Search the string in the cache and get all pages with matches
$list = $this->search($stringToSearch);
$this->numberOfItems = count($list);
// Split the content in pages
@ -220,7 +219,7 @@ EOF;
// Inlcude Fuzz algorithm
require_once($this->phpPath().'vendors/fuzz.php');
$fuzz = new Fuzz($cache, 10, 1, true);
$results = $fuzz->search($text, 3);
$results = $fuzz->search($text, 5);
return(array_keys($results));
}

View File

@ -125,8 +125,8 @@ class Fuzz
{
$suffix = [];
$result = 0;
$n = strlen($source);
$m = strlen($target);
$n = mb_strlen($source, CHARSET);
$m = mb_strlen($target, CHARSET);
for ($i = 0; $i <= $n; $i++) {
for ($j = 0; $j <= $m; $j++) {
@ -155,8 +155,8 @@ class Fuzz
public function getLevenshtein($source, $target)
{
$matrix = [];
$n = strlen($source);
$m = strlen($target);
$n = mb_strlen($source, CHARSET);
$m = mb_strlen($target, CHARSET);
if ($n === 0) {
return $m;
@ -208,35 +208,35 @@ class Fuzz
$shorter;
$longer;
if (strlen($first) > strlen($second)) {
$longer = strtolower($first);
$shorter = strtolower($second);
if (mb_strlen($first, CHARSET) > mb_strlen($second, CHARSET)) {
$longer = mb_strtolower($first, CHARSET);
$shorter = mb_strtolower($second, CHARSET);
} else {
$longer = strtolower($second);
$shorter = strtolower($first);
$longer = mb_strtolower($second, CHARSET);
$shorter = mb_strtolower($first, CHARSET);
}
// Get half the length distance of shorter string
$halfLen = intval((strlen($shorter) / 2) + 1);
$halfLen = intval((mb_strlen($shorter,CHARSET) / 2) + 1);
$match1 = $this->_getCharMatch($shorter, $longer, $halfLen);
$match2 = $this->_getCharMatch($longer, $shorter, $halfLen);
if ((strlen($match1) == 0 || strlen($match2) == 0)
|| (strlen($match1) != strlen($match2))
if ((mb_strlen($match1, CHARSET) == 0 || mb_strlen($match2, CHARSET) == 0)
|| (mb_strlen($match1, CHARSET) != mb_strlen($match2, CHARSET))
) {
return 0.0;
}
$trans = $this->_getTranspositions($match1, $match2);
$distance = (strlen($match1) / strlen($shorter)
+ strlen($match2) / strlen($longer)
+ (strlen($match1) - $trans)
/ strlen($match1)) / 3.0;
$distance = (mb_strlen($match1, CHARSET) / mb_strlen($shorter, CHARSET)
+ mb_strlen($match2, CHARSET) / mb_strlen($longer, CHARSET)
+ (mb_strlen($match1, CHARSET) - $trans)
/ mb_strlen($match1, CHARSET)) / 3.0;
// Apply Winkler Adjustment
$prefixLen = min(strlen($this->_getPrefix($first, $second)), 4);
$prefixLen = min(mb_strlen($this->_getPrefix($first, $second),CHARSET), 4);
$jaroWinkler = round(($distance + (0.1 * $prefixLen * (1.0 - $distance))) * 100.0) / 100.0;
return $jaroWinkler;
@ -255,8 +255,8 @@ class Fuzz
{
$common = '';
$copy = $second;
$firstLen = strlen($first);
$secondLen = strlen($second);
$firstLen = mb_strlen($first, CHARSET);
$secondLen = mb_strlen($second, CHARSET);
for ($i = 0; $i < $firstLen; $i++) {
$char = $first[$i];
@ -285,7 +285,7 @@ class Fuzz
private function _getTranspositions($first, $second)
{
$trans = 0;
$firstLen = strlen($first);
$firstLen = mb_strlen($first, CHARSET);
for ($i = 0; $i < $firstLen; $i++) {
if ($first[$i] != $second[$i]) {
@ -307,7 +307,7 @@ class Fuzz
*/
private function _getPrefix($first, $second)
{
if (strlen($first) == 0 || strlen($second) == 0) {
if (mb_strlen($first, CHARSET) == 0 || mb_strlen($second, CHARSET) == 0) {
return '';
}
@ -317,7 +317,7 @@ class Fuzz
} elseif ($index == 0) {
return '';
} else {
return substr($first, 0, $index);
return mb_substr($first, 0, $index, CHARSET);
}
}
@ -335,7 +335,7 @@ class Fuzz
return -1;
}
$maxLen = min(strlen($first), strlen($second));
$maxLen = min(mb_strlen($first, CHARSET), mb_strlen($second, CHARSET));
for ($i = 0; $i < $maxLen; $i++) {
if ($first[$i] != $second[$i]) {
return $i;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -8,5 +8,6 @@
"visits-today": "Seitenaufrufe heute",
"unique-visitors-today": "Besucher heute",
"chart": "Chart",
"table": "Table"
"table": "Table",
"disk-usage" : "Disk Usage"
}

View File

@ -8,5 +8,6 @@
"visits-today": "Seitenaufrufe heute",
"unique-visitors-today": "Besucher heute",
"chart": "Chart",
"table": "Table"
"table": "Table",
"disk-usage" : "Disk Usage"
}

View File

@ -8,5 +8,6 @@
"visits-today": "Visits today",
"unique-visitors-today": "Unique visitors today",
"chart": "Chart",
"table": "Table"
"table": "Table",
"disk-usage" : "Disk Usage"
}

View File

@ -8,5 +8,6 @@
"visits-today": "Visitas de hoy",
"unique-visitors-today": "Visitantes únicos de hoy",
"chart": "Gráfico",
"table": "Tabla"
"table": "Tabla",
"disk-usage" : "Disk Usage"
}

View File

@ -8,5 +8,6 @@
"visits-today": "بازدیدهای امروز",
"unique-visitors-today": "بازدید کنندگان منحصر به فرد امروز",
"chart": "چارت",
"table": "جدول"
"table": "جدول",
"disk-usage" : "Disk Usage"
}

View File

@ -8,5 +8,6 @@
"visits-today": "Visites du jour",
"unique-visitors-today": "Visiteurs uniques du jour",
"chart": "Graphique",
"table": "Tableau"
"table": "Tableau",
"disk-usage" : "Disk Usage"
}

View File

@ -8,5 +8,6 @@
"visits-today": "Visite oggi",
"unique-visitors-today": "Visitatori unici oggi",
"chart": "Grafico",
"table": "Tabella"
"table": "Tabella",
"disk-usage" : "Disk Usage"
}

View File

@ -8,5 +8,6 @@
"visits-today": "Visits today",
"unique-visitors-today": "Unique visitors today",
"chart": "Chart",
"table": "テーブル"
"table": "テーブル",
"disk-usage" : "Disk Usage"
}

View File

@ -8,5 +8,6 @@
"visits-today": "Aantal bezoeken vandaag",
"unique-visitors-today": "Unieke bezoekers vandaag",
"chart": "Grafiek",
"table": "Tabel"
"table": "Tabel",
"disk-usage" : "Disk Usage"
}

View File

@ -8,5 +8,6 @@
"visits-today": "Посещений сегодня",
"unique-visitors-today": "Уникальных посетителей сегодня",
"chart": "Диаграмма",
"table": "Таблица"
"table": "Таблица",
"disk-usage" : "Disk Usage"
}

View File

@ -8,5 +8,6 @@
"visits-today": "Bugün yapılan ziyaretler",
"unique-visitors-today": "Bugün yapılan benzersiz ziyaretler",
"chart": "Grafik",
"table": "Tablo"
"table": "Tablo",
"disk-usage" : "Disk Usage"
}

View File

@ -220,6 +220,11 @@ EOF;
public function renderContentStatistics($data)
{
global $L;
$diskUsage = Filesystem::bytesToHumanFileSize(
Filesystem::getSize(PATH_ROOT)
);
$html = '<div class="my-5 pt-4 border-top">';
$html .= "<h4 class='pb-2'>{$data['title']}</h4>";
$html .= '
@ -237,6 +242,7 @@ EOF;
<table class="table table-borderless table-sm table-striped mt-3">
<tbody>';
$html .= "<tr><th>{$L->get('disk-usage')}</th><td>$diskUsage</td></tr>";
foreach ($data['data'] as $th => $td) {
$html .= "
<tr>

View File

@ -4,6 +4,6 @@
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*
* Version: 5.0.16 (2019-09-24)
* Version: 5.1.3 (2019-12-04)
*/
!function(){"use strict";function n(){}function o(n){return function(){return n}}function t(){return d}var e,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=tinymce.util.Tools.resolve("tinymce.util.Tools"),l=function(n,t,e){var r="UL"===t?"InsertUnorderedList":"InsertOrderedList";n.execCommand(r,!1,!1===e?null:{"list-style-type":e})},i=function(e){e.addCommand("ApplyUnorderedListStyle",function(n,t){l(e,"UL",t["list-style-type"])}),e.addCommand("ApplyOrderedListStyle",function(n,t){l(e,"OL",t["list-style-type"])})},c=function(n){var t=n.getParam("advlist_number_styles","default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman");return t?t.split(/[ ,]/):[]},s=function(n){var t=n.getParam("advlist_bullet_styles","default,circle,square");return t?t.split(/[ ,]/):[]},f=o(!1),a=o(!0),d=(e={fold:function(n,t){return n()},is:f,isSome:f,isNone:a,getOr:m,getOrThunk:p,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:o(null),getOrUndefined:o(undefined),or:m,orThunk:p,map:t,each:n,bind:t,exists:f,forall:a,filter:t,equals:g,equals_:g,toArray:function(){return[]},toString:o("none()")},Object.freeze&&Object.freeze(e),e);function g(n){return n.isNone()}function p(n){return n()}function m(n){return n}function y(n,t,e){var r=function(n,t){for(var e=0;e<n.length;e++){if(t(n[e]))return e}return-1}(t.parents,L),i=-1!==r?t.parents.slice(0,r):t.parents,o=u.grep(i,N(n));return 0<o.length&&o[0].nodeName===e}function O(n,t,e,r,i,o){0<o.length?function(e,n,t,r,i,o){e.ui.registry.addSplitButton(n,{tooltip:t,icon:"OL"===i?"ordered-list":"unordered-list",presets:"listpreview",columns:3,fetch:function(n){n(u.map(o,function(n){return{type:"choiceitem",value:"default"===n?"":n,icon:"list-"+("OL"===i?"num":"bull")+"-"+("disc"===n||"decimal"===n?"default":n),text:function(n){return n.replace(/\-/g," ").replace(/\b\w/g,function(n){return n.toUpperCase()})}(n)}}))},onAction:function(){return e.execCommand(r)},onItemAction:function(n,t){l(e,i,t)},select:function(t){return S(e).map(function(n){return t===n}).getOr(!1)},onSetup:function(t){function n(n){t.setActive(y(e,n,i))}return e.on("NodeChange",n),function(){return e.off("NodeChange",n)}}})}(n,t,e,r,i,o):function(e,n,t,r,i){e.ui.registry.addToggleButton(n,{active:!1,tooltip:t,icon:"OL"===i?"ordered-list":"unordered-list",onSetup:function(t){function n(n){t.setActive(y(e,n,i))}return e.on("NodeChange",n),function(){return e.off("NodeChange",n)}},onAction:function(){return e.execCommand(r)}})}(n,t,e,r,i)}var v=function(e){function n(){return i}function t(n){return n(e)}var r=o(e),i={fold:function(n,t){return t(e)},is:function(n){return e===n},isSome:a,isNone:f,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:n,orThunk:n,map:function(n){return v(n(e))},each:function(n){n(e)},bind:t,exists:t,forall:t,filter:function(n){return n(e)?i:d},toArray:function(){return[e]},toString:function(){return"some("+e+")"},equals:function(n){return n.is(e)},equals_:function(n,t){return n.fold(f,function(n){return t(e,n)})}};return i},h=function(n){return null===n||n===undefined?d:v(n)},L=function(n){return n&&/^(TH|TD)$/.test(n.nodeName)},N=function(t){return function(n){return n&&/^(OL|UL|DL)$/.test(n.nodeName)&&function(n,t){return n.$.contains(n.getBody(),t)}(t,n)}},S=function(n){var t=n.dom.getParent(n.selection.getNode(),"ol,ul"),e=n.dom.getStyle(t,"listStyleType");return h(e)},T=function(n){O(n,"numlist","Numbered list","InsertOrderedList","OL",c(n)),O(n,"bullist","Bullet list","InsertUnorderedList","UL",s(n))};!function b(){r.add("advlist",function(n){var t,e,r;e="lists",r=(t=n).settings.plugins?t.settings.plugins:"",-1!==u.inArray(r.split(/[ ,]/),e)&&(T(n),i(n))})}()}();

View File

@ -4,6 +4,6 @@
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*
* Version: 5.0.16 (2019-09-24)
* Version: 5.1.3 (2019-12-04)
*/
!function(){"use strict";function e(o){return function(t){for(var e=0;e<t.length;e++)(n=t[e]).attr("href")||!n.attr("id")&&!n.attr("name")||n.firstChild||t[e].attr("contenteditable",o);var n}}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=function(t){return/^[A-Za-z][A-Za-z0-9\-:._]*$/.test(t)},o=function(t){var e=t.selection.getNode();return"A"===e.tagName&&""===t.dom.getAttrib(e,"href")?e.getAttribute("id")||e.getAttribute("name"):""},r=function(t,e){var n=t.selection.getNode();"A"===n.tagName&&""===t.dom.getAttrib(n,"href")?(n.removeAttribute("name"),n.id=e,t.undoManager.add()):(t.focus(),t.selection.collapse(!0),t.execCommand("mceInsertContent",!1,t.dom.createHTML("a",{id:e})))},a=function(e){var t=o(e);e.windowManager.open({title:"Anchor",size:"normal",body:{type:"panel",items:[{name:"id",type:"input",label:"ID",placeholder:"example"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{id:t},onSubmit:function(t){!function(t,e){return n(e)?(r(t,e),!1):(t.windowManager.alert("Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores."),!0)}(e,t.getData().id)&&t.close()}})},i=function(t){t.addCommand("mceAnchor",function(){a(t)})},c=function(t){t.on("PreInit",function(){t.parser.addNodeFilter("a",e("false")),t.serializer.addNodeFilter("a",e(null))})},d=function(e){e.ui.registry.addToggleButton("anchor",{icon:"bookmark",tooltip:"Anchor",onAction:function(){return e.execCommand("mceAnchor")},onSetup:function(t){return e.selection.selectorChangedWithUnbind("a:not([href])",t.setActive).unbind}}),e.ui.registry.addMenuItem("anchor",{icon:"bookmark",text:"Anchor...",onAction:function(){return e.execCommand("mceAnchor")}})};!function u(){t.add("anchor",function(t){c(t),i(t),d(t)})}()}();

View File

@ -4,6 +4,6 @@
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*
* Version: 5.0.16 (2019-09-24)
* Version: 5.1.3 (2019-12-04)
*/
!function(){"use strict";function i(t,e){if(e<0&&(e=0),3===t.nodeType){var n=t.data.length;n<e&&(e=n)}return e}function C(t,e,n){1!==e.nodeType||e.hasChildNodes()?t.setStart(e,i(e,n)):t.setStartBefore(e)}function m(t,e,n){1!==e.nodeType||e.hasChildNodes()?t.setEnd(e,i(e,n)):t.setEndAfter(e)}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=tinymce.util.Tools.resolve("tinymce.Env"),y=function(t){return t.getParam("autolink_pattern",/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+\-]+@)(.+)$/i)},k=function(t){return t.getParam("default_link_target",!1)},r=function(t,e,n){var i,o,r,f,a,s,d,c,l,u,g=y(t),h=k(t);if("A"!==t.selection.getNode().tagName){if((i=t.selection.getRng(!0).cloneRange()).startOffset<5){if(!(c=i.endContainer.previousSibling)){if(!i.endContainer.firstChild||!i.endContainer.firstChild.nextSibling)return;c=i.endContainer.firstChild.nextSibling}if(l=c.length,C(i,c,l),m(i,c,l),i.endOffset<5)return;o=i.endOffset,f=c}else{if(3!==(f=i.endContainer).nodeType&&f.firstChild){for(;3!==f.nodeType&&f.firstChild;)f=f.firstChild;3===f.nodeType&&(C(i,f,0),m(i,f,f.nodeValue.length))}o=1===i.endOffset?2:i.endOffset-1-e}for(r=o;C(i,f,2<=o?o-2:0),m(i,f,1<=o?o-1:0),o-=1," "!==(u=i.toString())&&""!==u&&160!==u.charCodeAt(0)&&0<=o-2&&u!==n;);!function(t,e){return t===e||" "===t||160===t.charCodeAt(0)}(i.toString(),n)?(0===i.startOffset?C(i,f,0):C(i,f,o),m(i,f,r)):(C(i,f,o),m(i,f,r),o+=1),"."===(s=i.toString()).charAt(s.length-1)&&m(i,f,r-1),(d=(s=i.toString().trim()).match(g))&&("www."===d[1]?d[1]="http://www.":/@$/.test(d[1])&&!/^mailto:/.test(d[1])&&(d[1]="mailto:"+d[1]),a=t.selection.getBookmark(),t.selection.setRng(i),t.execCommand("createlink",!1,d[1]+d[2]),!1!==h&&t.dom.setAttrib(t.selection.getNode(),"target",h),t.selection.moveToBookmark(a),t.nodeChanged())}},e=function(e){var n;e.on("keydown",function(t){if(13===t.keyCode)return function(t){r(t,-1,"")}(e)}),o.ie&&o.ie<=11?e.on("focus",function(){if(!n){n=!0;try{e.execCommand("AutoUrlDetect",!1,!0)}catch(t){}}}):(e.on("keypress",function(t){if(41===t.keyCode)return function(t){r(t,-1,"(")}(e)}),e.on("keyup",function(t){if(32===t.keyCode)return function(t){r(t,0,"")}(e)}))};!function n(){t.add("autolink",function(t){e(t)})}()}();
!function(){"use strict";function i(t,e){if(e<0&&(e=0),3===t.nodeType){var n=t.data.length;n<e&&(e=n)}return e}function C(t,e,n){1!==e.nodeType||e.hasChildNodes()?t.setStart(e,i(e,n)):t.setStartBefore(e)}function m(t,e,n){1!==e.nodeType||e.hasChildNodes()?t.setEnd(e,i(e,n)):t.setEndAfter(e)}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=tinymce.util.Tools.resolve("tinymce.Env"),y=function(t){return t.getParam("autolink_pattern",/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+\-]+@)(.+)$/i)},k=function(t){return t.getParam("default_link_target",!1)},r=function(t,e,n){var i,o,r,f,a,s,d,c,l,u,g=y(t),h=k(t);if("A"!==t.selection.getNode().tagName){if((i=t.selection.getRng(!0).cloneRange()).startOffset<5){if(!(c=i.endContainer.previousSibling)){if(!i.endContainer.firstChild||!i.endContainer.firstChild.nextSibling)return;c=i.endContainer.firstChild.nextSibling}if(l=c.length,C(i,c,l),m(i,c,l),i.endOffset<5)return;o=i.endOffset,f=c}else{if(3!==(f=i.endContainer).nodeType&&f.firstChild){for(;3!==f.nodeType&&f.firstChild;)f=f.firstChild;3===f.nodeType&&(C(i,f,0),m(i,f,f.nodeValue.length))}o=1===i.endOffset?2:i.endOffset-1-e}for(r=o;C(i,f,2<=o?o-2:0),m(i,f,1<=o?o-1:0),o-=1," "!==(u=i.toString())&&""!==u&&160!==u.charCodeAt(0)&&0<=o-2&&u!==n;);!function(t,e){return t===e||" "===t||160===t.charCodeAt(0)}(i.toString(),n)?(0===i.startOffset?C(i,f,0):C(i,f,o),m(i,f,r)):(C(i,f,o),m(i,f,r),o+=1),"."===(s=i.toString()).charAt(s.length-1)&&m(i,f,r-1),(d=(s=i.toString().trim()).match(g))&&("www."===d[1]?d[1]="http://www.":/@$/.test(d[1])&&!/^mailto:/.test(d[1])&&(d[1]="mailto:"+d[1]),a=t.selection.getBookmark(),t.selection.setRng(i),t.execCommand("createlink",!1,d[1]+d[2]),!1!==h&&t.dom.setAttrib(t.selection.getNode(),"target",h),t.selection.moveToBookmark(a),t.nodeChanged())}},e=function(e){var n;e.on("keydown",function(t){if(13===t.keyCode)return function(t){r(t,-1,"")}(e)}),o.browser.isIE()?e.on("focus",function(){if(!n){n=!0;try{e.execCommand("AutoUrlDetect",!1,!0)}catch(t){}}}):(e.on("keypress",function(t){if(41===t.keyCode)return function(t){r(t,-1,"(")}(e)}),e.on("keyup",function(t){if(32===t.keyCode)return function(t){r(t,0,"")}(e)}))};!function n(){t.add("autolink",function(t){e(t)})}()}();

View File

@ -4,6 +4,6 @@
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*
* Version: 5.0.16 (2019-09-24)
* Version: 5.1.3 (2019-12-04)
*/
!function(){"use strict";function m(e,t){var n=e.getBody();n&&(n.style.overflowY=t?"":"hidden",t||(n.scrollTop=0))}function d(e,t,n,i){var o=parseInt(e.getStyle(t,n,i),10);return isNaN(o)?0:o}var i=function(e){function t(){return n}var n=e;return{get:t,set:function(e){n=e},clone:function(){return i(t())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),h=tinymce.util.Tools.resolve("tinymce.Env"),r=tinymce.util.Tools.resolve("tinymce.util.Delay"),v=function(e){return e.fire("ResizeEditor")},y=function(e){return e.getParam("min_height",e.getElement().offsetHeight,"number")},p=function(e){return e.getParam("max_height",0,"number")},o=function(e){return e.getParam("autoresize_overflow_padding",1,"number")},z=function(e){return e.getParam("autoresize_bottom_margin",50,"number")},u=function(e){return e.getParam("autoresize_on_init",!0,"boolean")},a=function(e,t,n,i,o){r.setEditorTimeout(e,function(){C(e,t),n--?a(e,t,n,i,o):o&&o()},i)},C=function(e,t){var n,i,o,r=e.dom,u=e.getDoc();if(u)if(function(e){return e.plugins.fullscreen&&e.plugins.fullscreen.isFullscreen()}(e))m(e,!0);else{var a=u.documentElement,s=z(e);i=y(e);var f=d(r,a,"margin-top",!0),c=d(r,a,"margin-bottom",!0);(o=a.offsetHeight+f+c+s)<0&&(o=0);var g=e.getContainer().offsetHeight-e.getContentAreaContainer().offsetHeight;o+g>y(e)&&(i=o+g);var l=p(e);l&&l<i?(i=l,m(e,!0)):m(e,!1),i!==t.get()&&(n=i-t.get(),r.setStyle(e.getContainer(),"height",i+"px"),t.set(i),v(e),h.webkit&&n<0&&C(e,t))}},n={setup:function(t,n){t.on("init",function(){var e=o(t);t.dom.setStyles(t.getBody(),{paddingLeft:e,paddingRight:e,"min-height":0})}),t.on("NodeChange SetContent keyup FullscreenStateChanged ResizeContent",function(e){C(t,n)}),u(t)&&t.on("init",function(){a(t,n,20,100,function(){a(t,n,5,1e3)})})},resize:C},s=function(e,t){e.addCommand("mceAutoResize",function(){n.resize(e,t)})};!function t(){e.add("autoresize",function(e){if(e.settings.hasOwnProperty("resize")||(e.settings.resize=!1),!e.inline){var t=i(0);s(e,t),n.setup(e,t)}})}()}();
!function(){"use strict";function d(e,t){var n=e.getBody();n&&(n.style.overflowY=t?"":"hidden",t||(n.scrollTop=0))}function h(e,t,n,i){var o=parseInt(e.getStyle(t,n,i),10);return isNaN(o)?0:o}var i=function(e){function t(){return n}var n=e;return{get:t,set:function(e){n=e},clone:function(){return i(t())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),v=tinymce.util.Tools.resolve("tinymce.Env"),r=tinymce.util.Tools.resolve("tinymce.util.Delay"),p=function(e){return e.fire("ResizeEditor")},y=function(e){return e.getParam("min_height",e.getElement().offsetHeight,"number")},z=function(e){return e.getParam("max_height",0,"number")},n=function(e){return e.getParam("autoresize_overflow_padding",1,"number")},b=function(e){return e.getParam("autoresize_bottom_margin",50,"number")},o=function(e){return e.getParam("autoresize_on_init",!0,"boolean")},u=function(e,t,n,i,o){r.setEditorTimeout(e,function(){C(e,t),n--?u(e,t,n,i,o):o&&o()},i)},C=function(e,t){var n,i,o,r=e.dom,u=e.getDoc();if(u)if(function(e){return e.plugins.fullscreen&&e.plugins.fullscreen.isFullscreen()}(e))d(e,!0);else{var s=u.documentElement,a=b(e);i=y(e);var f=h(r,s,"margin-top",!0),c=h(r,s,"margin-bottom",!0);(o=s.offsetHeight+f+c+a)<0&&(o=0);var g=e.getContainer().offsetHeight-e.getContentAreaContainer().offsetHeight;o+g>y(e)&&(i=o+g);var l=z(e);if(l&&l<i?(i=l,d(e,!0)):d(e,!1),i!==t.get()){if(n=i-t.get(),r.setStyle(e.getContainer(),"height",i+"px"),t.set(i),p(e),v.browser.isSafari()&&v.mac){var m=e.getWin();m.scrollTo(m.pageXOffset,m.pageYOffset)}e.hasFocus()&&e.selection.scrollIntoView(e.selection.getNode()),v.webkit&&n<0&&C(e,t)}}},s={setup:function(t,e){t.on("init",function(){var e=n(t);t.dom.setStyles(t.getBody(),{paddingLeft:e,paddingRight:e,"min-height":0})}),t.on("NodeChange SetContent keyup FullscreenStateChanged ResizeContent",function(){C(t,e)}),o(t)&&t.on("init",function(){u(t,e,20,100,function(){u(t,e,5,1e3)})})},resize:C},a=function(e,t){e.addCommand("mceAutoResize",function(){s.resize(e,t)})};!function t(){e.add("autoresize",function(e){if(e.settings.hasOwnProperty("resize")||(e.settings.resize=!1),!e.inline){var t=i(0);a(e,t),s.setup(e,t)}})}()}();

View File

@ -4,6 +4,6 @@
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*
* Version: 5.0.16 (2019-09-24)
* Version: 5.1.3 (2019-12-04)
*/
!function(n){"use strict";function r(t,e){var n=t||e,r=/^(\d+)([ms]?)$/.exec(""+n);return(r[2]?{s:1e3,m:6e4}[r[2]]:1)*parseInt(n,10)}function o(t){var e=t.getParam("autosave_prefix","tinymce-autosave-{path}{query}{hash}-{id}-");return e=(e=(e=(e=e.replace(/\{path\}/g,n.document.location.pathname)).replace(/\{query\}/g,n.document.location.search)).replace(/\{hash\}/g,n.document.location.hash)).replace(/\{id\}/g,t.id)}function a(t,e){var n=t.settings.forced_root_block;return""===(e=d.trim(void 0===e?t.getBody().innerHTML:e))||new RegExp("^<"+n+"[^>]*>((\xa0|&nbsp;|[ \t]|<br[^>]*>)+?|)</"+n+">|<br>$","i").test(e)}function i(t){var e=parseInt(v.getItem(o(t)+"time"),10)||0;return!((new Date).getTime()-e>function(t){return r(t.settings.autosave_retention,"20m")}(t))||(g(t,!1),!1)}function u(t){var e=o(t);!a(t)&&t.isDirty()&&(v.setItem(e+"draft",t.getContent({format:"raw",no_events:!0})),v.setItem(e+"time",(new Date).getTime().toString()),function(t){t.fire("StoreDraft")}(t))}function s(t){var e=o(t);i(t)&&(t.setContent(v.getItem(e+"draft"),{format:"raw"}),function(t){t.fire("RestoreDraft")}(t))}function c(t,e){var n=function(t){return r(t.settings.autosave_interval,"30s")}(t);e.get()||(m.setInterval(function(){t.removed||u(t)},n),e.set(!0))}function f(t){t.undoManager.transact(function(){s(t),g(t)}),t.focus()}var l=function(t){function e(){return n}var n=t;return{get:e,set:function(t){n=t},clone:function(){return l(e())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),m=tinymce.util.Tools.resolve("tinymce.util.Delay"),v=tinymce.util.Tools.resolve("tinymce.util.LocalStorage"),d=tinymce.util.Tools.resolve("tinymce.util.Tools"),g=function(t,e){var n=o(t);v.removeItem(n+"draft"),v.removeItem(n+"time"),!1!==e&&function(t){t.fire("RemoveDraft")}(t)};function y(r){for(var o=[],t=1;t<arguments.length;t++)o[t-1]=arguments[t];return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=o.concat(t);return r.apply(null,n)}}function p(n,t){return function(t){t.setDisabled(!i(n));function e(){return t.setDisabled(!i(n))}return n.on("StoreDraft RestoreDraft RemoveDraft",e),function(){return n.off("StoreDraft RestoreDraft RemoveDraft",e)}}}var D=tinymce.util.Tools.resolve("tinymce.EditorManager");!function e(){t.add("autosave",function(t){var e=l(!1);return function(t){t.editorManager.on("BeforeUnload",function(t){var e;d.each(D.get(),function(t){t.plugins.autosave&&t.plugins.autosave.storeDraft(),!e&&t.isDirty()&&function(t){return t.getParam("autosave_ask_before_unload",!0)}(t)&&(e=t.translate("You have unsaved changes are you sure you want to navigate away?"))}),e&&(t.preventDefault(),t.returnValue=e)})}(t),function(t,e){c(t,e),t.ui.registry.addButton("restoredraft",{tooltip:"Restore last draft",icon:"restore-draft",onAction:function(){f(t)},onSetup:p(t)}),t.ui.registry.addMenuItem("restoredraft",{text:"Restore last draft",icon:"restore-draft",onAction:function(){f(t)},onSetup:p(t)})}(t,e),t.on("init",function(){(function(t){return t.getParam("autosave_restore_when_empty",!1)})(t)&&t.dom.isEmpty(t.getBody())&&s(t)}),function(t){return{hasDraft:y(i,t),storeDraft:y(u,t),restoreDraft:y(s,t),removeDraft:y(g,t),isEmpty:y(a,t)}}(t)})}()}(window);

View File

@ -4,6 +4,6 @@
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*
* Version: 5.0.16 (2019-09-24)
* Version: 5.1.3 (2019-12-04)
*/
!function(){"use strict";var o=tinymce.util.Tools.resolve("tinymce.PluginManager"),e=tinymce.util.Tools.resolve("tinymce.util.Tools"),t=function(t){t=e.trim(t);function o(o,e){t=t.replace(o,e)}return o(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]"),o(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),o(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),o(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),o(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),o(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]"),o(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]"),o(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]"),o(/<font>(.*?)<\/font>/gi,"$1"),o(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]"),o(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]"),o(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]"),o(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"),o(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"),o(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"),o(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"),o(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"),o(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"),o(/<\/(strong|b)>/gi,"[/b]"),o(/<(strong|b)>/gi,"[b]"),o(/<\/(em|i)>/gi,"[/i]"),o(/<(em|i)>/gi,"[i]"),o(/<\/u>/gi,"[/u]"),o(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]"),o(/<u>/gi,"[u]"),o(/<blockquote[^>]*>/gi,"[quote]"),o(/<\/blockquote>/gi,"[/quote]"),o(/<br \/>/gi,"\n"),o(/<br\/>/gi,"\n"),o(/<br>/gi,"\n"),o(/<p>/gi,""),o(/<\/p>/gi,"\n"),o(/&nbsp;|\u00a0/gi," "),o(/&quot;/gi,'"'),o(/&lt;/gi,"<"),o(/&gt;/gi,">"),o(/&amp;/gi,"&"),t},i=function(t){t=e.trim(t);function o(o,e){t=t.replace(o,e)}return o(/\n/gi,"<br />"),o(/\[b\]/gi,"<strong>"),o(/\[\/b\]/gi,"</strong>"),o(/\[i\]/gi,"<em>"),o(/\[\/i\]/gi,"</em>"),o(/\[u\]/gi,"<u>"),o(/\[\/u\]/gi,"</u>"),o(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'<a href="$1">$2</a>'),o(/\[url\](.*?)\[\/url\]/gi,'<a href="$1">$1</a>'),o(/\[img\](.*?)\[\/img\]/gi,'<img src="$1" />'),o(/\[color=(.*?)\](.*?)\[\/color\]/gi,'<font color="$1">$2</font>'),o(/\[code\](.*?)\[\/code\]/gi,'<span class="codeStyle">$1</span>&nbsp;'),o(/\[quote.*?\](.*?)\[\/quote\]/gi,'<span class="quoteStyle">$1</span>&nbsp;'),t};!function n(){o.add("bbcode",function(o){o.on("BeforeSetContent",function(o){o.content=i(o.content)}),o.on("PostProcess",function(o){o.set&&(o.content=i(o.content)),o.get&&(o.content=t(o.content))})})}()}();

File diff suppressed because one or more lines are too long

View File

@ -4,6 +4,6 @@
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*
* Version: 5.0.16 (2019-09-24)
* Version: 5.1.3 (2019-12-04)
*/
!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(e,n){e.focus(),e.undoManager.transact(function(){e.setContent(n)}),e.selection.setCursorLocation(),e.nodeChanged()},o=function(e){return e.getContent({source_view:!0})},n=function(n){var e=o(n);n.windowManager.open({title:"Source Code",size:"large",body:{type:"panel",items:[{type:"textarea",name:"code"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{code:e},onSubmit:function(e){t(n,e.getData().code),e.close()}})},c=function(e){e.addCommand("mceCodeEditor",function(){n(e)})},i=function(e){e.ui.registry.addButton("code",{icon:"sourcecode",tooltip:"Source code",onAction:function(){return n(e)}}),e.ui.registry.addMenuItem("code",{icon:"sourcecode",text:"Source code",onAction:function(){return n(e)}})};!function u(){e.add("code",function(e){return c(e),i(e),{}})}()}();

File diff suppressed because one or more lines are too long

View File

@ -4,6 +4,6 @@
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*
* Version: 5.0.16 (2019-09-24)
* Version: 5.1.3 (2019-12-04)
*/
!function(o){"use strict";var i=tinymce.util.Tools.resolve("tinymce.PluginManager");!function n(){i.add("colorpicker",function(){o.console.warn("Color picker plugin is now built in to the core editor, please remove it from your editor configuration")})}()}(window);

View File

@ -4,6 +4,6 @@
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*
* Version: 5.0.16 (2019-09-24)
* Version: 5.1.3 (2019-12-04)
*/
!function(n){"use strict";var o=tinymce.util.Tools.resolve("tinymce.PluginManager");!function e(){o.add("contextmenu",function(){n.console.warn("Context menu plugin is now built in to the core editor, please remove it from your editor configuration")})}()}(window);

View File

@ -4,6 +4,6 @@
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*
* Version: 5.0.16 (2019-09-24)
* Version: 5.1.3 (2019-12-04)
*/
!function(i){"use strict";function n(){}function u(n){return function(){return n}}function t(){return a}var e,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=tinymce.util.Tools.resolve("tinymce.util.Tools"),o=function(n,t){var e,r=n.dom,o=n.selection.getSelectedBlocks();o.length&&(e=r.getAttrib(o[0],"dir"),c.each(o,function(n){r.getParent(n.parentNode,'*[dir="'+t+'"]',r.getRoot())||r.setAttrib(n,"dir",e!==t?t:null)}),n.nodeChanged())},d=function(n){n.addCommand("mceDirectionLTR",function(){o(n,"ltr")}),n.addCommand("mceDirectionRTL",function(){o(n,"rtl")})},f=u(!1),l=u(!0),a=(e={fold:function(n,t){return n()},is:f,isSome:f,isNone:l,getOr:s,getOrThunk:N,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:u(null),getOrUndefined:u(undefined),or:s,orThunk:N,map:t,each:n,bind:t,exists:f,forall:l,filter:t,equals:m,equals_:m,toArray:function(){return[]},toString:u("none()")},Object.freeze&&Object.freeze(e),e);function m(n){return n.isNone()}function N(n){return n()}function s(n){return n}function g(n,t){var e=n.dom(),r=i.window.getComputedStyle(e).getPropertyValue(t),o=""!==r||function(n){var t=A(n)?n.dom().parentNode:n.dom();return t!==undefined&&null!==t&&t.ownerDocument.body.contains(t)}(n)?r:w(e,t);return null===o?undefined:o}function T(t,r){return function(e){function n(n){var t=p.fromDom(n.element);e.setActive(function(n){return"rtl"===g(n,"direction")?"rtl":"ltr"}(t)===r)}return t.on("NodeChange",n),function(){return t.off("NodeChange",n)}}}var E,O,y=function(e){function n(){return o}function t(n){return n(e)}var r=u(e),o={fold:function(n,t){return t(e)},is:function(n){return e===n},isSome:l,isNone:f,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:n,orThunk:n,map:function(n){return y(n(e))},each:function(n){n(e)},bind:t,exists:t,forall:t,filter:function(n){return n(e)?o:a},toArray:function(){return[e]},toString:function(){return"some("+e+")"},equals:function(n){return n.is(e)},equals_:function(n,t){return n.fold(f,function(n){return t(e,n)})}};return o},D=function(n){return null===n||n===undefined?a:y(n)},h=function(n){if(null===n||n===undefined)throw new Error("Node cannot be null or undefined");return{dom:u(n)}},p={fromHtml:function(n,t){var e=(t||i.document).createElement("div");if(e.innerHTML=n,!e.hasChildNodes()||1<e.childNodes.length)throw i.console.error("HTML does not have a single root node",n),new Error("HTML must have a single root node");return h(e.childNodes[0])},fromTag:function(n,t){var e=(t||i.document).createElement(n);return h(e)},fromText:function(n,t){var e=(t||i.document).createTextNode(n);return h(e)},fromDom:h,fromPoint:function(n,t,e){var r=n.dom();return D(r.elementFromPoint(t,e)).map(h)}},_=(E="function",function(n){return function(n){if(null===n)return"null";var t=typeof n;return"object"==t&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":t}(n)===E}),v=Array.prototype.slice,C=(_(Array.from)&&Array.from,i.Node.ATTRIBUTE_NODE,i.Node.CDATA_SECTION_NODE,i.Node.COMMENT_NODE,i.Node.DOCUMENT_NODE,i.Node.DOCUMENT_TYPE_NODE,i.Node.DOCUMENT_FRAGMENT_NODE,i.Node.ELEMENT_NODE,i.Node.TEXT_NODE),A=(i.Node.PROCESSING_INSTRUCTION_NODE,i.Node.ENTITY_REFERENCE_NODE,i.Node.ENTITY_NODE,i.Node.NOTATION_NODE,"undefined"!=typeof i.window?i.window:Function("return this;")(),O=C,function(n){return function(n){return n.dom().nodeType}(n)===O}),w=function(n,t){return function(n){return n.style!==undefined&&_(n.style.getPropertyValue)}(n)?n.style.getPropertyValue(t):""},S=function(n){n.ui.registry.addToggleButton("ltr",{tooltip:"Left to right",icon:"ltr",onAction:function(){return n.execCommand("mceDirectionLTR")},onSetup:T(n,"ltr")}),n.ui.registry.addToggleButton("rtl",{tooltip:"Right to left",icon:"rtl",onAction:function(){return n.execCommand("mceDirectionRTL")},onSetup:T(n,"rtl")})};!function R(){r.add("directionality",function(n){d(n),S(n)})}()}(window);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -4,6 +4,6 @@
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*
* Version: 5.0.16 (2019-09-24)
* Version: 5.1.3 (2019-12-04)
*/
!function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=function(n){n.addCommand("InsertHorizontalRule",function(){n.execCommand("mceInsertContent",!1,"<hr />")})},t=function(n){n.ui.registry.addButton("hr",{icon:"horizontal-rule",tooltip:"Horizontal line",onAction:function(){return n.execCommand("InsertHorizontalRule")}}),n.ui.registry.addMenuItem("hr",{icon:"horizontal-rule",text:"Horizontal line",onAction:function(){return n.execCommand("InsertHorizontalRule")}})};!function e(){n.add("hr",function(n){o(n),t(n)})}()}();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -4,6 +4,6 @@
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*
* Version: 5.0.16 (2019-09-24)
* Version: 5.1.3 (2019-12-04)
*/
!function(){"use strict";function t(){}function n(t){return function(){return t}}function e(){return h}var r,o=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),f=tinymce.util.Tools.resolve("tinymce.EditorManager"),l=tinymce.util.Tools.resolve("tinymce.Env"),m=tinymce.util.Tools.resolve("tinymce.util.Tools"),c=function(t){return t.getParam("importcss_merge_classes")},i=function(t){return t.getParam("importcss_exclusive")},p=function(t){return t.getParam("importcss_selector_converter")},g=function(t){return t.getParam("importcss_selector_filter")},y=function(t){return t.getParam("importcss_groups")},v=function(t){return t.getParam("importcss_append")},d=function(t){return t.getParam("importcss_file_filter")},u=n(!1),s=n(!0),h=(r={fold:function(t,n){return t()},is:u,isSome:u,isNone:s,getOr:O,getOrThunk:x,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:n(null),getOrUndefined:n(undefined),or:O,orThunk:x,map:e,each:t,bind:e,exists:u,forall:s,filter:e,equals:_,equals_:_,toArray:function(){return[]},toString:n("none()")},Object.freeze&&Object.freeze(r),r);function _(t){return t.isNone()}function x(t){return t()}function O(t){return t}function T(n){return function(t){return function(t){if(null===t)return"null";var n=typeof t;return"object"==n&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":n}(t)===n}}function b(t,n){return function(t){for(var n=[],e=0,r=t.length;e<r;++e){if(!w(t[e]))throw new Error("Arr.flatten item "+e+" was not an array, input: "+t);M.apply(n,t[e])}return n}(function(t,n){for(var e=t.length,r=new Array(e),o=0;o<e;o++){var i=t[o];r[o]=n(i,o)}return r}(t,n))}function k(n){return"string"==typeof n?function(t){return-1!==t.indexOf(n)}:n instanceof RegExp?function(t){return n.test(t)}:n}function S(i,t,u){var c=[],e={};function s(t,n){var e,r=t.href;if((r=function(t){var n=l.cacheSuffix;return"string"==typeof t&&(t=t.replace("?"+n,"").replace("&"+n,"")),t}(r))&&u(r,n)&&!function(t,n){var e=t.settings,r=!1!==e.skin&&(e.skin||"oxide");if(r){var o=e.skin_url?t.documentBaseURI.toAbsolute(e.skin_url):f.baseURL+"/skins/ui/"+r,i=f.baseURL+"/skins/content/";return n===o+"/content"+(t.inline?".inline":"")+".min.css"||-1!==n.indexOf(i)}return!1}(i,r)){m.each(t.imports,function(t){s(t,!0)});try{e=t.cssRules||t.rules}catch(o){}m.each(e,function(t){t.styleSheet?s(t.styleSheet,!0):t.selectorText&&m.each(t.selectorText.split(","),function(t){c.push(m.trim(t))})})}}m.each(i.contentCSS,function(t){e[t]=!0}),u=u||function(t,n){return n||e[t]};try{m.each(t.styleSheets,function(t){s(t)})}catch(n){}return c}function A(t,n){var e,r=/^(?:([a-z0-9\-_]+))?(\.[a-z0-9_\-\.]+)$/i.exec(n);if(r){var o=r[1],i=r[2].substr(1).split(".").join(" "),u=m.makeMap("a,img");return r[1]?(e={title:n},t.schema.getTextBlockElements()[o]?e.block=o:t.schema.getBlockElements()[o]||u[o.toLowerCase()]?e.selector=o:e.inline=o):r[2]&&(e={inline:"span",title:n.substr(1),classes:i}),!1!==c(t)?e.classes=i:e.attributes={"class":i},e}}function P(t,n){return null===n||!1!==i(t)}var w=T("array"),E=T("function"),I=Array.prototype.slice,M=Array.prototype.push,j=(E(Array.from)&&Array.from,A),D=function(s){s.on("init",function(t){function r(t,n){if(function(t,n,e,r){return!(P(t,e)?n in r:n in e.selectors)}(s,t,n,i)){!function(t,n,e,r){P(t,e)?r[n]=!0:e.selectors[n]=!0}(s,t,n,i);var e=function(t,n,e,r){return(r&&r.selector_converter?r.selector_converter:p(t)?p(t):function(){return A(t,e)}).call(n,e,r)}(s,s.plugins.importcss,t,n);if(e){var r=e.name||a.DOM.uniqueId();return s.formatter.register(r,e),m.extend({},{title:e.title,format:r})}}return null}var o=function(){var n=[],e=[],r={};return{addItemToGroup:function(t,n){r[t]?r[t].push(n):(e.push(t),r[t]=[n])},addItem:function(t){n.push(t)},toFormats:function(){return b(e,function(t){var n=r[t];return 0===n.length?[]:[{title:t,items:n}]}).concat(n)}}}(),i={},u=k(g(s)),c=function(t){return m.map(t,function(t){return m.extend({},t,{original:t,selectors:{},filter:k(t.filter),item:{text:t.title,menu:[]}})})}(y(s));m.each(S(s,s.getDoc(),k(d(s))),function(e){if(-1===e.indexOf(".mce-")&&(!u||u(e))){var t=function(t,n){return m.grep(t,function(t){return!t.filter||t.filter(n)})}(c,e);if(0<t.length)m.each(t,function(t){var n=r(e,t);n&&o.addItemToGroup(t.title,n)});else{var n=r(e,null);n&&o.addItem(n)}}});var n=o.toFormats();s.fire("addStyleModifications",{items:n,replace:!v(s)})})},R=function(n){return{convertSelectorToFormat:function(t){return j(n,t)}}};!function U(){o.add("importcss",function(t){return D(t),R(t)})}()}();

View File

@ -4,6 +4,6 @@
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*
* Version: 5.0.16 (2019-09-24)
* Version: 5.1.3 (2019-12-04)
*/
!function(){"use strict";function n(e){return e.getParam("insertdatetime_timeformat",e.translate("%H:%M:%S"))}function r(e){return e.getParam("insertdatetime_formats",["%H:%M:%S","%Y-%m-%d","%I:%M:%S %p","%D"])}function a(e,t){if((e=""+e).length<t)for(var n=0;n<t-e.length;n++)e="0"+e;return e}function i(e,t,n){return n=n||new Date,t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=t.replace("%D","%m/%d/%Y")).replace("%r","%I:%M:%S %p")).replace("%Y",""+n.getFullYear())).replace("%y",""+n.getYear())).replace("%m",a(n.getMonth()+1,2))).replace("%d",a(n.getDate(),2))).replace("%H",""+a(n.getHours(),2))).replace("%M",""+a(n.getMinutes(),2))).replace("%S",""+a(n.getSeconds(),2))).replace("%I",""+((n.getHours()+11)%12+1))).replace("%p",n.getHours()<12?"AM":"PM")).replace("%B",""+e.translate(f[n.getMonth()]))).replace("%b",""+e.translate(d[n.getMonth()]))).replace("%A",""+e.translate(s[n.getDay()]))).replace("%a",""+e.translate(l[n.getDay()]))).replace("%%","%")}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(e){return e.getParam("insertdatetime_dateformat",e.translate("%Y-%m-%d"))},o=n,u=r,c=function(e){var t=r(e);return 0<t.length?t[0]:n(e)},m=function(e){return e.getParam("insertdatetime_element",!1)},l="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),s="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),d="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),f="January February March April May June July August September October November December".split(" "),p=function(e,t){if(m(e)){var n=i(e,t),r=void 0;r=/%[HMSIp]/.test(t)?i(e,"%Y-%m-%dT%H:%M"):i(e,"%Y-%m-%d");var a=e.dom.getParent(e.selection.getStart(),"time");a?function(e,t,n,r){var a=e.dom.create("time",{datetime:n},r);t.parentNode.insertBefore(a,t),e.dom.remove(t),e.selection.select(a,!0),e.selection.collapse(!1)}(e,a,r,n):e.insertContent('<time datetime="'+r+'">'+n+"</time>")}else e.insertContent(i(e,t))},g=i,y=function(e){e.addCommand("mceInsertDate",function(){p(e,t(e))}),e.addCommand("mceInsertTime",function(){p(e,o(e))})},M=tinymce.util.Tools.resolve("tinymce.util.Tools"),S=function(e){function t(){return n}var n=e;return{get:t,set:function(e){n=e},clone:function(){return S(t())}}},v=function(n){var t=u(n),r=S(c(n));n.ui.registry.addSplitButton("insertdatetime",{icon:"insert-time",tooltip:"Insert date/time",select:function(e){return e===r.get()},fetch:function(e){e(M.map(t,function(e){return{type:"choiceitem",text:g(n,e),value:e}}))},onAction:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];p(n,r.get())},onItemAction:function(e,t){r.set(t),p(n,t)}});n.ui.registry.addNestedMenuItem("insertdatetime",{icon:"insert-time",text:"Date/time",getSubmenuItems:function(){return M.map(t,function(e){return{type:"menuitem",text:g(n,e),onAction:function(e){return function(){r.set(e),p(n,e)}}(e)}})}})};!function h(){e.add("insertdatetime",function(e){y(e),v(e)})}()}();

View File

@ -4,6 +4,6 @@
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*
* Version: 5.0.16 (2019-09-24)
* Version: 5.1.3 (2019-12-04)
*/
!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=tinymce.util.Tools.resolve("tinymce.util.Tools"),t=function(e){return e.getParam("font_formats")},i=function(e){return e.getParam("fontsize_formats")},n=function(e,t){e.settings.fontsize_formats=t},l=function(e,t){e.settings.font_formats=t},s=function(e){return e.getParam("font_size_style_values","xx-small,x-small,small,medium,large,x-large,xx-large")},o=function(e,t){e.settings.inline_styles=t},r=function(e){!function(e){o(e,!1),i(e)||n(e,"8pt=1 10pt=2 12pt=3 14pt=4 18pt=5 24pt=6 36pt=7"),t(e)||l(e,"Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats")}(e),e.on("init",function(){return function(e){var t="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table",i=a.explode(s(e)),n=e.schema;e.formatter.register({alignleft:{selector:t,attributes:{align:"left"}},aligncenter:{selector:t,attributes:{align:"center"}},alignright:{selector:t,attributes:{align:"right"}},alignjustify:{selector:t,attributes:{align:"justify"}},bold:[{inline:"b",remove:"all"},{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}}],italic:[{inline:"i",remove:"all"},{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}}],underline:[{inline:"u",remove:"all"},{inline:"span",styles:{textDecoration:"underline"},exact:!0}],strikethrough:[{inline:"strike",remove:"all"},{inline:"span",styles:{textDecoration:"line-through"},exact:!0}],fontname:{inline:"font",toggle:!1,attributes:{face:"%value"}},fontsize:{inline:"font",toggle:!1,attributes:{size:function(e){return a.inArray(i,e.value)+1}}},forecolor:{inline:"font",attributes:{color:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0}}),a.each("b,i,u,strike".split(","),function(e){n.addValidElements(e+"[*]")}),n.getElementRule("font")||n.addValidElements("font[face|size|color|style]"),a.each(t.split(","),function(e){var t=n.getElementRule(e);t&&(t.attributes.align||(t.attributes.align={},t.attributesOrder.push("align")))})}(e)})};!function c(){e.add("legacyoutput",function(e){r(e)})}()}();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -4,6 +4,6 @@
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*
* Version: 5.0.16 (2019-09-24)
* Version: 5.1.3 (2019-12-04)
*/
!function(){"use strict";function o(n,e){for(var t="",o=0;o<e;o++)t+=n;return t}var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(n){var e=n.getParam("nonbreaking_force_tab",0);return"boolean"==typeof e?!0===e?3:0:e},a=function(n){return n.getParam("nonbreaking_wrap",!0,"boolean")},r=function(n,e){var t=a(n)||n.plugins.visualchars?'<span class="'+(function(n){return!!n.plugins.visualchars&&n.plugins.visualchars.isEnabled()}(n)?"mce-nbsp-wrap mce-nbsp":"mce-nbsp-wrap")+'" contenteditable="false">'+o("&nbsp;",e)+"</span>":o("&nbsp;",e);n.undoManager.transact(function(){return n.insertContent(t)})},e=function(n){n.addCommand("mceNonBreaking",function(){r(n,1)})},c=tinymce.util.Tools.resolve("tinymce.util.VK"),t=function(e){var t=i(e);0<t&&e.on("keydown",function(n){if(n.keyCode===c.TAB&&!n.isDefaultPrevented()){if(n.shiftKey)return;n.preventDefault(),n.stopImmediatePropagation(),r(e,t)}})},u=function(n){n.ui.registry.addButton("nonbreaking",{icon:"non-breaking",tooltip:"Nonbreaking space",onAction:function(){return n.execCommand("mceNonBreaking")}}),n.ui.registry.addMenuItem("nonbreaking",{icon:"non-breaking",text:"Nonbreaking space",onAction:function(){return n.execCommand("mceNonBreaking")}})};!function s(){n.add("nonbreaking",function(n){e(n),u(n),t(n)})}()}();

View File

@ -4,6 +4,6 @@
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*
* Version: 5.0.16 (2019-09-24)
* Version: 5.1.3 (2019-12-04)
*/
!function(){"use strict";function c(n){return function(t){return-1!==(" "+t.attr("class")+" ").indexOf(n)}}function l(i,o,c){return function(t){var n=arguments,e=n[n.length-2],r=0<e?o.charAt(e-1):"";if('"'===r)return t;if(">"===r){var a=o.lastIndexOf("<",e);if(-1!==a)if(-1!==o.substring(a,e).indexOf('contenteditable="false"'))return t}return'<span class="'+c+'" data-mce-content="'+i.dom.encode(n[0])+'">'+i.dom.encode("string"==typeof n[1]?n[1]:n[0])+"</span>"}}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=tinymce.util.Tools.resolve("tinymce.util.Tools"),f=function(t){return t.getParam("noneditable_noneditable_class","mceNonEditable")},s=function(t){return t.getParam("noneditable_editable_class","mceEditable")},d=function(t){var n=t.getParam("noneditable_regexp",[]);return n&&n.constructor===RegExp?[n]:n},n=function(n){var t,e,r="contenteditable";t=" "+u.trim(s(n))+" ",e=" "+u.trim(f(n))+" ";var a=c(t),i=c(e),o=d(n);n.on("PreInit",function(){0<o.length&&n.on("BeforeSetContent",function(t){!function(t,n,e){var r=n.length,a=e.content;if("raw"!==e.format){for(;r--;)a=a.replace(n[r],l(t,a,f(t)));e.content=a}}(n,o,t)}),n.parser.addAttributeFilter("class",function(t){for(var n,e=t.length;e--;)n=t[e],a(n)?n.attr(r,"true"):i(n)&&n.attr(r,"false")}),n.serializer.addAttributeFilter(r,function(t){for(var n,e=t.length;e--;)n=t[e],(a(n)||i(n))&&(0<o.length&&n.attr("data-mce-content")?(n.name="#text",n.type=3,n.raw=!0,n.value=n.attr("data-mce-content")):n.attr(r,null))})})};!function e(){t.add("noneditable",function(t){n(t)})}()}();

View File

@ -4,6 +4,6 @@
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*
* Version: 5.0.16 (2019-09-24)
* Version: 5.1.3 (2019-12-04)
*/
!function(){"use strict";function e(){return"mce-pagebreak"}function a(){return'<img src="'+t.transparentSrc+'" class="mce-pagebreak" data-mce-resize="false" data-mce-placeholder />'}var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.Env"),r=function(e){return e.getParam("pagebreak_separator","\x3c!-- pagebreak --\x3e")},i=function(e){return e.getParam("pagebreak_split_block",!1)},o=function(o){var c=r(o),n=new RegExp(c.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(e){return"\\"+e}),"gi");o.on("BeforeSetContent",function(e){e.content=e.content.replace(n,a())}),o.on("PreInit",function(){o.serializer.addNodeFilter("img",function(e){for(var n,a,t=e.length;t--;)if((a=(n=e[t]).attr("class"))&&-1!==a.indexOf("mce-pagebreak")){var r=n.parent;if(o.schema.getBlockElements()[r.name]&&i(o)){r.type=3,r.value=c,r.raw=!0,n.remove();continue}n.type=3,n.value=c,n.raw=!0}})})},c=a,u=e,g=function(e){e.addCommand("mcePageBreak",function(){e.settings.pagebreak_split_block?e.insertContent("<p>"+c()+"</p>"):e.insertContent(c())})},m=function(n){n.on("ResolveName",function(e){"IMG"===e.target.nodeName&&n.dom.hasClass(e.target,u())&&(e.name="pagebreak")})},s=function(e){e.ui.registry.addButton("pagebreak",{icon:"page-break",tooltip:"Page break",onAction:function(){return e.execCommand("mcePageBreak")}}),e.ui.registry.addMenuItem("pagebreak",{text:"Page break",icon:"page-break",onAction:function(){return e.execCommand("mcePageBreak")}})};!function l(){n.add("pagebreak",function(e){g(e),s(e),o(e),m(e)})}()}();

File diff suppressed because one or more lines are too long

View File

@ -4,6 +4,6 @@
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*
* Version: 5.0.16 (2019-09-24)
* Version: 5.1.3 (2019-12-04)
*/
!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),d=tinymce.util.Tools.resolve("tinymce.util.Tools"),l=function(e){return e.getParam("content_style","")},m=function(e){return e.getParam("content_css_cors",!1,"boolean")},n=function(t){var n="",i=t.dom.encode,e=l(t);n+='<base href="'+i(t.documentBaseURI.getURI())+'">',e&&(n+='<style type="text/css">'+e+"</style>");var o=m(t)?' crossorigin="anonymous"':"";d.each(t.contentCSS,function(e){n+='<link type="text/css" rel="stylesheet" href="'+i(t.documentBaseURI.toAbsolute(e))+'"'+o+">"});var r=t.settings.body_id||"tinymce";-1!==r.indexOf("=")&&(r=(r=t.getParam("body_id","","hash"))[t.id]||r);var a=t.settings.body_class||"";-1!==a.indexOf("=")&&(a=(a=t.getParam("body_class","","hash"))[t.id]||"");var c=t.getBody().dir,s=c?' dir="'+i(c)+'"':"";return"<!DOCTYPE html><html><head>"+n+'</head><body id="'+i(r)+'" class="mce-content-body '+i(a)+'"'+s+">"+t.getContent()+'<script>document.addEventListener && document.addEventListener("click", function(e) {for (var elm = e.target; elm; elm = elm.parentNode) {if (elm.nodeName === "A") {e.preventDefault();}}}, false);<\/script> </body></html>'},t=function(e){e.addCommand("mcePreview",function(){!function(e){var t=n(e);e.windowManager.open({title:"Preview",size:"large",body:{type:"panel",items:[{name:"preview",type:"iframe",sandboxed:!0}]},buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}],initialData:{preview:t}}).focus("close")}(e)})},i=function(e){e.ui.registry.addButton("preview",{icon:"preview",tooltip:"Preview",onAction:function(){return e.execCommand("mcePreview")}}),e.ui.registry.addMenuItem("preview",{icon:"preview",text:"Preview",onAction:function(){return e.execCommand("mcePreview")}})};!function o(){e.add("preview",function(e){t(e),i(e)})}()}();
!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),l=tinymce.util.Tools.resolve("tinymce.util.Tools"),m=function(e){return e.getParam("content_style","")},u=function(e){return e.getParam("content_css_cors",!1,"boolean")},y=tinymce.util.Tools.resolve("tinymce.Env"),n=function(t){var n="",i=t.dom.encode,e=m(t);n+='<base href="'+i(t.documentBaseURI.getURI())+'">',e&&(n+='<style type="text/css">'+e+"</style>");var o=u(t)?' crossorigin="anonymous"':"";l.each(t.contentCSS,function(e){n+='<link type="text/css" rel="stylesheet" href="'+i(t.documentBaseURI.toAbsolute(e))+'"'+o+">"});var r=t.settings.body_id||"tinymce";-1!==r.indexOf("=")&&(r=(r=t.getParam("body_id","","hash"))[t.id]||r);var a=t.settings.body_class||"";-1!==a.indexOf("=")&&(a=(a=t.getParam("body_class","","hash"))[t.id]||"");var c='<script>document.addEventListener && document.addEventListener("click", function(e) {for (var elm = e.target; elm; elm = elm.parentNode) {if (elm.nodeName === "A" && !('+(y.mac?"e.metaKey":"e.ctrlKey && !e.altKey")+")) {e.preventDefault();}}}, false);<\/script> ",s=t.getBody().dir,d=s?' dir="'+i(s)+'"':"";return"<!DOCTYPE html><html><head>"+n+'</head><body id="'+i(r)+'" class="mce-content-body '+i(a)+'"'+d+">"+t.getContent()+c+"</body></html>"},t=function(e){e.addCommand("mcePreview",function(){!function(e){var t=n(e);e.windowManager.open({title:"Preview",size:"large",body:{type:"panel",items:[{name:"preview",type:"iframe",sandboxed:!0}]},buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}],initialData:{preview:t}}).focus("close")}(e)})},i=function(e){e.ui.registry.addButton("preview",{icon:"preview",tooltip:"Preview",onAction:function(){return e.execCommand("mcePreview")}}),e.ui.registry.addMenuItem("preview",{icon:"preview",text:"Preview",onAction:function(){return e.execCommand("mcePreview")}})};!function o(){e.add("preview",function(e){t(e),i(e)})}()}();

View File

@ -4,6 +4,6 @@
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*
* Version: 5.0.16 (2019-09-24)
* Version: 5.1.3 (2019-12-04)
*/
!function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.Env"),i=function(n){n.addCommand("mcePrint",function(){t.ie&&t.ie<=11?n.getDoc().execCommand("print",!1,null):n.getWin().print()})},e=function(n){n.ui.registry.addButton("print",{icon:"print",tooltip:"Print",onAction:function(){return n.execCommand("mcePrint")}}),n.ui.registry.addMenuItem("print",{text:"Print...",icon:"print",onAction:function(){return n.execCommand("mcePrint")}})};!function o(){n.add("print",function(n){i(n),e(n),n.addShortcut("Meta+P","","mcePrint")})}()}();
!function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.Env"),i=function(n){n.addCommand("mcePrint",function(){t.browser.isIE()?n.getDoc().execCommand("print",!1,null):n.getWin().print()})},e=function(n){n.ui.registry.addButton("print",{icon:"print",tooltip:"Print",onAction:function(){return n.execCommand("mcePrint")}}),n.ui.registry.addMenuItem("print",{text:"Print...",icon:"print",onAction:function(){return n.execCommand("mcePrint")}})};!function o(){n.add("print",function(n){i(n),e(n),n.addShortcut("Meta+P","","mcePrint")})}()}();

File diff suppressed because one or more lines are too long

View File

@ -4,6 +4,6 @@
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*
* Version: 5.0.16 (2019-09-24)
* Version: 5.1.3 (2019-12-04)
*/
!function(){"use strict";function t(n,e){n.notificationManager.open({text:e,type:"error"})}function e(t){return function(n){function e(){n.setDisabled(a(t)&&!t.isDirty())}return t.on("NodeChange dirty",e),function(){return t.off("NodeChange dirty",e)}}}var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),i=tinymce.util.Tools.resolve("tinymce.util.Tools"),a=function(n){return n.getParam("save_enablewhendirty",!0)},c=function(n){return!!n.getParam("save_onsavecallback")},r=function(n){return!!n.getParam("save_oncancelcallback")},u=function(n){var e;if(e=o.DOM.getParent(n.id,"form"),!a(n)||n.isDirty()){if(n.save(),c(n))return n.execCallback("save_onsavecallback",n),void n.nodeChanged();e?(n.setDirty(!1),e.onsubmit&&!e.onsubmit()||("function"==typeof e.submit?e.submit():t(n,"Error: Form submit field collision.")),n.nodeChanged()):t(n,"Error: No form element found.")}},l=function(n){var e=i.trim(n.startContent);r(n)?n.execCallback("save_oncancelcallback",n):n.resetContent(e)},s=function(n){n.addCommand("mceSave",function(){u(n)}),n.addCommand("mceCancel",function(){l(n)})},d=function(n){n.ui.registry.addButton("save",{icon:"save",tooltip:"Save",disabled:!0,onAction:function(){return n.execCommand("mceSave")},onSetup:e(n)}),n.ui.registry.addButton("cancel",{icon:"cancel",tooltip:"Cancel",disabled:!0,onAction:function(){return n.execCommand("mceCancel")},onSetup:e(n)}),n.addShortcut("Meta+S","","mceSave")};!function m(){n.add("save",function(n){d(n),s(n)})}()}();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -4,6 +4,6 @@
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*
* Version: 5.0.16 (2019-09-24)
* Version: 5.1.3 (2019-12-04)
*/
!function(c){"use strict";function t(e){e.keyCode!==d.TAB||e.ctrlKey||e.altKey||e.metaKey||e.preventDefault()}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),s=tinymce.util.Tools.resolve("tinymce.EditorManager"),a=tinymce.util.Tools.resolve("tinymce.Env"),y=tinymce.util.Tools.resolve("tinymce.util.Delay"),f=tinymce.util.Tools.resolve("tinymce.util.Tools"),d=tinymce.util.Tools.resolve("tinymce.util.VK"),m=function(e){return e.getParam("tab_focus",function(e){return e.getParam("tabfocus_elements",":prev,:next")}(e))},v=n.DOM,i=function(r){function e(n){var i,o,e,l;if(!(n.keyCode!==d.TAB||n.ctrlKey||n.altKey||n.metaKey||n.isDefaultPrevented())&&(1===(e=f.explode(m(r))).length&&(e[1]=e[0],e[0]=":prev"),o=n.shiftKey?":prev"===e[0]?u(-1):v.get(e[0]):":next"===e[1]?u(1):v.get(e[1]))){var t=s.get(o.id||o.name);o.id&&t?t.focus():y.setTimeout(function(){a.webkit||c.window.focus(),o.focus()},10),n.preventDefault()}function u(e){function t(e){return/INPUT|TEXTAREA|BUTTON/.test(e.tagName)&&s.get(n.id)&&-1!==e.tabIndex&&function t(e){return"BODY"===e.nodeName||"hidden"!==e.type&&"none"!==e.style.display&&"hidden"!==e.style.visibility&&t(e.parentNode)}(e)}if(o=v.select(":input:enabled,*[tabindex]:not(iframe)"),f.each(o,function(e,t){if(e.id===r.id)return i=t,!1}),0<e){for(l=i+1;l<o.length;l++)if(t(o[l]))return o[l]}else for(l=i-1;0<=l;l--)if(t(o[l]))return o[l];return null}}r.on("init",function(){r.inline&&v.setAttrib(r.getBody(),"tabIndex",null),r.on("keyup",t),a.gecko?r.on("keypress keydown",e):r.on("keydown",e)})};!function o(){e.add("tabfocus",function(e){i(e)})}()}(window);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -4,6 +4,6 @@
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*
* Version: 5.0.16 (2019-09-24)
* Version: 5.1.3 (2019-12-04)
*/
!function(o){"use strict";var i=tinymce.util.Tools.resolve("tinymce.PluginManager");!function n(){i.add("textcolor",function(){o.console.warn("Text color plugin is now built in to the core editor, please remove it from your editor configuration")})}()}(window);

File diff suppressed because one or more lines are too long

View File

@ -4,6 +4,6 @@
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*
* Version: 5.0.16 (2019-09-24)
* Version: 5.1.3 (2019-12-04)
*/
!function(){"use strict";function e(n){return function(t){function e(){return t.setDisabled(n.readonly||!v.hasHeaders(n))}return e(),n.on("LoadContent SetContent change",e),function(){return n.on("LoadContent SetContent change",e)}}}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),l=tinymce.util.Tools.resolve("tinymce.util.I18n"),i=tinymce.util.Tools.resolve("tinymce.util.Tools"),c=function(t){return t.getParam("toc_class","mce-toc")},d=function(t){var e=t.getParam("toc_header","h2");return/^h[1-6]$/.test(e)?e:"h2"},a=function(t){var e=parseInt(t.getParam("toc_depth","3"),10);return 1<=e&&e<=9?e:3},s=function(e){var n=0;return function(){var t=(new Date).getTime().toString(32);return e+t+(n++).toString(32)}}("mcetoc_"),f=function f(t){var e,n=[];for(e=1;e<=t;e++)n.push("h"+e);return n.join(",")},m=function(n){var o=c(n),t=d(n),e=f(a(n)),r=n.$(e);return r.length&&/^h[1-9]$/i.test(t)&&(r=r.filter(function(t,e){return!n.dom.hasClass(e.parentNode,o)})),i.map(r,function(t){return{id:t.id?t.id:s(),level:parseInt(t.nodeName.replace(/^H/i,""),10),title:n.$.text(t),element:t}})},o=function(t){var e,n,o,r,i="",c=m(t),a=function(t){var e,n=9;for(e=0;e<t.length;e++)if(t[e].level<n&&(n=t[e].level),1===n)return n;return n}(c)-1;if(!c.length)return"";for(i+=function(t,e){var n="</"+t+">";return"<"+t+' contenteditable="true">'+u.DOM.encode(e)+n}(d(t),l.translate("Table of Contents")),e=0;e<c.length;e++){if((o=c[e]).element.id=o.id,r=c[e+1]&&c[e+1].level,a===o.level)i+="<li>";else for(n=a;n<o.level;n++)i+="<ul><li>";if(i+='<a href="#'+o.id+'">'+o.title+"</a>",r!==o.level&&r)for(n=o.level;r<n;n--)i+="</li></ul><li>";else i+="</li>",r||(i+="</ul>");a=o.level}return i},r=function(t){var e=c(t),n=t.$("."+e);n.length&&t.undoManager.transact(function(){n.html(o(t))})},v={hasHeaders:function(t){return 0<m(t).length},insertToc:function(t){var e=c(t),n=t.$("."+e);!function(t,e){return!e.length||0<t.dom.getParents(e[0],".mce-offscreen-selection").length}(t,n)?r(t):t.insertContent(function(t){var e=o(t);return'<div class="'+t.dom.encode(c(t))+'" contenteditable="false">'+e+"</div>"}(t))},updateToc:r},n=function(t){t.addCommand("mceInsertToc",function(){v.insertToc(t)}),t.addCommand("mceUpdateToc",function(){v.updateToc(t)})},g=function(t){var n=t.$,o=c(t);t.on("PreProcess",function(t){var e=n("."+o,t.node);e.length&&(e.removeAttr("contentEditable"),e.find("[contenteditable]").removeAttr("contentEditable"))}),t.on("SetContent",function(){var t=n("."+o);t.length&&(t.attr("contentEditable",!1),t.children(":first-child").attr("contentEditable",!0))})},h=function(t){t.ui.registry.addButton("toc",{icon:"toc",tooltip:"Table of contents",onAction:function(){return t.execCommand("mceInsertToc")},onSetup:e(t)}),t.ui.registry.addButton("tocupdate",{icon:"reload",tooltip:"Update",onAction:function(){return t.execCommand("mceUpdateToc")}}),t.ui.registry.addMenuItem("toc",{icon:"toc",text:"Table of contents",onAction:function(){return t.execCommand("mceInsertToc")},onSetup:e(t)}),t.ui.registry.addContextToolbar("toc",{items:"tocupdate",predicate:function(e){return function(t){return t&&e.dom.is(t,"."+c(e))&&e.getBody().contains(t)}}(t),scope:"node",position:"node"})};!function p(){t.add("toc",function(t){n(t),h(t),g(t)})}()}();

View File

@ -4,6 +4,6 @@
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*
* Version: 5.0.16 (2019-09-24)
* Version: 5.1.3 (2019-12-04)
*/
!function(){"use strict";function o(o,e){return function(n){n.setActive(e.get());function t(t){return n.setActive(t.state)}return o.on("VisualBlocks",t),function(){return o.off("VisualBlocks",t)}}}var e=function(t){function n(){return o}var o=t;return{get:n,set:function(t){o=t},clone:function(){return e(n())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(t,n){t.fire("VisualBlocks",{state:n})},u=function(t,n,o){t.dom.toggleClass(t.getBody(),"mce-visualblocks"),o.set(!o.get()),i(t,o.get())},c=function(t,n,o){t.addCommand("mceVisualBlocks",function(){u(t,n,o)})},s=function(t){return t.getParam("visualblocks_default_state",!1,"boolean")},r=function(n,t,o){n.on("PreviewFormats AfterPreviewFormats",function(t){o.get()&&n.dom.toggleClass(n.getBody(),"mce-visualblocks","afterpreviewformats"===t.type)}),n.on("init",function(){s(n)&&u(n,t,o)}),n.on("remove",function(){n.dom.removeClass(n.getBody(),"mce-visualblocks")})},l=function(t,n){t.ui.registry.addToggleButton("visualblocks",{icon:"paragraph",tooltip:"Show blocks",onAction:function(){return t.execCommand("mceVisualBlocks")},onSetup:o(t,n)}),t.ui.registry.addToggleMenuItem("visualblocks",{text:"Show blocks",onAction:function(){return t.execCommand("mceVisualBlocks")},onSetup:o(t,n)})};!function n(){t.add("visualblocks",function(t,n){var o=e(!1);c(t,n,o),l(t,o),r(t,n,o)})}()}();
!function(){"use strict";function n(n,e){return function(o){o.setActive(e.get());function t(t){return o.setActive(t.state)}return n.on("VisualBlocks",t),function(){return n.off("VisualBlocks",t)}}}var e=function(t){function o(){return n}var n=t;return{get:o,set:function(t){n=t},clone:function(){return e(o())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(t,o){t.fire("VisualBlocks",{state:o})},u=function(t,o,n){t.dom.toggleClass(t.getBody(),"mce-visualblocks"),n.set(!n.get()),i(t,n.get())},c=function(t,o,n){t.addCommand("mceVisualBlocks",function(){u(t,o,n)})},s=function(t){return t.getParam("visualblocks_default_state",!1,"boolean")},l=function(o,t,n){o.on("PreviewFormats AfterPreviewFormats",function(t){n.get()&&o.dom.toggleClass(o.getBody(),"mce-visualblocks","afterpreviewformats"===t.type)}),o.on("init",function(){s(o)&&u(o,t,n)}),o.on("remove",function(){o.dom.removeClass(o.getBody(),"mce-visualblocks")})},r=function(t,o){t.ui.registry.addToggleButton("visualblocks",{icon:"visualblocks",tooltip:"Show blocks",onAction:function(){return t.execCommand("mceVisualBlocks")},onSetup:n(t,o)}),t.ui.registry.addToggleMenuItem("visualblocks",{text:"Show blocks",onAction:function(){return t.execCommand("mceVisualBlocks")},onSetup:n(t,o)})};!function o(){t.add("visualblocks",function(t,o){var n=e(!1);c(t,o,n),r(t,n),l(t,o,n)})}()}();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long