add contents
This commit is contained in:
365
lib/plugins/ckgedit/helper.php
Normal file
365
lib/plugins/ckgedit/helper.php
Normal file
@@ -0,0 +1,365 @@
|
||||
<?php
|
||||
/**
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Myron Turner <turnermm02@shaw.ca>
|
||||
*/
|
||||
|
||||
// must be run within Dokuwiki
|
||||
if (!defined('DOKU_INC')) die();
|
||||
|
||||
class helper_plugin_ckgedit extends DokuWiki_Plugin {
|
||||
|
||||
|
||||
|
||||
function getMethods(){
|
||||
$result = array();
|
||||
$result[] = array(
|
||||
'name' => 'registerOnLoad',
|
||||
'desc' => 'register some javascript to the window.onload js event',
|
||||
'params' => array('js' => 'string'),
|
||||
'return' => array('html' => 'string'),
|
||||
);
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert string configuration value into an array
|
||||
*/
|
||||
function get_conf_array($val) {
|
||||
$str = $this->getConf($val);
|
||||
$str = preg_replace('/\s+/',"",$str);
|
||||
return explode(',', $str);
|
||||
}
|
||||
|
||||
function get_ckgedit_ImageAllowedExtensions() {
|
||||
$uploadImageTypes = ARRAY();
|
||||
foreach (getMimeTypes() as $ext=>$mtype) {
|
||||
if(preg_match("/image/", $mtype)) {
|
||||
$uploadImageTypes[] = $ext;
|
||||
}
|
||||
}
|
||||
return '.(' . implode('|',$uploadImageTypes) .')$';
|
||||
}
|
||||
|
||||
function is_outOfScope(&$which="") {
|
||||
if(isset($_REQUEST['target']) && $_REQUEST['target'] == 'plugin_data') return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
function has_plugin($plugin) {
|
||||
$plugins_list = plugin_list();
|
||||
return in_array($plugin, $plugins_list);
|
||||
}
|
||||
|
||||
/**
|
||||
* function dw_edit_displayed
|
||||
* @author Myron Turner
|
||||
* determines whether or not to show or hide the
|
||||
* 'DW Edit' button
|
||||
*/
|
||||
|
||||
function dw_edit_displayed()
|
||||
{
|
||||
global $INFO;
|
||||
|
||||
$dw_edit_display = @$this->getConf('dw_edit_display');
|
||||
if(!isset($dw_edit_display))return ""; //version 0.
|
||||
if($dw_edit_display != 'all') {
|
||||
$admin_exclusion = false;
|
||||
if($dw_edit_display == 'admin' && ($INFO['isadmin'] || $INFO['ismanager']) ) {
|
||||
$admin_exclusion = true;
|
||||
}
|
||||
if($dw_edit_display == 'none' || $admin_exclusion === false) {
|
||||
return ' style = "display:none"; ';
|
||||
}
|
||||
return "";
|
||||
}
|
||||
return "";
|
||||
|
||||
}
|
||||
|
||||
function registerOnLoad($js){
|
||||
global $ID;
|
||||
global $lang;
|
||||
global $skip_styling;
|
||||
global $JSINFO;
|
||||
|
||||
$ckgedit_conf_direction = $this->getConf('direction');
|
||||
if($ckgedit_conf_direction == "dokuwiki") {
|
||||
$ckgedit_lang_direction = $lang['direction'];
|
||||
}
|
||||
else {
|
||||
$ckgedit_lang_direction = $ckgedit_conf_direction;
|
||||
}
|
||||
$ImageUploadAllowedExtensions = $this->get_ckgedit_ImageAllowedExtensions() ;
|
||||
$media_tmp_ns = preg_match('/:/',$ID) ? preg_replace('/:\w+$/',"",$ID,1) : "";
|
||||
$locktimer_msg = "Your lock for editing this page is about to expire in a minute.\\n"
|
||||
. "You can reset the timer by clicking the Back-up button.";
|
||||
|
||||
$meta_fn = metaFN($ID,'.ckgedit');
|
||||
$meta_id = 'meta/' . str_replace(':','/',$ID) . '.ckgedit';
|
||||
|
||||
global $INFO;
|
||||
global $conf;
|
||||
global $USERINFO;
|
||||
$_OS = strtolower(PHP_OS);
|
||||
$cname = getCacheName($INFO['client'].$ID,'.draft');
|
||||
$useheading = $conf['useheading'];
|
||||
|
||||
if($useheading && $useheading != 'navigation') {
|
||||
$useheading = 'y';
|
||||
}
|
||||
else $useheading = 'n';
|
||||
//msg('uh='.$useheading);
|
||||
$open_upload = $this->getConf('open_upload');
|
||||
$editor_backup = $this->getConf('editor_bak');
|
||||
$create_folder = $this->getConf('create_folder');
|
||||
$interface_lang = $this->getConf('other_lang');
|
||||
$scayt_lang = $this->getConf('scayt_lang');
|
||||
list($name,$scayt_lang) = explode('/', $scayt_lang);
|
||||
|
||||
$scayt_auto = $this->getConf('scayt_auto');
|
||||
$color_opts = $this->getConf('color_options');
|
||||
$font_opts = $this->getConf('font_options');
|
||||
$toolbar_opts = $this->getConf('alt_toolbar');
|
||||
$mfiles = $this->getConf('mfiles');
|
||||
$extra_plugins = $this->getConf('extra_plugins');
|
||||
$ckg_gui = $this->getConf('gui');
|
||||
if(!isset($INFO['userinfo']) && !$open_upload) {
|
||||
$user_type = 'visitor';
|
||||
}
|
||||
else {
|
||||
$user_type = 'user';
|
||||
}
|
||||
$save_dir = DOKU_BASE . ltrim($conf['savedir'],'/.\/');
|
||||
$fbsz_increment = isset($_COOKIE['fbsz']) && $_COOKIE['fbsz'] ? $_COOKIE['fbsz'] : '0';
|
||||
$use_pastebase64 = (isset($_COOKIE['ckgEdPaste']) && $_COOKIE['ckgEdPaste'] == 'on' ) ? 'on' : 'off';
|
||||
// if no ACL is used always return upload rights
|
||||
if($conf['useacl']) {
|
||||
$client = $_SERVER['REMOTE_USER'];
|
||||
}
|
||||
else $client = "";
|
||||
$user_name = $USERINFO['name'];
|
||||
$user_email = $USERINFO['mail'];
|
||||
|
||||
$fnencode = isset($conf['fnencode']) ? $conf['fnencode'] : 'url';
|
||||
$user_groups = $USERINFO['grps'];
|
||||
if(!$user_groups) $user_groups = array();
|
||||
if (@in_array("guest", $user_groups)) {
|
||||
$create_folder = 'n';
|
||||
$user_type = 'visitor';
|
||||
}
|
||||
$user_groups = str_replace('"','\"',implode(";;",$user_groups));
|
||||
|
||||
if($INFO['isadmin'] || $INFO['ismanager']) {
|
||||
$client = "";
|
||||
}
|
||||
|
||||
$ver_anteater = mktime(0,0,0,11,7,2010);
|
||||
$dwiki_version=mktime(0,0,0,01,01,2008);
|
||||
|
||||
if(isset($conf['fnencode'])) {
|
||||
$ver_anteater = mktime(0,0,0,11,7,2010);
|
||||
$dwiki_version=mktime(0,0,0,11,7,2010);
|
||||
}
|
||||
else if(function_exists('getVersionData')) {
|
||||
$verdata= getVersionData();
|
||||
if(isset($verdata) && preg_match('/(\d+)-(\d+)-(\d+)/',$verdata['date'],$ver_date)) {
|
||||
if($ver_date[1] >= 2005 && ($ver_date[3] > 0 && $ver_date[3] < 31) && ($ver_date[2] > 0 && $ver_date[2] <= 12)) {
|
||||
// month day year
|
||||
$dwiki_version=@mktime(0, 0, 0, $ver_date[2],$ver_date[3], $ver_date[1]);
|
||||
if(!$dwiki_version) $dwiki_version = mktime(0,0,0,01,01,2008);
|
||||
$ver_anteater = mktime(0,0,0,11,7,2010);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$ckg_brokenimg = $this->getLang('broken_image');
|
||||
$default_fb = $this->getConf('default_fb');
|
||||
if($default_fb == 'none') {
|
||||
$client = "";
|
||||
}
|
||||
|
||||
$doku_base = DOKU_BASE;
|
||||
|
||||
return <<<end_of_string
|
||||
|
||||
|
||||
<script type='text/javascript'>
|
||||
//<![CDATA[
|
||||
|
||||
if(window.dw_locktimer) {
|
||||
var locktimer = dw_locktimer;
|
||||
}
|
||||
var FCKRecovery = "";
|
||||
var oldonload = window.onload;
|
||||
var ourLockTimerINI = false;
|
||||
|
||||
var ckgedit_onload = function() { $js };
|
||||
window.onload = ckgedit_onload;
|
||||
|
||||
function getCurrentWikiNS() {
|
||||
var DWikiMediaManagerCommand_ns = '$media_tmp_ns';
|
||||
return DWikiMediaManagerCommand_ns;
|
||||
}
|
||||
|
||||
var ourFCKEditorNode = null;
|
||||
|
||||
function revert_to_prev() {
|
||||
if(!(GetE('saved_wiki_html').innerHTML.length)) {
|
||||
if(!confirm(backup_empty)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
CKEDITOR.instances.wiki__text.setData( GetE('saved_wiki_html').innerHTML);
|
||||
window.dwfckTextChanged = true;
|
||||
}
|
||||
|
||||
|
||||
function draft_delete() {
|
||||
|
||||
var debug = false;
|
||||
var params = "draft_id=$cname";
|
||||
jQuery.ajax({
|
||||
url: DOKU_BASE + 'lib/plugins/ckgedit/scripts/draft_delete.php',
|
||||
data: params,
|
||||
type: 'POST',
|
||||
dataType: 'html',
|
||||
success: function(data){
|
||||
if(debug) {
|
||||
alert(data);
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
window.textChanged = false;
|
||||
}
|
||||
|
||||
var DWFCK_EditorWinObj;
|
||||
function FCKEditorWindowObj(w) {
|
||||
DWFCK_EditorWinObj = w;
|
||||
}
|
||||
|
||||
function ckgedit_isRTL() {
|
||||
var direction = "$ckgedit_lang_direction";
|
||||
|
||||
return direction == 'rtl';
|
||||
|
||||
}
|
||||
|
||||
function remove_styling() {
|
||||
//'TextColor,BGColor, FontAssist,Font,FontSize';
|
||||
var opts = "";
|
||||
var color_opts = parseInt( "$color_opts");
|
||||
var font_opts = parseInt("$font_opts");
|
||||
var skip_styling=parseInt("$skip_styling");
|
||||
if(color_opts) {
|
||||
opts ='TextColor,BGColor,FontAssist';
|
||||
}
|
||||
else if(!skip_styling) {
|
||||
opts = 'FontAssist';
|
||||
}
|
||||
if(font_opts) {
|
||||
if(color_opts || !skip_styling) opts+=',';
|
||||
opts +='Font,FontSize';
|
||||
}
|
||||
if("$toolbar_opts") {
|
||||
if(opts) opts+=',';
|
||||
opts+="$toolbar_opts";
|
||||
}
|
||||
|
||||
return opts;
|
||||
|
||||
}
|
||||
|
||||
function extra_plugins(config) {
|
||||
if("$use_pastebase64" == 'on') config.addPaste();
|
||||
return "$extra_plugins";
|
||||
}
|
||||
|
||||
function ckgedit_language_chk(config) {
|
||||
if("$scayt_auto" == 'on') {
|
||||
config.scayt_autoStartup = true;
|
||||
}
|
||||
else config.scayt_autoStartup = false;
|
||||
if("$scayt_auto" == 'disable') {
|
||||
config.scayt__disable = true;
|
||||
}
|
||||
config.scayt_sLang="$scayt_lang";
|
||||
var lang = "$interface_lang";
|
||||
if(lang == 'default') return; ;
|
||||
config.language = lang;
|
||||
}
|
||||
|
||||
function getCKEditorGUI() {
|
||||
return "$ckg_gui";
|
||||
}
|
||||
var oDokuWiki_FCKEditorInstance;
|
||||
function FCKeditor_OnComplete( editorInstance )
|
||||
{
|
||||
|
||||
oDokuWiki_FCKEditorInstance = editorInstance;
|
||||
editorInstance.on( 'key', handlekeypress, editorInstance );
|
||||
|
||||
CKEDITOR.instances.wiki__text.on('change', function(event) {
|
||||
window.dwfckTextChanged = true;
|
||||
window.textChanged = true;
|
||||
});
|
||||
|
||||
editorInstance.on("focus", function(e) {
|
||||
window.dwfckTextChanged = true;
|
||||
});
|
||||
|
||||
var broken_image ='http://' + location.host + DOKU_BASE + '/lib/plugins/ckgedit/fckeditor/userfiles/blink.jpg?nolink&33x34';
|
||||
editorInstance.on("paste", function(e) {
|
||||
// https://stackoverflow.com/questions/15900485/correct-way-to-convert-size-in-bytes-to-kb-mb-gb-in-javascript
|
||||
var formatBytes = function(bytes,decimals) {
|
||||
if(bytes == 0) return '0 Bytes';
|
||||
var k = 1024,
|
||||
dm = decimals <= 0 ? 0 : decimals || 2,
|
||||
sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
|
||||
i = Math.floor(Math.log(bytes) / Math.log(k));
|
||||
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
|
||||
}
|
||||
var len = e.data.dataValue.length;
|
||||
var len = e.data.dataValue.length - 'data:image/png;base64,'.length;
|
||||
var size = formatBytes(len,1);
|
||||
var broken_msg = ckg_RawImgMsg();
|
||||
broken_msg += " " + size;
|
||||
if(e.data.dataValue.match(/data:image\/\w+;base64/) && len > 2500000) {
|
||||
alert(broken_msg);
|
||||
e.data.dataValue = '<img src ='+ broken_image + '/>';
|
||||
}
|
||||
});
|
||||
|
||||
oDokuWiki_FCKEditorInstance.dwiki_user = "$user_type";
|
||||
oDokuWiki_FCKEditorInstance.dwiki_client = "$client";
|
||||
oDokuWiki_FCKEditorInstance.dwiki_usergroups = "$user_groups";
|
||||
oDokuWiki_FCKEditorInstance.dwiki_doku_base = "$doku_base";
|
||||
oDokuWiki_FCKEditorInstance.dwiki_create_folder = "$create_folder";
|
||||
oDokuWiki_FCKEditorInstance.dwiki_fnencode = "$fnencode";
|
||||
oDokuWiki_FCKEditorInstance.dwiki_version = $dwiki_version;
|
||||
oDokuWiki_FCKEditorInstance.dwiki_anteater = $ver_anteater;
|
||||
oDokuWiki_FCKEditorInstance.isLocalDwikiBrowser = false;
|
||||
oDokuWiki_FCKEditorInstance.isUrlExtern = false;
|
||||
oDokuWiki_FCKEditorInstance.isDwikiMediaFile = false;
|
||||
oDokuWiki_FCKEditorInstance.imageUploadAllowedExtensions="$ImageUploadAllowedExtensions";
|
||||
oDokuWiki_FCKEditorInstance.fckgUserName = "$user_name";
|
||||
oDokuWiki_FCKEditorInstance.fckgUserMail="$user_email";
|
||||
oDokuWiki_FCKEditorInstance.useheading = "$useheading";
|
||||
oDokuWiki_FCKEditorInstance.mfiles = parseInt("$mfiles");
|
||||
oDokuWiki_FCKEditorInstance.fbsz_increment=parseInt("$fbsz_increment");
|
||||
|
||||
}
|
||||
|
||||
|
||||
window.DWikifnEncode = "$fnencode";
|
||||
|
||||
//]]>
|
||||
|
||||
</script>
|
||||
end_of_string;
|
||||
}
|
||||
}
|
||||
?>
|
Reference in New Issue
Block a user