Skip to content
Code-Schnipsel Gruppen Projekte
Commit 8b611efa erstellt von Florian Bogner's avatar Florian Bogner
Dateien durchsuchen

feat: Futher development

Übergeordneter 92b56aba
Keine zugehörigen Branchen gefunden
Keine zugehörigen Tags gefunden
Keine zugehörigen Merge Requests gefunden
......@@ -3,7 +3,9 @@
QUI::$Ajax->registerFunction(
'package_quiqqer_ckeditor4_ajax_activatePlugin',
function ($pluginName) {
$PluginManager = new \QUI\Ckeditor4\Plugins\Manager();
$PluginManager = new \QUI\Ckeditor\Plugins\Manager();
$PluginManager->activate($pluginName);
},
array('pluginName')
);
\ No newline at end of file
......@@ -3,7 +3,9 @@
QUI::$Ajax->registerFunction(
'package_quiqqer_ckeditor4_ajax_deactivatePlugin',
function ($pluginName) {
$PluginManager = new \QUI\Ckeditor4\Plugins\Manager();
$PluginManager = new \QUI\Ckeditor\Plugins\Manager();
$PluginManager->deactivate($pluginName);
},
array('pluginName')
);
\ No newline at end of file
<?php
QUI::$Ajax->registerFunction(
'package_quiqqer_ckeditor4_ajax_getActivePlugins',
function () {
$Manager = new \QUI\Ckeditor\Plugins\Manager();
return $Manager->getActivePlugins();
},
array()
);
<?php
QUI::$Ajax->registerFunction(
'package_quiqqer_ckeditor4_ajax_getPlugins',
function () {
$Pluginmanager = new \QUI\Ckeditor\Plugins\Manager();
return $Pluginmanager->getAllPlugins();
},
array()
);
\ No newline at end of file
......@@ -22,12 +22,14 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
'Ajax',
'qui/utils/Math',
'qui/utils/Elements',
'package/quiqqer/ckeditor4/bin/Settings',
'css!package/quiqqer/ckeditor4/bin/Editor.css'
], function (require, QUI, Editor, Locale, Ajax, QUIMath, QUIElements) {
], function (require, QUI, Editor, Locale, Ajax, QUIMath, QUIElements, Settings) {
"use strict";
return new Class({
Extends: Editor,
......@@ -103,6 +105,7 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
* @param {Object} data - Editor settings data
*/
$loadInstance: function (data) {
if (typeof window.CKEDITOR === 'undefined') {
return;
}
......@@ -112,9 +115,10 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
Textarea = false,
size = Container.getSize();
if (!Container.getElement('textarea')) {
Textarea = new Element('textarea', {
id : this.getId(),
id : self.getId(),
styles: {
height: size.y,
width : size.x
......@@ -208,24 +212,30 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
URL_OPT_DIR + 'quiqqer/ckeditor4/bin/defaultWysiwyg.css'
);
window.CKEDITOR.replace(instance, {
skinName : 'moono-lisa',
customConfig : '',
language : Locale.getCurrent(),
baseHref : URL_DIR,
basePath : URL_DIR,
height : height,
width : width,
toolbar : toolbar,
allowedContent : true,
extraAllowedContent: 'div(*)[*]{*}; iframe(*)[*]{*}; img(*)[*]{*}; script(*)[*]{*}',
stylesSet : styles,
contentsCss : data.cssFiles || [],
bodyClass : data.bodyClass,
// templates_files : [URL_OPT_DIR +'base/bin/pcsgEditorPlugins/templates.php'],
baseFloatZIndex : zIndex,
extraPlugins : self.$parseToolbarToPlugins(toolbar)
Settings.getPlugins().then(function (plugins) {
var extraPlugins = plugins.join(",");
window.CKEDITOR.replace(instance, {
skinName : 'moono-lisa',
customConfig : '',
language : Locale.getCurrent(),
baseHref : URL_DIR,
basePath : URL_DIR,
height : height,
width : width,
toolbar : toolbar,
allowedContent : true,
extraAllowedContent: 'div(*)[*]{*}; iframe(*)[*]{*}; img(*)[*]{*}; script(*)[*]{*}',
stylesSet : styles,
contentsCss : data.cssFiles || [],
bodyClass : data.bodyClass,
// templates_files : [URL_OPT_DIR +'base/bin/pcsgEditorPlugins/templates.php'],
baseFloatZIndex : zIndex,
extraPlugins : extraPlugins
});
});
},
/**
......@@ -255,7 +265,8 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
this.$onInstanceReadyListener
);
}
},
}
,
/**
* event : instance ready
......@@ -279,7 +290,8 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
this.fireEvent('loaded', [this, instance.editor]);
instance.editor.focus();
},
}
,
/**
* event : on resize
......@@ -290,7 +302,8 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
containerSize = Container.getSize();
Instance.resize(containerSize.x, containerSize.y);
},
}
,
/**
* Editor onSetContent Event
......@@ -302,7 +315,8 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
if (Editor.getInstance()) {
Editor.getInstance().setData(content);
}
},
}
,
/**
* Editor onGetContent Event
......@@ -313,7 +327,8 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
if (Editor.getInstance()) {
Editor.setAttribute('content', Editor.getInstance().getData());
}
},
}
,
/**
* Set the focus to the editor
......@@ -322,7 +337,8 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
if (this.getInstance()) {
this.getInstance().focus();
}
},
}
,
/**
* Switch to source mode
......@@ -331,7 +347,8 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
if (this.getInstance()) {
this.getInstance().setMode('source');
}
},
}
,
/**
* Switch to wysiwyg editor
......@@ -340,7 +357,8 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
if (this.getInstance()) {
this.getInstance().setMode('wysiwyg');
}
},
}
,
/**
* Hide the toolbar
......@@ -351,7 +369,8 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
if (Toolbar) {
Toolbar.setStyle('display', 'none');
}
},
}
,
/**
* show the toolbar
......@@ -362,7 +381,8 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
if (Toolbar) {
Toolbar.setStyle('display', null);
}
},
}
,
/**
* Set the height of the instance
......@@ -375,7 +395,8 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
}
this.setAttribute('height', height);
},
}
,
/**
* Set the height of the instance
......@@ -388,7 +409,8 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
}
this.setAttribute('width', width);
},
}
,
/**
* event : on add css
......@@ -411,7 +433,8 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
Doc.head.appendChild(Link);
}
},
}
,
/**
* event : on Drop
......@@ -423,105 +446,110 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
for (var i = 0, len = params.length; i < len; i++) {
Instance.insertHtml("<img src=" + params[i].url + " />");
}
},
/**
* Generate the extra plugins option in dependence of the toolbar
* @param toolbar
*/
$parseToolbarToPlugins: function (toolbar) {
var extra = [],
buttonList = [];
if (typeOf(toolbar) == 'array') {
buttonList = toolbar.flatten();
}
for (var i = 0, len = buttonList.length; i < len; i++) {
switch (buttonList[i]) {
case 'Templates':
extra.push('templates');
break;
case 'Find':
case 'Replace':
extra.push('find');
break;
case 'SelectAll':
extra.push('selectall');
break;
case 'Form':
case 'Checkbox':
case 'Radio':
case 'TextField':
case 'Textarea':
case 'Select':
case 'Button':
case 'ImageButton':
case 'HiddenField':
extra.push('forms');
break;
case 'CreateDiv':
extra.push('div');
break;
case 'JustifyLeft':
case 'JustifyCenter':
case 'JustifyRight':
case 'JustifyBlock':
extra.push('justify');
break;
case 'BidiLtr':
case 'BidiRtl':
extra.push('bidi');
break;
case 'Language':
extra.push('language');
break;
case 'Link':
case 'Unlink':
case 'Anchor':
extra.push('link');
break;
case 'Flash':
extra.push('flash');
break;
case 'Smiley':
extra.push('smiley');
break;
case 'PageBreak':
extra.push('pagebreak');
break;
case 'Iframe':
extra.push('iframe');
break;
case 'Font':
case 'FontSize':
extra.push('font');
break;
case 'BGColor':
case 'TextColor':
extra.push('colorbutton');
break;
}
}
extra = extra.unique();
return extra.join(',');
},
}
,
// /**
// * Generate the extra plugins option in dependence of the toolbar
// * @param toolbar
// */
// $parseToolbarToPlugins: function (toolbar) {
// var extra = [],
// buttonList = [];
//
// if (typeOf(toolbar) == 'array') {
// buttonList = toolbar.flatten();
// }
//
// for (var i = 0, len = buttonList.length; i < len; i++) {
// switch (buttonList[i]) {
// case 'Templates':
// extra.push('templates');
// break;
//
// case 'Find':
// case 'Replace':
// extra.push('find');
// break;
//
// case 'SelectAll':
// extra.push('selectall');
// break;
//
// case 'Form':
// case 'Checkbox':
// case 'Radio':
// case 'TextField':
// case 'Textarea':
// case 'Select':
// case 'Button':
// case 'ImageButton':
// case 'HiddenField':
// extra.push('forms');
// break;
//
// case 'CreateDiv':
// extra.push('div');
// break;
//
// case 'JustifyLeft':
// case 'JustifyCenter':
// case 'JustifyRight':
// case 'JustifyBlock':
// extra.push('justify');
// break;
//
// case 'BidiLtr':
// case 'BidiRtl':
// extra.push('bidi');
// break;
//
// case 'Language':
// extra.push('language');
// break;
//
// case 'Link':
// case 'Unlink':
// case 'Anchor':
// extra.push('link');
// break;
//
// case 'Flash':
// extra.push('flash');
// break;
//
// case 'Smiley':
// extra.push('smiley');
// break;
//
// case 'PageBreak':
// extra.push('pagebreak');
// break;
//
// case 'Iframe':
// extra.push('iframe');
// break;
//
// case 'Font':
// case 'FontSize':
// extra.push('font');
// break;
//
// case 'BGColor':
// case 'TextColor':
// extra.push('colorbutton');
// break;
// }
// }
//
// //extra.push('wordcount');
//
// extra = extra.unique();
//
//
// return extra.join(',');
// }
// ,
/**
* edit the image dialog
......@@ -552,18 +580,18 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
// image button
var UrlGroup = this.getContentElement('info', 'txtUrl')
.getElement()
.getElement()
.$;
var UrlInput = UrlGroup.getElement('input[type="text"]');
var HeightInput = this.getContentElement('info', 'txtHeight')
.getElement().$
.getElement('input[type="text"]');
.getElement().$
.getElement('input[type="text"]');
var WidthInput = this.getContentElement('info', 'txtWidth')
.getElement().$
.getElement('input[type="text"]');
.getElement().$
.getElement('input[type="text"]');
if (!UrlGroup.getElement('.qui-button')) {
......@@ -620,7 +648,7 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
// link button
var LinkGroup = this.getContentElement('Link', 'txtUrl')
.getElement()
.getElement()
.$;
......@@ -655,7 +683,8 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
};
return ev;
},
}
,
/**
* edit the link dialog
......@@ -688,10 +717,10 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
orgCommit.call(this, data);
Protokoll = dialogDefinition.dialog
.getContentElement('info', 'protocol')
.getElement()
.$
.getElement('select');
.getContentElement('info', 'protocol')
.getElement()
.$
.getElement('select');
data.url = {
protocol: Protokoll.value,
......@@ -707,7 +736,7 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
oldOnShow.bind(this)();
var UrlGroup = this.getContentElement('info', 'url')
.getElement()
.getElement()
.$;
if (UrlGroup.getElement('.qui-button')) {
......@@ -717,9 +746,9 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
var UrlInput = UrlGroup.getElement('input[type="text"]');
Protokoll = this.getContentElement('info', 'protocol')
.getElement()
.$
.getElement('select');
.getElement()
.$
.getElement('select');
UrlInput.setStyles({
'float': 'left',
......@@ -764,5 +793,7 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
return ev;
}
});
});
})
;
})
;
define('package/quiqqer/ckeditor4/bin/Settings', [
'package/quiqqer/ckeditor4/bin/classes/Settings'
], function(Settings) {
return new Settings();
});
\ No newline at end of file
define('package/quiqqer/ckeditor4/bin/classes/Settings', [
'qui/QUI',
'qui/classes/DOM',
'Ajax'
], function (QUI, QUIDOM, QUIAjax) {
"use strict";
return new Class({
Extends: QUIDOM,
initialize: function () {
this.plugins = null;
},
getPlugins: function () {
var self = this;
if (this.plugins !== null) {
return Promise.resolve(this.plugins);
}
return new Promise(function (resolve, reject) {
QUIAjax.get("package_quiqqer_ckeditor4_ajax_getActivePlugins", function (result) {
self.plugins = result;
resolve(result);
}, {
'package': 'quiqqer/ckeditor4',
'onError': reject
});
});
}
});
});
\ No newline at end of file
define('package/quiqqer/ckeditor4/bin/controls/settings/Plugins', [
'qui/QUI',
'qui/controls/Control',
'controls/grid/Grid',
'Ajax',
'Locale'
], function (QUI, QUIControl, Grid, QUIAjax, QUILocale) {
"use strict";
return new Class(
{
Extends: QUIControl,
Type : 'package/quiqqer/ckeditor4/bin/controls/settings/Plugins',
Binds: [
'$onCreate',
'$onResize',
'$onRefresh',
'$toggleState'
],
options: {},
initialize: function (options) {
this.parent(options);
// Variablendklarationen
this.$Grid = null;
// Eventdeklarationen
this.addEvents({
onCreate : this.$onCreate,
onResize : this.$onResize,
onRefresh: this.$onRefresh,
onInject : this.$onCreate,
onImport : this.$onCreate
});
},
$onCreate: function () {
var self = this;
var Container = new Element('div').inject(
this.getElm()
);
this.$Grid = new Grid(Container, {
buttons : [{
name : 'state',
text : QUILocale.get(
"quiqqer/ckeditor4",
"editors.settings.plugins.table.button.activate"
),
disabled: true,
events : {
onClick: this.$toggleState
}
}],
height : "500",
columnModel: [
{
header : QUILocale.get(
"quiqqer/ckeditor4",
"editors.settings.plugins.table.header.state"
),
dataIndex: 'icon',
dataType : 'node',
width : 60
},
{
header : QUILocale.get(
"quiqqer/ckeditor4",
"editors.settings.plugins.table.header.name"
),
dataIndex: 'name',
dataType : 'string',
width : 400
}
]
});
this.$Grid.addEvents({
onDblClick: function () {
this.$toggleState();
}.bind(this),
onClick: function () {
var TableButtons = self.$Grid.getAttribute('buttons');
var StateBtn = TableButtons.state;
var data = self.$Grid.getSelectedData()[0];
if (!data) {
return;
}
if (data.state === 0) {
StateBtn.setAttribute("text", QUILocale.get(
"quiqqer/ckeditor4",
"editors.settings.plugins.table.button.activate"
));
}
if (data.state === 1) {
StateBtn.setAttribute("text", QUILocale.get(
"quiqqer/ckeditor4",
"editors.settings.plugins.table.button.deactivate"
));
}
if (StateBtn) {
StateBtn.enable();
}
}
});
this.refresh();
this.$onResize();
},
/**
* event : on refresh
*/
$onRefresh: function () {
},
/**
* event : on resize
*/
$onResize: function () {
if (!this.$Grid || !this.$Elm) {
return;
}
var size = this.$Elm.getSize();
this.$Grid.setHeight(size.y);
this.$Grid.setWidth(size.x);
this.$Grid.resize();
},
refresh: function () {
var self = this;
QUIAjax.get("package_quiqqer_ckeditor4_ajax_getPlugins", function (result) {
for (var i = 0, len = result.length; i < len; i++) {
if (result[i].state === 0) {
result[i].icon = new Element("span", {
'class': 'fa fa-times fa-2x'
});
continue;
}
if (result[i].state === 1) {
result[i].icon = new Element("span", {
'class': 'fa fa-check fa-2x'
});
continue;
}
}
self.$Grid.setData({
data: result
});
}, {
'package': "quiqqer/ckeditor4"
});
},
$toggleState: function () {
var self = this;
return new Promise(function (resolve) {
if (!self.$Grid) {
return resolve();
}
var data = self.$Grid.getSelectedData()[0];
if (!data.name || data.state === null || data.state === 'undefined') {
return;
}
if (data.state === 0) {
self.$enablePlugin(data.name).then(function () {
self.refresh();
QUI.MessageHandler.addSuccess(QUILocale.get(
"quiqqer/ckeditor4",
"message.settings.plugins.activation.success"
));
}
).catch(function () {
QUI.MessageHandler.addSuccess("Failed");
});
}
if (data.state === 1) {
self.$disablePlugin(data.name).then(function () {
self.refresh();
QUI.MessageHandler.addSuccess(QUILocale.get(
"quiqqer/ckeditor4",
"message.settings.plugins.deactivation.success"
));
}
).catch(function () {
QUI.MessageHandler.addSuccess("Failed");
});
}
});
},
$disablePlugin: function (name) {
return new Promise(function (resolve, reject) {
QUIAjax.post("package_quiqqer_ckeditor4_ajax_deactivatePlugin", resolve, {
'package' : 'quiqqer/ckeditor4',
'pluginName': name,
onError : reject
});
});
},
$enablePlugin: function (name) {
return new Promise(function (resolve, reject) {
QUIAjax.post("package_quiqqer_ckeditor4_ajax_activatePlugin", resolve, {
'package' : 'quiqqer/ckeditor4',
'pluginName': name,
onError : reject
});
});
}
}
);
});
\ No newline at end of file
13f0c2edd87644aadb6e964afded3e0c composer.json
1475dd243ea98e1d4c3450c996cb4eeb ajax/deactivatePlugin.php
3e988b01f5e7459c133209c200d84a6f bin/defaultWysiwyg.css
429efbb96844210f0d0bf70499849138 ajax/uninstallPlugin.php
57637cb7ef2e48295ba77cfacbf609af src/QUI/Ckeditor/Plugins/Manager.php
5b49bec76fe68e69db9130c55175a953 bin/Editor.js
686eaf44c5fec33c30250447af6217b1 ajax/installPlugin.php
7734c8b62d016457e71b57accb3c5350 bin/Editor.css
adac1ee419a8d29538b4d6495b0a4c75 README.md
ae791a7b288e8abf8ea9bee2719e22c9 locale.xml
b234ee4d69f5fce4486a80fdaf4a4263 LICENSE
c2d12d54ab678a2f95667c7ca421eb98 ajax/activatePlugin.php
d7c5658381f5003dfe13b8c3fd3460ec package.xml
dd6c0092b186bfa7a9957ce495abaf7d wysiwyg.xml
{
"name": "quiqqer\/ckeditor4",
"type": "quiqqer-library",
"description": "CKEditor for the QUIQQER CMS - enable the ckeditor for quiqqer",
"version": "2.0.0-dev",
"license": "GPL-2.0+",
"authors": [
{
"name": "Henning Leutz",
"email": "leutz@pcsg.de",
"homepage": "http:\/\/www.pcsg.de",
"role": "Developer"
"name": "quiqqer\/ckeditor4",
"type": "quiqqer-library",
"description": "CKEditor for the QUIQQER CMS - enable the ckeditor for quiqqer",
"version": "2.0.0-dev",
"license": "GPL-2.0+",
"authors": [
{
"name": "Henning Leutz",
"email": "leutz@pcsg.de",
"homepage": "http:\/\/www.pcsg.de",
"role": "Developer"
}
],
"support": {
"email": "support@pcsg.de"
},
"require": {
"quiqqer\/quiqqer": "*",
"quiqqer\/qui": ">=1|dev-master|dev-dev",
"ckeditor\/ckeditor": "4.6.*"
},
"autoload": {
"psr-4": {
"QUI\\Ckeditor\\": "src\/QUI\/Ckeditor\/",
"QUI\\Ckeditor\\Plugins\\": "src\/QUI\/Ckeditor\/Plugins\/"
}
}
],
"support": {
"email": "support@pcsg.de"
},
"require": {
"quiqqer\/quiqqer": "*",
"quiqqer\/qui": ">=1|dev-master|dev-dev",
"ckeditor\/ckeditor": "4.6.*"
},
"autoload": {
"psr-4": {
"QUI\\Ckeditor\\": "src\/QUI\/Ckeditor\/",
"QUI\\Ckeditor\\Plugins\\": "src\/QUI\/Ckeditor\/Plugins\/"
}
},
"extra": {
"branch-alias": {
"dev-dev": "2.0.0-dev"
}
}
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<events>
<event on="onPackageSetup" fire="\QUI\Ckeditor\EventHandler::onPackageSetup" />
<event on="onPackageUpdate" fire="\QUI\Ckeditor\EventHandler::onPackageUpdate" />
</events>
......@@ -10,5 +10,43 @@
<de><![CDATA[Integration den CKEditor in QUIQQER.]]></de>
<en><![CDATA[Integrate the CKEditor into QUIQQER.]]></en>
</locale>
<locale name="exception.plugin.activate.plugin.not.found">
<de><![CDATA[Das angegeben Plugin wurde nicht gefunden.]]></de>
<en><![CDATA[The provided plugin was not found.]]></en>
</locale>
<locale name="exception.plugin.already.active">
<de><![CDATA[Das angegebene Plugin ist bereits aktiv]]></de>
<en><![CDATA[The plugin is active already.]]></en>
</locale>
<locale name="exception.plugin.activate.plugin.not.active">
<de><![CDATA[Das angegebene Plugin ist bereits deaktiviert]]></de>
<en><![CDATA[The given plugin is not active]]></en>
</locale>
<!--Settings -->
<locale name="editors.settings.plugins.table.header.state">
<de><![CDATA[Status]]></de>
<en><![CDATA[State]]></en>
</locale>
<locale name="editors.settings.plugins.table.header.name">
<de><![CDATA[Name]]></de>
<en><![CDATA[Name]]></en>
</locale>
<locale name="editors.settings.plugins.table.button.activate">
<de><![CDATA[Aktivieren]]></de>
<en><![CDATA[Activate]]></en>
</locale>
<locale name="editors.settings.plugins.table.button.deactivate">
<de><![CDATA[Deaktivieren]]></de>
<en><![CDATA[Deactivate]]></en>
</locale>
<locale name="message.settings.plugins.activation.success">
<de><![CDATA[Plugin erfolgreich aktiviert]]></de>
<en><![CDATA[Plugin enabled successfully]]></en>
</locale>
<locale name="message.settings.plugins.deactivation.success">
<de><![CDATA[Plugin erfolgreich deaktiviert]]></de>
<en><![CDATA[Plugin disabled successfully]]></en>
</locale>
</groups>
</locales>
\ No newline at end of file
<?php
namespace QUI\Ckeditor;
use QUI\Ckeditor\Plugins\Manager;
use QUI\Package\Package;
use QUI\System\Log;
class EventHandler
{
/**
* @param Package $Package
*/
public static function onPackageSetup($Package)
{
if ($Package->getName() != "quiqqer/ckeditor4") {
return;
}
$PluginManager = new Manager();
$PluginManager->installPluginsFromSource();
}
/**
* @param Package $Package
*/
public static function onPackageUpdate($Package)
{
if ($Package->getName() != "quiqqer/ckeditor4") {
return;
}
$PluginManager = new Manager();
$PluginManager->updatePlugins();
}
}
\ No newline at end of file
......@@ -3,33 +3,282 @@
namespace QUI\Ckeditor\Plugins;
use QUI\Exception;
use QUI\Utils\Security\Orthos;
use QUI\Utils\System\File;
class Manager
{
protected $pluginDir;
protected $pluginConfig;
protected $activePluginDir;
protected $installedPluginDir;
/**
* Manager constructor.
*/
public function __construct()
{
$this->pluginDir = \QUI::getPackage("quiqqer/ckeditor4")->getVarDir()."/plugins";
$this->pluginConfig = "";
$this->activePluginDir = \QUI::getPackage("quiqqer/ckeditor4")->getVarDir() . "/plugins/bin";
$this->installedPluginDir = \QUI::getPackage("quiqqer/ckeditor4")->getVarDir() . "/plugins/installed";
if (!is_dir($this->activePluginDir)) {
mkdir($this->activePluginDir, 0755, true);
}
if (!is_dir($this->installedPluginDir)) {
mkdir($this->installedPluginDir, 0755, true);
}
}
/**
* Activates the given plugin name
*
* @param $pluginName
*
* @throws Exception
*/
public function activate($pluginName)
{
$pluginName = Orthos::clearPath($pluginName);
$pluginName = str_replace("/", "", $pluginName);
if (!is_dir($this->installedPluginDir . "/" . $pluginName)) {
throw new Exception(array("quiqqer/ckeditor4", "exception.plugin.activate.plugin.not.found"));
}
if (is_dir($this->activePluginDir . "/" . $pluginName)) {
throw new Exception(array("quiqqer/ckeditor4", "exception.plugin.already.active"));
}
rename($this->installedPluginDir . "/" . $pluginName, $this->activePluginDir . "/" . $pluginName);
}
public function activate($pluginName){
/**
* Deactivates the given plugin name
*
* @param $pluginName
*
* @throws Exception
*/
public function deactivate($pluginName)
{
$pluginName = Orthos::clearPath($pluginName);
$pluginName = str_replace("/", "", $pluginName);
if (!is_dir($this->activePluginDir . "/" . $pluginName)) {
throw new Exception(array("quiqqer/ckeditor4", "exception.plugin.activate.plugin.not.active"));
}
if (is_dir($this->installedPluginDir . "/" . $pluginName)) {
File::deleteDir($this->activePluginDir . "/" . $pluginName);
return;
}
rename($this->activePluginDir . "/" . $pluginName, $this->installedPluginDir . "/" . $pluginName);
}
/**
* Returns a list of all plugins and their details
* Format:
* array(
* [0] => array(
* ["name"] => "pluginname",
* ["state"] => 0|1 (1 for active; 0 for inactive)
* )
* )
*
* @return array
*/
public function getAllPlugins()
{
$result = array();
foreach ($this->getActivePlugins() as $plugin) {
$result[] = array(
'name' => $plugin,
'state' => 1
);
}
foreach ($this->getInstalledPlugins() as $plugin) {
$result[] = array(
'name' => $plugin,
'state' => 0
);
}
return $result;
}
/**
* Returns all installed plugins
*
* @return string[] - array of plugin names
*/
public function getInstalledPlugins()
{
$result = array();
$content = scandir($this->installedPluginDir);
if ($content === false) {
return array();
}
foreach ($content as $entry) {
if ($entry == "." || $entry == "..") {
continue;
}
$fullpath = $this->installedPluginDir . "/" . $entry;
if (!is_dir($fullpath)) {
continue;
}
$result[] = $entry;
}
return $result;
}
public function deactivate($pluginName){
/**
* Returns all active plugins
*
* @return string[] - Array of active plugin names
*/
public function getActivePlugins()
{
$result = array();
$content = scandir($this->activePluginDir);
if ($content === false) {
return array();
}
foreach ($content as $entry) {
if ($entry == "." || $entry == "..") {
continue;
}
$fullpath = $this->activePluginDir . "/" . $entry;
if (!is_dir($fullpath)) {
continue;
}
$result[] = $entry;
}
return $result;
}
public function install($pluginName){
/**
* Installs the plugins from the source packages quiqqer/ckeditor4 and ckeditor4/ckeditor4
*
*/
public function installPluginsFromSource()
{
$srcDirs = array(
OPT_DIR . "ckeditor/ckeditor/plugins",
OPT_DIR . "quiqqer/ckeditor4/plugins"
);
foreach ($srcDirs as $srcDir) {
$targetDir = $this->installedPluginDir;
if (!is_dir($srcDir)) {
return;
}
foreach (scandir($srcDir) as $entry) {
if ($entry == "." || $entry == "..") {
continue;
}
if (!is_dir($srcDir . "/" . $entry)) {
continue;
}
if (is_dir($targetDir . "/" . $entry)) {
continue;
}
if (is_dir($this->activePluginDir . "/" . $entry)) {
continue;
}
File::dircopy(
$srcDir . "/" . $entry,
$targetDir . "/" . $entry
);
}
}
}
public function deinstall($pluginName){
/**
* Updates the plugins
*/
public function updatePlugins()
{
$srcDirs = array(
OPT_DIR . "ckeditor/ckeditor/plugins",
OPT_DIR . "quiqqer/ckeditor4/plugins"
);
foreach ($srcDirs as $srcDir) {
if (!is_dir($srcDir)) {
return;
}
foreach (scandir($srcDir) as $entry) {
if ($entry == "." || $entry == "..") {
continue;
}
if (!is_dir($srcDir . "/" . $entry)) {
continue;
}
# Check if/where the plugin is installed
$targetDir = $this->installedPluginDir . "/" . $entry;
if (is_dir($this->activePluginDir . "/" . $entry)) {
$targetDir = $this->activePluginDir . "/" . $entry;
}
if (is_dir($targetDir)) {
File::deleteDir($targetDir);
}
File::dircopy(
$srcDir . "/" . $entry,
$targetDir
);
}
}
}
/**
* Returns the plugin dir
*
* @return string
*/
public function getPluginDir()
{
return \QUI::getPackage("quiqqer/ckeditor4")->getVarDir() . "/plugins";
}
}
\ No newline at end of file
0% Lade oder .
You are about to add 0 people to the discussion. Proceed with caution.
Bearbeitung dieser Nachricht zuerst beenden!
Bitte registrieren oder zum Kommentieren