Example #1
0
 /**
  * Initialise scribite for requested areas.
  *
  * @param array $args Text area: 'area', Module name: 'modulename'.
  *
  * @return string
  */
 public static function loader($args)
 {
     $dom = ZLanguage::getModuleDomain('Scribite');
     // Argument checks
     if (!isset($args['areas'])) {
         return LogUtil::registerError(__('Error! Scribite_Api_User::loader() "area" argument was empty.', $dom));
     }
     if (!isset($args['modulename'])) {
         $args['modulename'] = ModUtil::getName();
     }
     $module = $args['modulename'];
     // Security check if user has COMMENT permission for scribite and module
     if (!SecurityUtil::checkPermission('Scribite::', "{$module}::", ACCESS_COMMENT)) {
         return;
     }
     // check for editor argument, if none given the default editor will be used
     if (!isset($args['editor']) || empty($args['editor'])) {
         // get default editor from config
         $defaulteditor = ModUtil::getVar('Scribite', 'DefaultEditor');
         if ($defaulteditor == '-') {
             return;
             // return if no default is set and no arg is given
             // id given editor doesn't exist use default editor
         } else {
             $args['editor'] = $defaulteditor;
         }
     }
     // check if editor argument exists, load default if not given
     if (ModUtil::apiFunc('Scribite', 'user', 'getEditors', array('editorname' => $args['editor']))) {
         // set some general parameters
         $zBaseUrl = rtrim(System::getBaseUrl(), '/');
         $zikulaThemeBaseURL = "{$zBaseUrl}/themes/" . DataUtil::formatForOS(UserUtil::getTheme());
         $zikulaBaseURI = rtrim(System::getBaseUri(), '/');
         $zikulaBaseURI = ltrim($zikulaBaseURI, '/');
         $zikulaRoot = rtrim($_SERVER['DOCUMENT_ROOT'], '/');
         // prepare view instance
         $view = Zikula_View::getInstance('Scribite');
         $view->setCaching(false);
         $view->assign(ModUtil::getVar('Scribite'));
         $view->assign('modname', $args['modulename']);
         $view->assign('zBaseUrl', $zBaseUrl);
         $view->assign('zikulaBaseURI', $zikulaBaseURI);
         $view->assign('zikulaRoot', $zikulaRoot);
         $view->assign('editor_dir', $args['editor']);
         $view->assign('zlang', ZLanguage::getLanguageCode());
         // check for modules installed providing plugins and load specific javascripts
         if (ModUtil::available('photoshare')) {
             PageUtil::AddVar('javascript', 'modules/photoshare/javascript/findimage.js');
         }
         if (ModUtil::available('mediashare')) {
             PageUtil::AddVar('javascript', 'modules/mediashare/javascript/finditem.js');
         }
         if (ModUtil::available('pagesetter')) {
             PageUtil::AddVar('javascript', 'modules/pagesetter/javascript/findpub.js');
         }
         if (ModUtil::available('folder')) {
             PageUtil::AddVar('javascript', 'modules/folder/javascript/selector.js');
         }
         if (ModUtil::available('MediaAttach')) {
             PageUtil::AddVar('javascript', 'modules/MediaAttach/javascript/finditem.js');
         }
         if (ModUtil::available('Files')) {
             PageUtil::AddVar('javascript', 'modules/Files/javascript/getFiles.js');
         }
         // main switch for choosen editor
         switch ($args['editor']) {
             case 'xinha':
                 // get xinha config if editor is active
                 // get plugins for xinha
                 $xinha_listplugins = ModUtil::getVar('Scribite', 'xinha_activeplugins');
                 if ($xinha_listplugins != '') {
                     $xinha_listplugins = unserialize($xinha_listplugins);
                     /* if (in_array('ExtendedFileManager', $xinha_listplugins)) {
                        $view->assign('EFMConfig', true);
                        } else { */
                     $view->assign('EFMConfig', false);
                     //}
                     $xinha_listplugins = '\'' . DataUtil::formatForDisplay(implode('\', \'', $xinha_listplugins)) . '\'';
                 }
                 // prepare areas for xinha
                 if ($args['areas'][0] == "all") {
                     $modareas = 'all';
                 } elseif ($args['areas'][0] == "PagEd") {
                     $modareas = 'PagEd';
                 } else {
                     $modareas = '\'' . DataUtil::formatForDisplay(implode('\', \'', $args['areas'])) . '\'';
                 }
                 // load Prototype
                 PageUtil::AddVar('javascript', 'prototype');
                 // set parameters
                 $view->assign('modareas', $modareas);
                 $view->assign('xinha_listplugins', $xinha_listplugins);
                 // end xinha
                 break;
                 // openwysiwyg deprecated @4.3.0
                 //                case 'openwysiwyg':
                 //                    // get openwysiwyg config if editor is active
                 //                    // prepare areas for openwysiwyg
                 //                    if ($args['areas'][0] == "all") {
                 //                        $modareas = 'all';
                 //                    } else {
                 //                        $modareas = $args['areas'];
                 //                    }
                 //
                 //                    // set parameters
                 //                    $view->assign('modareas', $modareas);
                 //
                 //                    // end openwysiwyg
                 //                    break;
             // openwysiwyg deprecated @4.3.0
             //                case 'openwysiwyg':
             //                    // get openwysiwyg config if editor is active
             //                    // prepare areas for openwysiwyg
             //                    if ($args['areas'][0] == "all") {
             //                        $modareas = 'all';
             //                    } else {
             //                        $modareas = $args['areas'];
             //                    }
             //
             //                    // set parameters
             //                    $view->assign('modareas', $modareas);
             //
             //                    // end openwysiwyg
             //                    break;
             case 'nicedit':
                 // get nicEditor config if editor is active
                 // prepare areas for nicEditor
                 if ($args['areas'][0] == "all") {
                     $modareas = 'all';
                 } else {
                     $modareas = $args['areas'];
                 }
                 // set parameters
                 $view->assign('modareas', $modareas);
                 // end nicEditor
                 break;
             case 'yui':
                 // set body class for YUI Editor
                 PageUtil::SetVar('body', 'class="yui-skin-sam"');
                 // get YUI mode from config
                 $yui_type = ModUtil::getVar('Scribite', 'yui_type');
                 // type switch
                 if ($yui_type == 'Simple') {
                     // load scripts for YUI simple mode
                     PageUtil::AddVar('stylesheet', 'http://yui.yahooapis.com/2.9.0/build/assets/skins/sam/skin.css');
                     PageUtil::AddVar('javascript', 'http://yui.yahooapis.com/2.9.0/build/yahoo-dom-event/yahoo-dom-event.js');
                     PageUtil::AddVar('javascript', 'http://yui.yahooapis.com/2.9.0/build/element/element-min.js');
                     PageUtil::AddVar('javascript', 'http://yui.yahooapis.com/2.9.0/build/container/container_core-min.js');
                     PageUtil::AddVar('javascript', 'http://yui.yahooapis.com/2.9.0/build/editor/simpleeditor-min.js');
                 } else {
                     // load scripts for YUI Editor full mode
                     PageUtil::AddVar('stylesheet', 'http://yui.yahooapis.com/2.9.0/build/assets/skins/sam/skin.css');
                     PageUtil::AddVar('javascript', 'http://yui.yahooapis.com/2.9.0/build/yahoo-dom-event/yahoo-dom-event.js');
                     PageUtil::AddVar('javascript', 'http://yui.yahooapis.com/2.9.0/build/element/element-min.js');
                     PageUtil::AddVar('javascript', 'http://yui.yahooapis.com/2.9.0/build/container/container_core-min.js');
                     PageUtil::AddVar('javascript', 'http://yui.yahooapis.com/2.9.0/build/menu/menu-min.js');
                     PageUtil::AddVar('javascript', 'http://yui.yahooapis.com/2.9.0/build/button/button-min.js');
                     PageUtil::AddVar('javascript', 'http://yui.yahooapis.com/2.9.0/build/editor/editor-min.js');
                 }
                 // prepare areas for YUI
                 if ($args['areas'][0] == "all") {
                     $modareas = 'all';
                 } else {
                     $modareas = $args['areas'];
                 }
                 // set parameters
                 $view->assign('modareas', $modareas);
                 // end yui
                 break;
             case 'ckeditor':
                 // get CKEditor config if editor is active
                 // prepare areas
                 if ($args['areas'][0] == "all") {
                     $modareas = 'all';
                 } else {
                     $modareas = $args['areas'];
                 }
                 // check for allowed html
                 $AllowableHTML = System::getVar('AllowableHTML');
                 $disallowedhtml = array();
                 while (list($key, $access) = each($AllowableHTML)) {
                     if ($access == 0) {
                         $disallowedhtml[] = DataUtil::formatForDisplay($key);
                     }
                 }
                 // load Prototype
                 PageUtil::AddVar('javascript', 'javascript/ajax/prototype.js');
                 // set parameters
                 $view->assign('modareas', $modareas);
                 $view->assign('disallowedhtml', $disallowedhtml);
                 // end ckeditor
                 break;
             case 'markitup':
                 // get markitup config if editor is active
                 // prepare areas
                 if ($args['areas'][0] == "all") {
                     $modareas = 'all';
                 } else {
                     $modareas = $args['areas'];
                 }
                 // check for allowed html
                 $AllowableHTML = System::getVar('AllowableHTML');
                 $disallowedhtml = array();
                 while (list($key, $access) = each($AllowableHTML)) {
                     if ($access == 0) {
                         $disallowedhtml[] = DataUtil::formatForDisplay($key);
                     }
                 }
                 // set parameters
                 $view->assign('modareas', $modareas);
                 $view->assign('disallowedhtml', $disallowedhtml);
                 // end markitup
                 break;
             case 'tiny_mce':
                 // get TinyMCE config if editor is active
                 // get plugins for tiny_mce
                 $tinymce_listplugins = ModUtil::getVar('Scribite', 'tinymce_activeplugins');
                 if ($tinymce_listplugins != '') {
                     $tinymce_listplugins = unserialize($tinymce_listplugins);
                     $tinymce_listplugins = DataUtil::formatForDisplay(implode(',', $tinymce_listplugins));
                 }
                 // prepare areas for tiny_mce
                 if ($args['areas'][0] == "all") {
                     $modareas = 'all';
                 } elseif ($args['areas'][0] == "PagEd") {
                     $modareas = 'PagEd';
                 } else {
                     $modareas = DataUtil::formatForDisplay(implode(',', $args['areas']));
                 }
                 // check for allowed html
                 $AllowableHTML = System::getVar('AllowableHTML');
                 $disallowedhtml = array();
                 while (list($key, $access) = each($AllowableHTML)) {
                     if ($access == 0) {
                         $disallowedhtml[] = DataUtil::formatForDisplay($key);
                     }
                 }
                 // pass disallowed html
                 $disallowedhtml = implode(',', $disallowedhtml);
                 // set parameters
                 $view->assign('modareas', $modareas);
                 $view->assign('tinymce_listplugins', $tinymce_listplugins);
                 $view->assign('disallowedhtml', $disallowedhtml);
                 // end tiny_mce
                 break;
         }
         // view output
         // 1. check if special template is required (from direct module call)
         if (isset($args['tpl']) && $view->template_exists($args['tpl'])) {
             $templatefile = $args['tpl'];
             // 2. check if a module specific template exists
         } elseif ($view->template_exists('editorheaders/' . $args['editor'] . '_' . $args['modulename'] . '.tpl')) {
             $templatefile = 'editorheaders/' . $args['editor'] . '_' . $args['modulename'] . '.tpl';
             // 3. if none of the above load default template
         } else {
             $templatefile = 'editorheaders/' . $args['editor'] . '.tpl';
         }
         $output = $view->fetch($templatefile);
         // end main switch
         return $output;
     }
 }