mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-26 14:49:56 +09:00
Separate editor and uploader related PHP and JS code into their own native files
This commit is contained in:
parent
d127e334b0
commit
579201fe7c
5 changed files with 308 additions and 245 deletions
162
modules/editor/skins/ckeditor/js/editor.js
Normal file
162
modules/editor/skins/ckeditor/js/editor.js
Normal file
|
|
@ -0,0 +1,162 @@
|
|||
'use strict';
|
||||
|
||||
/**
|
||||
* Initialize each instance of CKEditor on the page.
|
||||
*/
|
||||
$(function() {
|
||||
$('.rx_ckeditor').each(function() {
|
||||
|
||||
// Load editor configuration.
|
||||
const container = $(this);
|
||||
const form = container.closest('form');
|
||||
const editor_sequence = parseInt(container.data('editorSequence'), 10);
|
||||
const config = container.data('editorConfig');
|
||||
|
||||
// Apply auto dark mode.
|
||||
if (config.auto_dark_mode) {
|
||||
$('body').addClass('cke_auto_dark_mode');
|
||||
if (getColorScheme() === 'dark') {
|
||||
if (config.skin !== 'moono-lisa') {
|
||||
config.skin = 'moono-dark';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If the default font is not set, use the browser default font.
|
||||
if (config.default_font === 'none' && window.getComputedStyle) {
|
||||
let test_content = $('<div class="rhymix_content xe_content"></div>').hide().appendTo($(document.body));
|
||||
let test_styles = window.getComputedStyle(test_content[0], null);
|
||||
if (test_styles && test_styles.getPropertyValue) {
|
||||
default_font = test_styles.getPropertyValue('font-family');
|
||||
if (default_font) {
|
||||
config.default_font = $.trim(default_font.split(',')[0].replace(/['"]/g, ''));
|
||||
config.css_content = '.rhymix_content.editable { font-family:' + default_font + '; } ' + config.css_content;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Define the initial structure for CKEditor settings.
|
||||
const settings = {
|
||||
ckeconfig: {
|
||||
height: config.height,
|
||||
skin: config.skin,
|
||||
contentsCss: config.css_files,
|
||||
font_defaultLabel: config.default_font,
|
||||
font_names: config.fonts.join(';'),
|
||||
fontSize_defaultLabel: config.default_font_size,
|
||||
fontSize_sizes: config.font_sizes.join(';'),
|
||||
toolbarStartupExpanded: !config.hide_toolbar,
|
||||
toolbarCanCollapse: true,
|
||||
allowedContent: true,
|
||||
startupFocus: config.focus,
|
||||
language: config.language,
|
||||
iframe_attributes: {},
|
||||
versionCheck: false,
|
||||
xe_editor_sequence: editor_sequence
|
||||
},
|
||||
loadXeComponent: true,
|
||||
enableToolbar: true
|
||||
};
|
||||
|
||||
// Add stylesheets from the current document.
|
||||
$('link[rel=stylesheet]').each(function() {
|
||||
settings.ckeconfig.contentsCss.push($(this).attr('href'));
|
||||
});
|
||||
|
||||
// Add and remove plugins.
|
||||
if (config.add_plugins) {
|
||||
settings.ckeconfig.extraPlugins = config.add_plugins.join(',');
|
||||
}
|
||||
if (config.remove_plugins) {
|
||||
settings.ckeconfig.removePlugins = config.remove_plugins.join(',');
|
||||
}
|
||||
|
||||
// Add editor components.
|
||||
if (config.enable_component) {
|
||||
settings.ckeconfig.xe_component_arrays = config.components;
|
||||
} else {
|
||||
settings.ckeconfig.xe_component_arrays = {};
|
||||
settings.loadXeComponent = false;
|
||||
}
|
||||
|
||||
if (!config.enable_default_component) {
|
||||
settings.enableToolbar = false;
|
||||
settings.ckeconfig.toolbarCanCollapse = false;
|
||||
}
|
||||
|
||||
// Patch for iOS: https://github.com/rhymix/rhymix/issues/932
|
||||
if (config.ios_patch) {
|
||||
settings.loadXeComponent = false;
|
||||
$('head').append('<style>'
|
||||
+ '.cke_wysiwyg_div { padding: 8px !important; }'
|
||||
+ 'html { min-width: unset; min-height: unset; width: unset; height: unset; margin: unset; padding: unset; }'
|
||||
+ config.css_content.replace(/\.rhymix_content\.editable/g, '.cke_wysiwyg_div')
|
||||
+ '</style>'
|
||||
);
|
||||
}
|
||||
|
||||
// Define the simple toolbar.
|
||||
if (config.toolbar === 'simple') {
|
||||
settings.ckeconfig.toolbar = [
|
||||
{ name: 'styles', items: [ 'Font', 'FontSize', '-', 'Bold', 'Italic', 'Underline', 'Strike', 'TextColor', 'BGColor' ] },
|
||||
{ name: 'paragraph', items: [ 'JustifyLeft', 'JustifyCenter', 'JustifyRight' ] },
|
||||
{ name: 'clipboard', items: [ 'Cut', 'Copy', 'Paste' ] },
|
||||
{ name: 'insert', items: [ 'Link', 'Image', 'Table' ] },
|
||||
{ name: 'tools', items: [ 'Maximize', '-', 'Source' ] }
|
||||
];
|
||||
}
|
||||
|
||||
// Support legacy HTML (full editing) mode.
|
||||
if (!config.legacy_html_mode) {
|
||||
settings.ckeconfig.removeButtons = 'Save,Preview,Print,Cut,Copy,Paste,Source';
|
||||
}
|
||||
|
||||
// Disable loading of custom configuration if config.js does not exist.
|
||||
if (!config.custom_config_exists) {
|
||||
CKEDITOR.config.customConfig = '';
|
||||
}
|
||||
|
||||
// Prevent removal of icon fonts and Google code.
|
||||
CKEDITOR.dtd.$removeEmpty.i = 0;
|
||||
CKEDITOR.dtd.$removeEmpty.ins = 0;
|
||||
|
||||
// Set the cache-busting timestamp for plugins.
|
||||
CKEDITOR.timestamp = config.timestamp;
|
||||
|
||||
// Set the custom CSS content.
|
||||
CKEDITOR.addCss(config.css_content);
|
||||
|
||||
// Initialize the CKEditor XE app.
|
||||
const ckeApp = container.XeCkEditor(settings);
|
||||
|
||||
// Add use_editor and use_html fields to the parent form.
|
||||
const use_editor = form.find('input[name=use_editor]');
|
||||
const use_html = form.find('input[name=use_html]');
|
||||
if (use_editor.length) {
|
||||
use_editor.val('Y');
|
||||
} else {
|
||||
form.append('<input type="hidden" name="use_editor" value="Y" />');
|
||||
}
|
||||
if (use_html.length) {
|
||||
use_html.val('Y');
|
||||
} else {
|
||||
form.append('<input type="hidden" name="use_html" value="Y" />');
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* This function is only retained for backward compatibility.
|
||||
* Do not depend on it for any reason.
|
||||
*/
|
||||
function ckInsertUploadedFile() {
|
||||
if (typeof console == "object" && typeof console.warn == "function") {
|
||||
const msg = "DEPRECATED : ckInsertUploadedFile() is obsolete in Rhymix.";
|
||||
if (navigator.userAgent.match(/Firefox/)) {
|
||||
console.error(msg);
|
||||
} else {
|
||||
console.warn(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
29
modules/editor/skins/ckeditor/js/file_upload.js
Normal file
29
modules/editor/skins/ckeditor/js/file_upload.js
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
'use strict';
|
||||
|
||||
/**
|
||||
* Initialize each instance of file uploader on the page.
|
||||
*/
|
||||
$(function() {
|
||||
$('.xefu-container').each(function() {
|
||||
const container = $(this);
|
||||
const data = container.data();
|
||||
container.data('instance', container.xeUploader({
|
||||
maxFileSize: parseInt(data.maxFileSize, 10),
|
||||
maxChunkSize: parseInt(data.maxChunkSize, 10),
|
||||
autoinsertTypes: data.autoinsertTypes,
|
||||
autoinsertPosition: data.autoinsertPosition,
|
||||
singleFileUploads: true
|
||||
}));
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* This function is only retained for backward compatibility.
|
||||
* Do not depend on it for any reason.
|
||||
*/
|
||||
function reloadUploader(editor_sequence) {
|
||||
var container = $('#xefu-container-' + editor_sequence);
|
||||
if (container.length) {
|
||||
container.data('instance').loadFilelist(container);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue