function ckeditor_cfgCK_Smileys() { if (ckeditor_tweaks_actifs('smileys')) { if (function_exists('smileys_installe')) { // le plugins couteau suisse smileys doit être activé $result = smileys_installe() ; $smileys = $result['smileys'] ; if (is_array($smileys)) { $sm_desc = array() ; $sm_img = array() ; foreach($smileys[2] as $ndx => $img) { // ceci permet d'éliminer automatiquement des doublons $sm_desc[$img] = preg_replace("~'~", "\\\\'",$smileys[0][$ndx]) ; $sm_img[$img] = $img ; } $sm_desc = array_values($sm_desc) ; $sm_img = array_values($sm_img) ; $sm_path = _CKE_DIR_SMILEYS ; return array($sm_desc,$sm_img,$sm_path) ; } } } return false ; }
function formulaires_configurer_ckeditor_p2_traiter_dist() { if (_request("_cfg_delete")) { $valeurs = formulaires_configurer_ckeditor_p2_charger_dist() ; foreach($valeurs as $cle => $valeur) { if (preg_match('~^tool_~',$cle)) { effacer_config("ckeditor/$cle") ; // éviter que les champs ne soit préremplis avec les valeurs précédentes unset($_POST[$cle]) ; } } return array('message_erreur' => _T('ckeditor:ck_delete')) ; } else { foreach($GLOBALS['toolbars'] as $toolbar) { foreach($toolbar as $tool => $size) { if (!ckeditor_tweaks_actifs('smileys') && ($tool == 'Smiley')) continue ; ecrire_config("ckeditor/tool_$tool", _request("tool_$tool")==='on'?1:0) ; } } return array('message_ok' => _T('ckeditor:ck_ok')) ; } }
function formulaires_configurer_ckeditor_p7_charger_dist() { ($cfg = lire_config("ckeditor")) || ($cfg = array()) ; $plugin_dir = find_in_path('plugins/ckeditor') ; $plugins_cpt = 0 ; if (is_dir($plugin_dir)) { $dir = @opendir($plugin_dir) ; $fieldsets_plugin = array() ; while($item = @readdir($dir)) { if (is_file($plugin_dir.'/'.$item.'/plugin.js')) { $plugins_cpt++ ; $plugins_list[$plugins_cpt] = $item ; } } $error = 'ckeditor:aucun_plugin' ; } else { $error = 'ckeditor:aide_plugin' ; } if ($plugins_cpt>0) { $valeurs = array( 'plugin_position_reference' => $cfg['plugin_position_reference'], 'pluginbarreposition' => $cfg['pluginbarreposition'] ) ; $fieldsets_plugin[] = array( 'saisie' => 'hidden', 'options' => array( 'nom' => 'liste_plugins' ) ) ; $valeurs['liste_plugins'] = serialize($plugins_list) ; $datas = range(1, $plugins_cpt) ; foreach($plugins_list as $cpt => $nom) { $valeurs['chemin_'.$cpt] = $plugin_dir.'/'.$nom ; $valeurs['actif_'.$cpt] = $cfg['plugins'][$nom]['actif']?'on':'off' ; $valeurs['bouton_'.$cpt] = $cfg['plugins'][$nom]['bouton']?'on':'off' ; $valeurs['nom_bouton_'.$cpt] = $cfg['plugins'][$nom]['nom_bouton'] ; $valeurs['ordre_bouton_'.$cpt] = $cfg['plugins'][$nom]['ordre_bouton'] ; $fieldsets_plugin[] = array( 'saisie' => 'fieldset', 'options' => array( 'nom' => 'plugin_fs_'.$nom, 'label' => 'plugin : '.ucfirst($nom), 'pliable' => 'oui', 'plie' => 'nom' ), 'saisies' => array( array( 'saisie' => 'hidden', 'options' => array( 'nom' => 'chemin_'.$cpt ) ), array( 'saisie' => 'case', 'options' => array( 'nom' => 'actif_'.$cpt, 'label_case' => _T('ckeditor:plugin_active') ) ), array( 'saisie' => 'case', 'options' => array( 'nom' => 'bouton_'.$cpt, 'label_case' => _T('ckeditor:plugin_bouton') ) ), array( 'saisie' => 'input', 'options' => array( 'nom' => 'nom_bouton_'.$cpt, 'label' => _T('ckeditor:nom_du_bouton') ) ), array( 'saisie' => 'selection', 'options' => array( 'nom' => 'ordre_bouton_'.$cpt, 'label' => _T('ckeditor:ordre_du_bouton'), 'datas' => $datas ) ) ) ) ; } $toolbar_datas = array() ; foreach($GLOBALS['toolbars'] as $toolbar) { foreach($toolbar as $tool => $size) { if (!ckeditor_tweaks_actifs('smileys') && ($tool == 'Smiley')) continue ; $toolbar_datas[$tool] = _T('ckeditor:tool_'.$tool) ; } } $valeurs['saisies_cke_page7'] = array( array( 'saisie' => 'fieldset', 'options' => array( 'nom' => 'liste_ck_plugins', 'label' => _T('ckeditor:liste_plugins_ckeditor') ), 'saisies' => $fieldsets_plugin ), array( 'saisie' => 'fieldset', 'options' => array( 'nom' => 'options_position', 'label' => _T('ckeditor:plugins_barre_position') ), 'saisies' => array( array( 'saisie' => 'radio', 'options' => array( 'nom' => 'pluginbarreposition', 'defaut' => 'apres', 'datas' => array( 'avant'=>_T('ckeditor:avant'), 'apres'=>_T('ckeditor:apres') ) ) ), array( 'saisie' => 'selection', 'options' => array( 'nom' => 'plugin_position_reference', 'datas' => $toolbar_datas ) ) ) ) ) ; } else { $valeurs['saisies_cke_page7'] = array( array( 'saisie' => 'explication_spip', 'options' => array( 'nom' => 'erreur_plugin', 'texte' => _T($error) ) ) ) ; } return $valeurs ; }
function ckeditor_html2spip($texte) { $ckeditor_html2spip_pre = charger_fonction('ckeditor_html2spip_pre',''); $texte = $ckeditor_html2spip_pre($texte); $search[] = "~<br/?>(\s|\r|\n)*</li>(\s|\r|\n)*~" ; // fix: http://contrib.spip.net/CKeditor-3-0#forum468504 $replace[] = "</li>" ; if (PROTECTED_SPIP_TAGS) { $search[] = "#<(".PROTECTED_SPIP_TAGS.".*?)>#s" ; $replace[] = "<$1>" ; } if (CLOSED_PROTECTED_SPIP_TAGS) { $search[] = "#<(".CLOSED_PROTECTED_SPIP_TAGS.")([^>]*)>(.*?)</\\1>#se" ; $replace[] = "ckeditor_tag_protect('$3','$1','$2')" ; } if (ckeditor_tweaks_actifs('decoupe')) { $search[] = "#\s*<div\s*style=\"page-break-after:\s*always\s*;\s*\">.*?</div>\s*#si" ; // saut de page if (ckeditor_lire_config("html2spip", _CKE_HTML2SPIP_DEF)) { $replace[] = "\n\n<p>++++</p>\n" ; } else { $replace[] = "\n\n++++\n\n" ; } } $search[] = "#<a\s+([^>]*?)\s*href=(\"|')(.*?)\\2\s*([^>]*?)\s*>(.*?)</a>#sei" ; // les liens $replace[] = "ckeditor_traite_lien_html('$5','$3','$1','$4')" ; $search[] = "#<a[^>]+name=(\"|')(.*?)\\1[^>]*></a>#si" ; // les ancres $replace[] = '[#$2<-]' ; $search[] = "#<img\s*([^>]*?)\s*src=\"([^\"]*?)\?docid=(\d+)(?:&|&)doctype=(\w+)(?:(?:&|&)docparam=([^\"]*))?\"\s*([^>]*?)\s*>#sei" ; // les images $replace[] = "ckeditor_traite_img_html('$3','$4','$5','$1','$6')" ; $search[] = "#<img\s*([^>]*?)\s*src=\"data:([^\"]*?)\"\s*([^>]*?)\s*>#sei" ; // les images incorporées/encodées en base64 $replace[] = "ckeditor_traite_img_data('$2','$1','$3')" ; // nettoyage des attribus ajoutés par ckeditor $search[] = "#(<\w+\s*[^>]*\b)data-cke-saved-\w+=([\"']).*?\\2([^>]*>)#si" ; $replace[] = "$1$3" ; if (ckeditor_tweaks_actifs('smileys')) { $cs_path = preg_split("~/~", _DIR_PLUGIN_COUTEAU_SUISSE) ; $search[] = "#<img[^>]+src=\"[^\"]*".$cs_path[count($cs_path)-1]."/img/smileys/[^\"]*\"[^>]+title=\"([^\"]*)\"[^>]+/>#si" ; $replace[] = "$1" ; } if (ckeditor_lire_config("spiplinks")) { $search[] = "#(\[[^\]]*?-)>([^\]]*?\])#s" ; // les liens spip $replace[] = "$1>$2" ; $search[] = "#(\[.*?)<(-\])#s" ; // les ancres spip $replace[] = "$1<$2" ; } $search[] = "#<br/?>(\r|\n|\s)*<(td|caption|tr|tbody|/td|/caption|/tr|/tbody)[^>]*>(\r|\n|\s)*#si" ; $replace[] = "<$2>" ; /* plus de nettoyage : */ $search[] = "#(\s*<p>\s*</p>)*\s*$#s" ; $replace[] = '' ; $search[] = '~<br/?>$~' ; $replace[] = '' ; $texte = preg_replace($search, $replace, $texte) ; if (ckeditor_lire_config("conversion", _CKE_CONVERSION_DEF) == 'complete') { /* * Protection des modeles SPIP dans des * <script type="ckeditor_wrap"> pour que le parser HTML * ne bloque pas dessus comme non compliant HTML. */ $search_regex = sprintf("#<%s[^>]*>#s", PROTECTED_SPIP_TAGS); $texte = preg_replace_callback($search_regex, ckeditor_wrap_callback, $texte); /* * Reconversion HTML vers typo SPIP */ require_once(find_in_path('lib/'._CKE_HTML2SPIP_VERSION.'/misc_tools.php')); require_once(find_in_path('lib/'._CKE_HTML2SPIP_VERSION.'/HTMLEngine.class')); require_once(find_in_path('lib/'._CKE_HTML2SPIP_VERSION.'/HTML2SPIPEngine.class')); include_spip('inc/ckeditor_class') ; $identity_tags = ckeditor_lire_config("html2spip_identite", _CKE_HTML2SPIP_IDENTITE); define('_HTML2SPIP_PRESERVE_DISTANT', true); $parser = new CKE_HTML2SPIPEngine($GLOBALS['db_ok']['link'], _DIR_IMG); $parser->loggingEnable(); if (trim($identity_tags) != '') $parser->addIdentityTags(explode(';', $identity_tags)); $output = $parser->translate($texte); $texte = $output['default']; /* * Recuperation des modeles SPIP proteges */ $search_regex = '|<script type="ckeditor_wrap">([^>]*)</script>|si'; $texte = preg_replace_callback($search_regex, ckeditor_unwrap_callback, $texte); } $ckeditor_html2spip_post = charger_fonction('ckeditor_html2spip_post',''); $texte = $ckeditor_html2spip_post($texte); return $texte; }