|
- <?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;
- }
- }
- ?>
|