@@ -11,69 +11,69 @@ |
||
| 11 | 11 | \***************************************************************************/ |
| 12 | 12 | |
| 13 | 13 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 14 | - return; |
|
| 14 | + return; |
|
| 15 | 15 | } |
| 16 | 16 | |
| 17 | 17 | include_spip('inc/boutons'); |
| 18 | 18 | include_spip('base/objets'); |
| 19 | 19 | |
| 20 | 20 | function inc_icone_renommer_dist($fond, $fonction) { |
| 21 | - $size = 24; |
|
| 22 | - if (preg_match("/(?:-([0-9]{1,3}))?([.](gif|png|svg))?$/i", $fond, $match) |
|
| 23 | - and ((isset($match[0]) and $match[0]) or (isset($match[1]) and $match[1])) |
|
| 24 | - ) { |
|
| 25 | - if (isset($match[1]) and $match[1]) { |
|
| 26 | - $size = $match[1]; |
|
| 27 | - } |
|
| 28 | - $type = substr($fond, 0, -strlen($match[0])); |
|
| 29 | - if (!isset($match[2]) or !$match[2]) { |
|
| 30 | - $fond .= ".png"; |
|
| 31 | - } |
|
| 32 | - } else { |
|
| 33 | - $type = $fond; |
|
| 34 | - $fond .= ".png"; |
|
| 35 | - } |
|
| 21 | + $size = 24; |
|
| 22 | + if (preg_match("/(?:-([0-9]{1,3}))?([.](gif|png|svg))?$/i", $fond, $match) |
|
| 23 | + and ((isset($match[0]) and $match[0]) or (isset($match[1]) and $match[1])) |
|
| 24 | + ) { |
|
| 25 | + if (isset($match[1]) and $match[1]) { |
|
| 26 | + $size = $match[1]; |
|
| 27 | + } |
|
| 28 | + $type = substr($fond, 0, -strlen($match[0])); |
|
| 29 | + if (!isset($match[2]) or !$match[2]) { |
|
| 30 | + $fond .= ".png"; |
|
| 31 | + } |
|
| 32 | + } else { |
|
| 33 | + $type = $fond; |
|
| 34 | + $fond .= ".png"; |
|
| 35 | + } |
|
| 36 | 36 | |
| 37 | - $rtl = false; |
|
| 38 | - if (preg_match(',[-_]rtl$,i', $type, $match)) { |
|
| 39 | - $rtl = true; |
|
| 40 | - $type = substr($type, 0, -strlen($match[0])); |
|
| 41 | - } |
|
| 37 | + $rtl = false; |
|
| 38 | + if (preg_match(',[-_]rtl$,i', $type, $match)) { |
|
| 39 | + $rtl = true; |
|
| 40 | + $type = substr($type, 0, -strlen($match[0])); |
|
| 41 | + } |
|
| 42 | 42 | |
| 43 | - // objet_type garde invariant tout ce qui ne commence par par id_, spip_ |
|
| 44 | - // et ne finit pas par un s, sauf si c'est une exception declaree |
|
| 45 | - $type = objet_type($type, false); |
|
| 43 | + // objet_type garde invariant tout ce qui ne commence par par id_, spip_ |
|
| 44 | + // et ne finit pas par un s, sauf si c'est une exception declaree |
|
| 45 | + $type = objet_type($type, false); |
|
| 46 | 46 | |
| 47 | - $dir = "images/"; |
|
| 48 | - $f = "$type-$size.png"; |
|
| 49 | - if ($icone = find_in_theme($dir . $f)) { |
|
| 50 | - $dir = dirname($icone); |
|
| 51 | - $fond = $icone; |
|
| 47 | + $dir = "images/"; |
|
| 48 | + $f = "$type-$size.png"; |
|
| 49 | + if ($icone = find_in_theme($dir . $f)) { |
|
| 50 | + $dir = dirname($icone); |
|
| 51 | + $fond = $icone; |
|
| 52 | 52 | |
| 53 | - if ($rtl |
|
| 54 | - and $fr = $dir . '/' . str_replace("$type-", "$type-rtl-", basename($icone)) |
|
| 55 | - and file_exists($fr) |
|
| 56 | - ) { |
|
| 57 | - $fond = $fr; |
|
| 58 | - } |
|
| 53 | + if ($rtl |
|
| 54 | + and $fr = $dir . '/' . str_replace("$type-", "$type-rtl-", basename($icone)) |
|
| 55 | + and file_exists($fr) |
|
| 56 | + ) { |
|
| 57 | + $fond = $fr; |
|
| 58 | + } |
|
| 59 | 59 | |
| 60 | - $action = $fonction; |
|
| 61 | - if ($action == "supprimer.gif") { |
|
| 62 | - $action = "del"; |
|
| 63 | - } elseif ($action == "creer.gif") { |
|
| 64 | - $action = "new"; |
|
| 65 | - } elseif ($action == "edit.gif") { |
|
| 66 | - $action = "edit"; |
|
| 67 | - } |
|
| 60 | + $action = $fonction; |
|
| 61 | + if ($action == "supprimer.gif") { |
|
| 62 | + $action = "del"; |
|
| 63 | + } elseif ($action == "creer.gif") { |
|
| 64 | + $action = "new"; |
|
| 65 | + } elseif ($action == "edit.gif") { |
|
| 66 | + $action = "edit"; |
|
| 67 | + } |
|
| 68 | 68 | |
| 69 | - $fonction = ""; |
|
| 70 | - if (in_array($action, array('add','del', 'new', 'edit', 'config'))) { |
|
| 71 | - $fonction = $action; |
|
| 72 | - } |
|
| 69 | + $fonction = ""; |
|
| 70 | + if (in_array($action, array('add','del', 'new', 'edit', 'config'))) { |
|
| 71 | + $fonction = $action; |
|
| 72 | + } |
|
| 73 | 73 | |
| 74 | - // c'est bon ! |
|
| 75 | - return array($fond, $fonction); |
|
| 76 | - } |
|
| 74 | + // c'est bon ! |
|
| 75 | + return array($fond, $fonction); |
|
| 76 | + } |
|
| 77 | 77 | |
| 78 | - return array($fond, $fonction); |
|
| 78 | + return array($fond, $fonction); |
|
| 79 | 79 | } |
@@ -4,118 +4,118 @@ |
||
| 4 | 4 | // ** ne pas modifier le fichier ** |
| 5 | 5 | |
| 6 | 6 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 7 | - return; |
|
| 7 | + return; |
|
| 8 | 8 | } |
| 9 | 9 | |
| 10 | 10 | $GLOBALS[$GLOBALS['idx_lang']] = array( |
| 11 | 11 | |
| 12 | - // A |
|
| 13 | - 'accueil_site' => 'الصفحة الرئيسية', |
|
| 14 | - 'article' => 'مقال', |
|
| 15 | - 'articles' => 'المقالات', |
|
| 16 | - 'articles_auteur' => 'مقالات هذا المؤلف', |
|
| 17 | - 'articles_populaires' => 'المقالات الأكثر شعبية', |
|
| 18 | - 'articles_rubrique' => 'مقالات هذا القسم', |
|
| 19 | - 'aucun_article' => 'لا توجد مقالات على هذا العنوان', |
|
| 20 | - 'aucun_auteur' => 'لا يوجد مؤلفون على هذا العنوان', |
|
| 21 | - 'aucun_site' => 'لا توجد مواقع على هذا العنوان', |
|
| 22 | - 'aucune_breve' => 'لا توجد أخبار على هذا العنوان', |
|
| 23 | - 'aucune_rubrique' => 'لا توجد أقسام على هذا العنوان', |
|
| 24 | - 'auteur' => 'مؤلف', |
|
| 25 | - 'autres' => 'آخرون', |
|
| 26 | - 'autres_breves' => 'أخبار أخرى', |
|
| 27 | - 'autres_groupes_mots_clefs' => 'مجموعات مفاتيح أخرى', |
|
| 28 | - 'autres_sites' => 'مواقع أخرى', |
|
| 29 | - |
|
| 30 | - // B |
|
| 31 | - 'bonjour' => 'أهلاً وسهلاً', |
|
| 32 | - |
|
| 33 | - // C |
|
| 34 | - 'commenter_site' => 'تعليق على هذا الموقع', |
|
| 35 | - 'contact' => 'للاتصال', |
|
| 36 | - 'copie_document_impossible' => 'لا يمكن نسخ المستند', |
|
| 37 | - |
|
| 38 | - // D |
|
| 39 | - 'date' => 'التاريخ', |
|
| 40 | - 'dernier_ajout' => 'آخر إضافة', |
|
| 41 | - 'dernieres_breves' => 'آخر الأخبار', |
|
| 42 | - 'derniers_articles' => 'آخر المقالات', |
|
| 43 | - 'derniers_commentaires' => 'آخر التعليقات', |
|
| 44 | - 'derniers_messages_forum' => 'آخر المشاركات المنشورة في المنتديات', |
|
| 45 | - |
|
| 46 | - // E |
|
| 47 | - 'edition_mode_texte' => 'النشرة في وضعية النصوص', |
|
| 48 | - 'en_reponse' => 'رداً على:', |
|
| 49 | - 'en_resume' => 'باختصار', |
|
| 50 | - 'envoyer_message' => 'إرسال مشاركة', |
|
| 51 | - 'espace_prive' => 'المجال الخاص', |
|
| 52 | - |
|
| 53 | - // F |
|
| 54 | - 'formats_acceptes' => 'التنسيقات المسموحة: @formats@.', |
|
| 55 | - |
|
| 56 | - // H |
|
| 57 | - 'hierarchie_site' => 'هرمية الموقع', |
|
| 58 | - |
|
| 59 | - // J |
|
| 60 | - 'jours' => 'يوم', |
|
| 61 | - |
|
| 62 | - // L |
|
| 63 | - 'lien_connecter' => 'دخول', |
|
| 64 | - |
|
| 65 | - // M |
|
| 66 | - 'meme_auteur' => 'من نفس المؤلف', |
|
| 67 | - 'meme_rubrique' => 'في هذا القسم أيضاً', |
|
| 68 | - 'memes_auteurs' => 'من المؤلفين نفسهم ايضاً', |
|
| 69 | - 'message' => 'مشاركة', |
|
| 70 | - 'messages_forum' => 'مشاركة منتدى', |
|
| 71 | - 'messages_recents' => 'أحدث المشاركات', |
|
| 72 | - 'mots_clef' => 'مفتاح', |
|
| 73 | - 'mots_clefs' => 'المفاتيح', |
|
| 74 | - 'mots_clefs_meme_groupe' => 'المفاتيح الأخرى في هذه المجموعة', |
|
| 75 | - |
|
| 76 | - // N |
|
| 77 | - 'navigation' => 'تصفح', |
|
| 78 | - 'nom' => 'الاسم', |
|
| 79 | - 'nouveautes' => 'الجديد', |
|
| 80 | - 'nouveautes_web' => 'الجديد على النسيج', |
|
| 81 | - 'nouveaux_articles' => 'المقالات الجديدة', |
|
| 82 | - 'nouvelles_breves' => 'الأخبار الجديدة', |
|
| 83 | - |
|
| 84 | - // P |
|
| 85 | - 'page_precedente' => 'الصفحة السابقة', |
|
| 86 | - 'page_suivante' => 'الصفحة التالية', |
|
| 87 | - 'par_auteur' => 'بقلم ', |
|
| 88 | - 'participer_site' => 'يمكنك المشاركة في هذا الموقع، بالتسجيل أدناه ونشر مقالاتك. وبعد التسجيل، سوف تصلك رسالة فورية بالبريد الإلكتروني تتضمن معرفك الخاص الذي يسمح لك بالدخول الى المجال الخاص.', |
|
| 89 | - 'plan_site' => 'خريطة الموقع', |
|
| 90 | - 'popularite' => 'الشعبية', |
|
| 91 | - 'poster_message' => 'إبعث برسالة', |
|
| 92 | - 'proposer_site' => 'يمكنك افتراح إضافة موقع الى هذا القسم:', |
|
| 93 | - |
|
| 94 | - // R |
|
| 95 | - 'repondre_article' => 'الرد على هذا المقال', |
|
| 96 | - 'repondre_breve' => 'الرد على هذا الخبر', |
|
| 97 | - 'resultats_recherche' => 'نتائج البحث', |
|
| 98 | - 'retour_debut_forums' => 'عودة الى بداية المنتديات', |
|
| 99 | - 'rubrique' => 'القسم', |
|
| 100 | - 'rubriques' => 'الأقسام', |
|
| 101 | - |
|
| 102 | - // S |
|
| 103 | - 'signatures_petition' => 'التوقيعات', |
|
| 104 | - 'site_realise_avec_spip' => 'موقع صمم بنظام SPIP', |
|
| 105 | - 'sites_web' => 'مواقع النسيج', |
|
| 106 | - 'sous_rubriques' => 'الأقسام الفرعية', |
|
| 107 | - 'spam' => 'خنزرة', |
|
| 108 | - 'suite' => 'تتمة', |
|
| 109 | - 'sur_web' => 'على النسيج', |
|
| 110 | - 'syndiquer_rubrique' => 'ترخيص هذا القسم', |
|
| 111 | - 'syndiquer_site' => 'ترخيص كامل الموقع', |
|
| 112 | - |
|
| 113 | - // T |
|
| 114 | - 'texte_lettre_information' => 'ها هي نشرة الموقع', |
|
| 115 | - 'texte_lettre_information_2' => 'تحصي هذه النشرة المقالات والأخبار المنشورة منذ ', |
|
| 116 | - |
|
| 117 | - // V |
|
| 118 | - 'ver_imprimer' => 'نسخة للطباعة', |
|
| 119 | - 'voir_en_ligne' => 'عرض مباشر', |
|
| 120 | - 'voir_squelette' => 'عرض الصفحة النموذجية لهذه الصفحة' |
|
| 12 | + // A |
|
| 13 | + 'accueil_site' => 'الصفحة الرئيسية', |
|
| 14 | + 'article' => 'مقال', |
|
| 15 | + 'articles' => 'المقالات', |
|
| 16 | + 'articles_auteur' => 'مقالات هذا المؤلف', |
|
| 17 | + 'articles_populaires' => 'المقالات الأكثر شعبية', |
|
| 18 | + 'articles_rubrique' => 'مقالات هذا القسم', |
|
| 19 | + 'aucun_article' => 'لا توجد مقالات على هذا العنوان', |
|
| 20 | + 'aucun_auteur' => 'لا يوجد مؤلفون على هذا العنوان', |
|
| 21 | + 'aucun_site' => 'لا توجد مواقع على هذا العنوان', |
|
| 22 | + 'aucune_breve' => 'لا توجد أخبار على هذا العنوان', |
|
| 23 | + 'aucune_rubrique' => 'لا توجد أقسام على هذا العنوان', |
|
| 24 | + 'auteur' => 'مؤلف', |
|
| 25 | + 'autres' => 'آخرون', |
|
| 26 | + 'autres_breves' => 'أخبار أخرى', |
|
| 27 | + 'autres_groupes_mots_clefs' => 'مجموعات مفاتيح أخرى', |
|
| 28 | + 'autres_sites' => 'مواقع أخرى', |
|
| 29 | + |
|
| 30 | + // B |
|
| 31 | + 'bonjour' => 'أهلاً وسهلاً', |
|
| 32 | + |
|
| 33 | + // C |
|
| 34 | + 'commenter_site' => 'تعليق على هذا الموقع', |
|
| 35 | + 'contact' => 'للاتصال', |
|
| 36 | + 'copie_document_impossible' => 'لا يمكن نسخ المستند', |
|
| 37 | + |
|
| 38 | + // D |
|
| 39 | + 'date' => 'التاريخ', |
|
| 40 | + 'dernier_ajout' => 'آخر إضافة', |
|
| 41 | + 'dernieres_breves' => 'آخر الأخبار', |
|
| 42 | + 'derniers_articles' => 'آخر المقالات', |
|
| 43 | + 'derniers_commentaires' => 'آخر التعليقات', |
|
| 44 | + 'derniers_messages_forum' => 'آخر المشاركات المنشورة في المنتديات', |
|
| 45 | + |
|
| 46 | + // E |
|
| 47 | + 'edition_mode_texte' => 'النشرة في وضعية النصوص', |
|
| 48 | + 'en_reponse' => 'رداً على:', |
|
| 49 | + 'en_resume' => 'باختصار', |
|
| 50 | + 'envoyer_message' => 'إرسال مشاركة', |
|
| 51 | + 'espace_prive' => 'المجال الخاص', |
|
| 52 | + |
|
| 53 | + // F |
|
| 54 | + 'formats_acceptes' => 'التنسيقات المسموحة: @formats@.', |
|
| 55 | + |
|
| 56 | + // H |
|
| 57 | + 'hierarchie_site' => 'هرمية الموقع', |
|
| 58 | + |
|
| 59 | + // J |
|
| 60 | + 'jours' => 'يوم', |
|
| 61 | + |
|
| 62 | + // L |
|
| 63 | + 'lien_connecter' => 'دخول', |
|
| 64 | + |
|
| 65 | + // M |
|
| 66 | + 'meme_auteur' => 'من نفس المؤلف', |
|
| 67 | + 'meme_rubrique' => 'في هذا القسم أيضاً', |
|
| 68 | + 'memes_auteurs' => 'من المؤلفين نفسهم ايضاً', |
|
| 69 | + 'message' => 'مشاركة', |
|
| 70 | + 'messages_forum' => 'مشاركة منتدى', |
|
| 71 | + 'messages_recents' => 'أحدث المشاركات', |
|
| 72 | + 'mots_clef' => 'مفتاح', |
|
| 73 | + 'mots_clefs' => 'المفاتيح', |
|
| 74 | + 'mots_clefs_meme_groupe' => 'المفاتيح الأخرى في هذه المجموعة', |
|
| 75 | + |
|
| 76 | + // N |
|
| 77 | + 'navigation' => 'تصفح', |
|
| 78 | + 'nom' => 'الاسم', |
|
| 79 | + 'nouveautes' => 'الجديد', |
|
| 80 | + 'nouveautes_web' => 'الجديد على النسيج', |
|
| 81 | + 'nouveaux_articles' => 'المقالات الجديدة', |
|
| 82 | + 'nouvelles_breves' => 'الأخبار الجديدة', |
|
| 83 | + |
|
| 84 | + // P |
|
| 85 | + 'page_precedente' => 'الصفحة السابقة', |
|
| 86 | + 'page_suivante' => 'الصفحة التالية', |
|
| 87 | + 'par_auteur' => 'بقلم ', |
|
| 88 | + 'participer_site' => 'يمكنك المشاركة في هذا الموقع، بالتسجيل أدناه ونشر مقالاتك. وبعد التسجيل، سوف تصلك رسالة فورية بالبريد الإلكتروني تتضمن معرفك الخاص الذي يسمح لك بالدخول الى المجال الخاص.', |
|
| 89 | + 'plan_site' => 'خريطة الموقع', |
|
| 90 | + 'popularite' => 'الشعبية', |
|
| 91 | + 'poster_message' => 'إبعث برسالة', |
|
| 92 | + 'proposer_site' => 'يمكنك افتراح إضافة موقع الى هذا القسم:', |
|
| 93 | + |
|
| 94 | + // R |
|
| 95 | + 'repondre_article' => 'الرد على هذا المقال', |
|
| 96 | + 'repondre_breve' => 'الرد على هذا الخبر', |
|
| 97 | + 'resultats_recherche' => 'نتائج البحث', |
|
| 98 | + 'retour_debut_forums' => 'عودة الى بداية المنتديات', |
|
| 99 | + 'rubrique' => 'القسم', |
|
| 100 | + 'rubriques' => 'الأقسام', |
|
| 101 | + |
|
| 102 | + // S |
|
| 103 | + 'signatures_petition' => 'التوقيعات', |
|
| 104 | + 'site_realise_avec_spip' => 'موقع صمم بنظام SPIP', |
|
| 105 | + 'sites_web' => 'مواقع النسيج', |
|
| 106 | + 'sous_rubriques' => 'الأقسام الفرعية', |
|
| 107 | + 'spam' => 'خنزرة', |
|
| 108 | + 'suite' => 'تتمة', |
|
| 109 | + 'sur_web' => 'على النسيج', |
|
| 110 | + 'syndiquer_rubrique' => 'ترخيص هذا القسم', |
|
| 111 | + 'syndiquer_site' => 'ترخيص كامل الموقع', |
|
| 112 | + |
|
| 113 | + // T |
|
| 114 | + 'texte_lettre_information' => 'ها هي نشرة الموقع', |
|
| 115 | + 'texte_lettre_information_2' => 'تحصي هذه النشرة المقالات والأخبار المنشورة منذ ', |
|
| 116 | + |
|
| 117 | + // V |
|
| 118 | + 'ver_imprimer' => 'نسخة للطباعة', |
|
| 119 | + 'voir_en_ligne' => 'عرض مباشر', |
|
| 120 | + 'voir_squelette' => 'عرض الصفحة النموذجية لهذه الصفحة' |
|
| 121 | 121 | ); |
@@ -17,13 +17,13 @@ discard block |
||
| 17 | 17 | **/ |
| 18 | 18 | |
| 19 | 19 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 20 | - return; |
|
| 20 | + return; |
|
| 21 | 21 | } |
| 22 | 22 | |
| 23 | 23 | if (!defined('IMG_SVG')) { |
| 24 | - // complete IMG_BMP | IMG_GIF | IMG_JPG | IMG_PNG | IMG_WBMP | IMG_XPM | IMG_WEBP |
|
| 25 | - define('IMG_SVG',128); |
|
| 26 | - define('IMAGETYPE_SVG', 19); |
|
| 24 | + // complete IMG_BMP | IMG_GIF | IMG_JPG | IMG_PNG | IMG_WBMP | IMG_XPM | IMG_WEBP |
|
| 25 | + define('IMG_SVG',128); |
|
| 26 | + define('IMAGETYPE_SVG', 19); |
|
| 27 | 27 | } |
| 28 | 28 | |
| 29 | 29 | /** |
@@ -39,39 +39,39 @@ discard block |
||
| 39 | 39 | * false si on a pas pu charger l'image |
| 40 | 40 | */ |
| 41 | 41 | function svg_charger($fichier, $maxlen=null) { |
| 42 | - if (strpos($fichier, "data:image/svg+xml") === 0) { |
|
| 43 | - $image = explode(";", $fichier, 2); |
|
| 44 | - $image = end($image); |
|
| 45 | - if (strpos($image, "base64,") === 0) { |
|
| 46 | - $image = base64_decode(substr($image, 7)); |
|
| 47 | - } |
|
| 48 | - if (strpos($image, "<svg") !== false) { |
|
| 49 | - return $image; |
|
| 50 | - } |
|
| 51 | - // encodage inconnu ou autre format d'image ? |
|
| 52 | - return false; |
|
| 53 | - } |
|
| 54 | - // c'est peut etre deja une image svg ? |
|
| 55 | - if (strpos($fichier, "<svg") !== false) { |
|
| 56 | - return $fichier; |
|
| 57 | - } |
|
| 58 | - if (!file_exists($fichier)) { |
|
| 59 | - $fichier = supprimer_timestamp($fichier); |
|
| 60 | - if (!file_exists($fichier)) { |
|
| 61 | - return false; |
|
| 62 | - } |
|
| 63 | - } |
|
| 64 | - if (is_null($maxlen)) { |
|
| 65 | - $image = file_get_contents($fichier); |
|
| 66 | - } |
|
| 67 | - else { |
|
| 68 | - $image = file_get_contents($fichier, false,null,0, $maxlen); |
|
| 69 | - } |
|
| 70 | - // est-ce bien une image svg ? |
|
| 71 | - if (strpos($image, "<svg") !== false) { |
|
| 72 | - return $image; |
|
| 73 | - } |
|
| 74 | - return false; |
|
| 42 | + if (strpos($fichier, "data:image/svg+xml") === 0) { |
|
| 43 | + $image = explode(";", $fichier, 2); |
|
| 44 | + $image = end($image); |
|
| 45 | + if (strpos($image, "base64,") === 0) { |
|
| 46 | + $image = base64_decode(substr($image, 7)); |
|
| 47 | + } |
|
| 48 | + if (strpos($image, "<svg") !== false) { |
|
| 49 | + return $image; |
|
| 50 | + } |
|
| 51 | + // encodage inconnu ou autre format d'image ? |
|
| 52 | + return false; |
|
| 53 | + } |
|
| 54 | + // c'est peut etre deja une image svg ? |
|
| 55 | + if (strpos($fichier, "<svg") !== false) { |
|
| 56 | + return $fichier; |
|
| 57 | + } |
|
| 58 | + if (!file_exists($fichier)) { |
|
| 59 | + $fichier = supprimer_timestamp($fichier); |
|
| 60 | + if (!file_exists($fichier)) { |
|
| 61 | + return false; |
|
| 62 | + } |
|
| 63 | + } |
|
| 64 | + if (is_null($maxlen)) { |
|
| 65 | + $image = file_get_contents($fichier); |
|
| 66 | + } |
|
| 67 | + else { |
|
| 68 | + $image = file_get_contents($fichier, false,null,0, $maxlen); |
|
| 69 | + } |
|
| 70 | + // est-ce bien une image svg ? |
|
| 71 | + if (strpos($image, "<svg") !== false) { |
|
| 72 | + return $image; |
|
| 73 | + } |
|
| 74 | + return false; |
|
| 75 | 75 | } |
| 76 | 76 | |
| 77 | 77 | /** |
@@ -80,29 +80,29 @@ discard block |
||
| 80 | 80 | * @return array|bool |
| 81 | 81 | */ |
| 82 | 82 | function svg_lire_balise_svg($fichier) { |
| 83 | - if (!$debut_fichier = svg_charger($fichier, 4096)) { |
|
| 84 | - return false; |
|
| 85 | - } |
|
| 83 | + if (!$debut_fichier = svg_charger($fichier, 4096)) { |
|
| 84 | + return false; |
|
| 85 | + } |
|
| 86 | 86 | |
| 87 | - if (($ps = stripos($debut_fichier, "<svg")) !== false) { |
|
| 87 | + if (($ps = stripos($debut_fichier, "<svg")) !== false) { |
|
| 88 | 88 | |
| 89 | - $pe = stripos($debut_fichier, ">", $ps); |
|
| 90 | - $balise_svg = substr($debut_fichier, $ps, $pe - $ps +1); |
|
| 89 | + $pe = stripos($debut_fichier, ">", $ps); |
|
| 90 | + $balise_svg = substr($debut_fichier, $ps, $pe - $ps +1); |
|
| 91 | 91 | |
| 92 | - if (preg_match_all(",([\w:\-]+)=,Uims", $balise_svg, $matches)) { |
|
| 93 | - if (!function_exists('extraire_attribut')) { |
|
| 94 | - include_spip('inc/filtres'); |
|
| 95 | - } |
|
| 96 | - $attributs = []; |
|
| 97 | - foreach ($matches[1] as $att) { |
|
| 98 | - $attributs[$att] = extraire_attribut($balise_svg, $att); |
|
| 99 | - } |
|
| 92 | + if (preg_match_all(",([\w:\-]+)=,Uims", $balise_svg, $matches)) { |
|
| 93 | + if (!function_exists('extraire_attribut')) { |
|
| 94 | + include_spip('inc/filtres'); |
|
| 95 | + } |
|
| 96 | + $attributs = []; |
|
| 97 | + foreach ($matches[1] as $att) { |
|
| 98 | + $attributs[$att] = extraire_attribut($balise_svg, $att); |
|
| 99 | + } |
|
| 100 | 100 | |
| 101 | - return [$balise_svg, $attributs]; |
|
| 102 | - } |
|
| 103 | - } |
|
| 101 | + return [$balise_svg, $attributs]; |
|
| 102 | + } |
|
| 103 | + } |
|
| 104 | 104 | |
| 105 | - return false; |
|
| 105 | + return false; |
|
| 106 | 106 | } |
| 107 | 107 | |
| 108 | 108 | /** |
@@ -112,12 +112,12 @@ discard block |
||
| 112 | 112 | */ |
| 113 | 113 | function svg_lire_attributs($img) { |
| 114 | 114 | |
| 115 | - if ($svg_infos = svg_lire_balise_svg($img)) { |
|
| 116 | - list($balise_svg, $attributs) = $svg_infos; |
|
| 117 | - return $attributs; |
|
| 118 | - } |
|
| 115 | + if ($svg_infos = svg_lire_balise_svg($img)) { |
|
| 116 | + list($balise_svg, $attributs) = $svg_infos; |
|
| 117 | + return $attributs; |
|
| 118 | + } |
|
| 119 | 119 | |
| 120 | - return false; |
|
| 120 | + return false; |
|
| 121 | 121 | } |
| 122 | 122 | |
| 123 | 123 | /** |
@@ -127,38 +127,38 @@ discard block |
||
| 127 | 127 | * @return bool|float|int |
| 128 | 128 | */ |
| 129 | 129 | function svg_dimension_to_pixels($dimension, $precision = 2) { |
| 130 | - if (preg_match(',^(-?\d+(\.\d+)?)([^\d]*),i', trim($dimension), $m)){ |
|
| 131 | - switch (strtolower($m[2])) { |
|
| 132 | - case '%': |
|
| 133 | - // on ne sait pas faire :( |
|
| 134 | - return false; |
|
| 135 | - break; |
|
| 136 | - case 'em': |
|
| 137 | - return round($m[1]*16, $precision); // 16px font-size par defaut |
|
| 138 | - break; |
|
| 139 | - case 'ex': |
|
| 140 | - return round($m[1]*16, $precision); // 16px font-size par defaut |
|
| 141 | - break; |
|
| 142 | - case 'pc': |
|
| 143 | - return round($m[1]*16, $precision); // 1/6 inch = 96px/6 in CSS |
|
| 144 | - break; |
|
| 145 | - case 'cm': |
|
| 146 | - return round($m[1]*96/2.54, $precision); // 96px / 2.54cm; |
|
| 147 | - break; |
|
| 148 | - case 'mm': |
|
| 149 | - return round($m[1]*96/25.4, $precision); // 96px / 25.4mm; |
|
| 150 | - break; |
|
| 151 | - case 'in': |
|
| 152 | - return round($m[1]*96, $precision); // 1 inch = 96px in CSS |
|
| 153 | - break; |
|
| 154 | - case 'px': |
|
| 155 | - case 'pt': |
|
| 156 | - default: |
|
| 157 | - return $m[1]; |
|
| 158 | - break; |
|
| 159 | - } |
|
| 160 | - } |
|
| 161 | - return false; |
|
| 130 | + if (preg_match(',^(-?\d+(\.\d+)?)([^\d]*),i', trim($dimension), $m)){ |
|
| 131 | + switch (strtolower($m[2])) { |
|
| 132 | + case '%': |
|
| 133 | + // on ne sait pas faire :( |
|
| 134 | + return false; |
|
| 135 | + break; |
|
| 136 | + case 'em': |
|
| 137 | + return round($m[1]*16, $precision); // 16px font-size par defaut |
|
| 138 | + break; |
|
| 139 | + case 'ex': |
|
| 140 | + return round($m[1]*16, $precision); // 16px font-size par defaut |
|
| 141 | + break; |
|
| 142 | + case 'pc': |
|
| 143 | + return round($m[1]*16, $precision); // 1/6 inch = 96px/6 in CSS |
|
| 144 | + break; |
|
| 145 | + case 'cm': |
|
| 146 | + return round($m[1]*96/2.54, $precision); // 96px / 2.54cm; |
|
| 147 | + break; |
|
| 148 | + case 'mm': |
|
| 149 | + return round($m[1]*96/25.4, $precision); // 96px / 25.4mm; |
|
| 150 | + break; |
|
| 151 | + case 'in': |
|
| 152 | + return round($m[1]*96, $precision); // 1 inch = 96px in CSS |
|
| 153 | + break; |
|
| 154 | + case 'px': |
|
| 155 | + case 'pt': |
|
| 156 | + default: |
|
| 157 | + return $m[1]; |
|
| 158 | + break; |
|
| 159 | + } |
|
| 160 | + } |
|
| 161 | + return false; |
|
| 162 | 162 | } |
| 163 | 163 | |
| 164 | 164 | /** |
@@ -169,15 +169,15 @@ discard block |
||
| 169 | 169 | * @return string |
| 170 | 170 | */ |
| 171 | 171 | function svg_change_balise_svg($svg, $old_balise_svg, $attributs) { |
| 172 | - $new_balise_svg = "<svg"; |
|
| 173 | - foreach ($attributs as $k=>$v) { |
|
| 174 | - $new_balise_svg .= " $k=\"".entites_html($v)."\""; |
|
| 175 | - } |
|
| 176 | - $new_balise_svg .= ">"; |
|
| 177 | - |
|
| 178 | - $p = strpos($svg, $old_balise_svg); |
|
| 179 | - $svg = substr_replace($svg, $new_balise_svg, $p, strlen($old_balise_svg)); |
|
| 180 | - return $svg; |
|
| 172 | + $new_balise_svg = "<svg"; |
|
| 173 | + foreach ($attributs as $k=>$v) { |
|
| 174 | + $new_balise_svg .= " $k=\"".entites_html($v)."\""; |
|
| 175 | + } |
|
| 176 | + $new_balise_svg .= ">"; |
|
| 177 | + |
|
| 178 | + $p = strpos($svg, $old_balise_svg); |
|
| 179 | + $svg = substr_replace($svg, $new_balise_svg, $p, strlen($old_balise_svg)); |
|
| 180 | + return $svg; |
|
| 181 | 181 | } |
| 182 | 182 | |
| 183 | 183 | /** |
@@ -189,15 +189,15 @@ discard block |
||
| 189 | 189 | */ |
| 190 | 190 | function svg_insert_shapes($svg, $shapes, $start=true) { |
| 191 | 191 | |
| 192 | - if ($start === false or $start === 'end') { |
|
| 193 | - $svg = str_replace("</svg>", $shapes . "</svg>", $svg); |
|
| 194 | - } |
|
| 195 | - else { |
|
| 196 | - $p = stripos($svg, "<svg"); |
|
| 197 | - $p = strpos($svg, ">", $p); |
|
| 198 | - $svg = substr_replace($svg, $shapes, $p+1, 0); |
|
| 199 | - } |
|
| 200 | - return $svg; |
|
| 192 | + if ($start === false or $start === 'end') { |
|
| 193 | + $svg = str_replace("</svg>", $shapes . "</svg>", $svg); |
|
| 194 | + } |
|
| 195 | + else { |
|
| 196 | + $p = stripos($svg, "<svg"); |
|
| 197 | + $p = strpos($svg, ">", $p); |
|
| 198 | + $svg = substr_replace($svg, $shapes, $p+1, 0); |
|
| 199 | + } |
|
| 200 | + return $svg; |
|
| 201 | 201 | } |
| 202 | 202 | |
| 203 | 203 | /** |
@@ -210,13 +210,13 @@ discard block |
||
| 210 | 210 | * @return string |
| 211 | 211 | */ |
| 212 | 212 | function svg_clip_in_box($svg, $x, $y, $width, $height) { |
| 213 | - $rect = "<rect x=\"$x\" y=\"$y\" width=\"$width\" height=\"$height\" />"; |
|
| 214 | - $id = 'clip-'.substr(md5($rect . strlen($svg)),0,8); |
|
| 215 | - $clippath = "<clipPath id=\"$id\">$rect</clipPath>"; |
|
| 216 | - $g = "<g clip-path=\"url(#$id)\">"; |
|
| 217 | - $svg = svg_insert_shapes($svg, $clippath . $g); |
|
| 218 | - $svg = svg_insert_shapes($svg, "</g>", false); |
|
| 219 | - return $svg; |
|
| 213 | + $rect = "<rect x=\"$x\" y=\"$y\" width=\"$width\" height=\"$height\" />"; |
|
| 214 | + $id = 'clip-'.substr(md5($rect . strlen($svg)),0,8); |
|
| 215 | + $clippath = "<clipPath id=\"$id\">$rect</clipPath>"; |
|
| 216 | + $g = "<g clip-path=\"url(#$id)\">"; |
|
| 217 | + $svg = svg_insert_shapes($svg, $clippath . $g); |
|
| 218 | + $svg = svg_insert_shapes($svg, "</g>", false); |
|
| 219 | + return $svg; |
|
| 220 | 220 | } |
| 221 | 221 | |
| 222 | 222 | /** |
@@ -227,21 +227,21 @@ discard block |
||
| 227 | 227 | * @return bool|string |
| 228 | 228 | */ |
| 229 | 229 | function svg_redimensionner($img, $new_width, $new_height) { |
| 230 | - if ($svg = svg_charger($img) |
|
| 231 | - and $svg_infos = svg_lire_balise_svg($svg)) { |
|
| 230 | + if ($svg = svg_charger($img) |
|
| 231 | + and $svg_infos = svg_lire_balise_svg($svg)) { |
|
| 232 | 232 | |
| 233 | - list($balise_svg, $attributs) = $svg_infos; |
|
| 234 | - if (!isset($attributs['viewBox'])) { |
|
| 235 | - $attributs['viewBox'] = "0 0 " . $attributs['width'] . " " . $attributs['height']; |
|
| 236 | - } |
|
| 237 | - $attributs['width'] = strval($new_width); |
|
| 238 | - $attributs['height'] = strval($new_height); |
|
| 233 | + list($balise_svg, $attributs) = $svg_infos; |
|
| 234 | + if (!isset($attributs['viewBox'])) { |
|
| 235 | + $attributs['viewBox'] = "0 0 " . $attributs['width'] . " " . $attributs['height']; |
|
| 236 | + } |
|
| 237 | + $attributs['width'] = strval($new_width); |
|
| 238 | + $attributs['height'] = strval($new_height); |
|
| 239 | 239 | |
| 240 | - $svg = svg_change_balise_svg($svg, $balise_svg, $attributs); |
|
| 241 | - return $svg; |
|
| 242 | - } |
|
| 240 | + $svg = svg_change_balise_svg($svg, $balise_svg, $attributs); |
|
| 241 | + return $svg; |
|
| 242 | + } |
|
| 243 | 243 | |
| 244 | - return $img; |
|
| 244 | + return $img; |
|
| 245 | 245 | } |
| 246 | 246 | |
| 247 | 247 | /** |
@@ -250,15 +250,15 @@ discard block |
||
| 250 | 250 | * @return string |
| 251 | 251 | */ |
| 252 | 252 | function svg_couleur_to_hexa($couleur) { |
| 253 | - if (strpos($couleur, "rgb(")===0) { |
|
| 254 | - $c = explode(',', substr($couleur, 4)); |
|
| 255 | - $couleur = _couleur_dec_to_hex(intval($c[0]), intval($c[1]), intval($c[2])); |
|
| 256 | - } |
|
| 257 | - else { |
|
| 258 | - $couleur = couleur_html_to_hex($couleur); |
|
| 259 | - } |
|
| 260 | - $couleur = '#'.ltrim($couleur,'#'); |
|
| 261 | - return $couleur; |
|
| 253 | + if (strpos($couleur, "rgb(")===0) { |
|
| 254 | + $c = explode(',', substr($couleur, 4)); |
|
| 255 | + $couleur = _couleur_dec_to_hex(intval($c[0]), intval($c[1]), intval($c[2])); |
|
| 256 | + } |
|
| 257 | + else { |
|
| 258 | + $couleur = couleur_html_to_hex($couleur); |
|
| 259 | + } |
|
| 260 | + $couleur = '#'.ltrim($couleur,'#'); |
|
| 261 | + return $couleur; |
|
| 262 | 262 | } |
| 263 | 263 | |
| 264 | 264 | /** |
@@ -267,11 +267,11 @@ discard block |
||
| 267 | 267 | * @return array |
| 268 | 268 | */ |
| 269 | 269 | function svg_couleur_to_rgb($couleur) { |
| 270 | - if (strpos($couleur, "rgb(")===0) { |
|
| 271 | - $c = explode(',', substr($couleur, 4)); |
|
| 272 | - return ['red' => intval($c[0]),'green' => intval($c[1]),'blue' => intval($c[2])]; |
|
| 273 | - } |
|
| 274 | - return _couleur_hex_to_dec($couleur); |
|
| 270 | + if (strpos($couleur, "rgb(")===0) { |
|
| 271 | + $c = explode(',', substr($couleur, 4)); |
|
| 272 | + return ['red' => intval($c[0]),'green' => intval($c[1]),'blue' => intval($c[2])]; |
|
| 273 | + } |
|
| 274 | + return _couleur_hex_to_dec($couleur); |
|
| 275 | 275 | } |
| 276 | 276 | |
| 277 | 277 | |
@@ -281,66 +281,66 @@ discard block |
||
| 281 | 281 | * @return array |
| 282 | 282 | */ |
| 283 | 283 | function svg_getimagesize_from_attr($attributs) { |
| 284 | - $width = 350; // default width |
|
| 285 | - $height = 150; // default height |
|
| 286 | - |
|
| 287 | - $viewBox = "0 0 $width $height"; |
|
| 288 | - if (isset($attributs['viewBox'])) { |
|
| 289 | - $viewBox = $attributs['viewBox']; |
|
| 290 | - $viewBox = preg_replace(",\s+,", " ", $viewBox); |
|
| 291 | - } |
|
| 292 | - // et on la convertit en px |
|
| 293 | - $viewBox = explode(' ', $viewBox); |
|
| 294 | - $viewBox = array_map('svg_dimension_to_pixels', $viewBox); |
|
| 295 | - if (!$viewBox[2]) { |
|
| 296 | - $viewBox[2] = $width; |
|
| 297 | - } |
|
| 298 | - if (!$viewBox[3]) { |
|
| 299 | - $viewBox[3] = $height; |
|
| 300 | - } |
|
| 301 | - |
|
| 302 | - $coeff = 1; |
|
| 303 | - if (isset($attributs['width']) |
|
| 304 | - and $w = svg_dimension_to_pixels($attributs['width'])) { |
|
| 305 | - $width = $w; |
|
| 306 | - } |
|
| 307 | - else { |
|
| 308 | - // si on recupere la taille de la viewbox mais si la viewbox est petite on met un multiplicateur pour la taille finale |
|
| 309 | - $width = $viewBox[2]; |
|
| 310 | - if ($width < 1) { |
|
| 311 | - $coeff = max($coeff, 1000); |
|
| 312 | - } |
|
| 313 | - elseif ($width < 10) { |
|
| 314 | - $coeff = max($coeff, 100); |
|
| 315 | - } |
|
| 316 | - elseif ($width < 100) { |
|
| 317 | - $coeff = max($coeff, 10); |
|
| 318 | - } |
|
| 319 | - } |
|
| 320 | - if (isset($attributs['height']) |
|
| 321 | - and $h = svg_dimension_to_pixels($attributs['height'])) { |
|
| 322 | - $height = $h; |
|
| 323 | - } |
|
| 324 | - else { |
|
| 325 | - $height = $viewBox[3]; |
|
| 326 | - if ($height < 1) { |
|
| 327 | - $coeff = max($coeff, 1000); |
|
| 328 | - } |
|
| 329 | - elseif ($height < 10) { |
|
| 330 | - $coeff = max($coeff, 100); |
|
| 331 | - } |
|
| 332 | - elseif ($height < 100) { |
|
| 333 | - $coeff = max($coeff, 10); |
|
| 334 | - } |
|
| 335 | - } |
|
| 336 | - |
|
| 337 | - // arrondir le width et height en pixel in fine |
|
| 338 | - $width = round($coeff * $width); |
|
| 339 | - $height = round($coeff * $height); |
|
| 340 | - |
|
| 341 | - $viewBox = implode(' ', $viewBox); |
|
| 342 | - |
|
| 343 | - return array($width, $height, $viewBox); |
|
| 284 | + $width = 350; // default width |
|
| 285 | + $height = 150; // default height |
|
| 286 | + |
|
| 287 | + $viewBox = "0 0 $width $height"; |
|
| 288 | + if (isset($attributs['viewBox'])) { |
|
| 289 | + $viewBox = $attributs['viewBox']; |
|
| 290 | + $viewBox = preg_replace(",\s+,", " ", $viewBox); |
|
| 291 | + } |
|
| 292 | + // et on la convertit en px |
|
| 293 | + $viewBox = explode(' ', $viewBox); |
|
| 294 | + $viewBox = array_map('svg_dimension_to_pixels', $viewBox); |
|
| 295 | + if (!$viewBox[2]) { |
|
| 296 | + $viewBox[2] = $width; |
|
| 297 | + } |
|
| 298 | + if (!$viewBox[3]) { |
|
| 299 | + $viewBox[3] = $height; |
|
| 300 | + } |
|
| 301 | + |
|
| 302 | + $coeff = 1; |
|
| 303 | + if (isset($attributs['width']) |
|
| 304 | + and $w = svg_dimension_to_pixels($attributs['width'])) { |
|
| 305 | + $width = $w; |
|
| 306 | + } |
|
| 307 | + else { |
|
| 308 | + // si on recupere la taille de la viewbox mais si la viewbox est petite on met un multiplicateur pour la taille finale |
|
| 309 | + $width = $viewBox[2]; |
|
| 310 | + if ($width < 1) { |
|
| 311 | + $coeff = max($coeff, 1000); |
|
| 312 | + } |
|
| 313 | + elseif ($width < 10) { |
|
| 314 | + $coeff = max($coeff, 100); |
|
| 315 | + } |
|
| 316 | + elseif ($width < 100) { |
|
| 317 | + $coeff = max($coeff, 10); |
|
| 318 | + } |
|
| 319 | + } |
|
| 320 | + if (isset($attributs['height']) |
|
| 321 | + and $h = svg_dimension_to_pixels($attributs['height'])) { |
|
| 322 | + $height = $h; |
|
| 323 | + } |
|
| 324 | + else { |
|
| 325 | + $height = $viewBox[3]; |
|
| 326 | + if ($height < 1) { |
|
| 327 | + $coeff = max($coeff, 1000); |
|
| 328 | + } |
|
| 329 | + elseif ($height < 10) { |
|
| 330 | + $coeff = max($coeff, 100); |
|
| 331 | + } |
|
| 332 | + elseif ($height < 100) { |
|
| 333 | + $coeff = max($coeff, 10); |
|
| 334 | + } |
|
| 335 | + } |
|
| 336 | + |
|
| 337 | + // arrondir le width et height en pixel in fine |
|
| 338 | + $width = round($coeff * $width); |
|
| 339 | + $height = round($coeff * $height); |
|
| 340 | + |
|
| 341 | + $viewBox = implode(' ', $viewBox); |
|
| 342 | + |
|
| 343 | + return array($width, $height, $viewBox); |
|
| 344 | 344 | } |
| 345 | 345 | |
| 346 | 346 | /** |
@@ -356,24 +356,24 @@ discard block |
||
| 356 | 356 | * @return string |
| 357 | 357 | */ |
| 358 | 358 | function svg_force_viewBox_px($img, $force_width_and_height = false) { |
| 359 | - if ($svg = svg_charger($img) |
|
| 360 | - and $svg_infos = svg_lire_balise_svg($svg)){ |
|
| 359 | + if ($svg = svg_charger($img) |
|
| 360 | + and $svg_infos = svg_lire_balise_svg($svg)){ |
|
| 361 | 361 | |
| 362 | - list($balise_svg, $attributs) = $svg_infos; |
|
| 362 | + list($balise_svg, $attributs) = $svg_infos; |
|
| 363 | 363 | |
| 364 | - list($width, $height, $viewBox) = svg_getimagesize_from_attr($attributs); |
|
| 364 | + list($width, $height, $viewBox) = svg_getimagesize_from_attr($attributs); |
|
| 365 | 365 | |
| 366 | - if ($force_width_and_height) { |
|
| 367 | - $attributs['width'] = $width; |
|
| 368 | - $attributs['height'] = $height; |
|
| 369 | - } |
|
| 366 | + if ($force_width_and_height) { |
|
| 367 | + $attributs['width'] = $width; |
|
| 368 | + $attributs['height'] = $height; |
|
| 369 | + } |
|
| 370 | 370 | |
| 371 | - $attributs['viewBox'] = $viewBox; |
|
| 371 | + $attributs['viewBox'] = $viewBox; |
|
| 372 | 372 | |
| 373 | - $svg = svg_change_balise_svg($svg, $balise_svg, $attributs); |
|
| 374 | - return $svg; |
|
| 375 | - } |
|
| 376 | - return $img; |
|
| 373 | + $svg = svg_change_balise_svg($svg, $balise_svg, $attributs); |
|
| 374 | + return $svg; |
|
| 375 | + } |
|
| 376 | + return $img; |
|
| 377 | 377 | } |
| 378 | 378 | |
| 379 | 379 | /** |
@@ -382,12 +382,12 @@ discard block |
||
| 382 | 382 | * @return array|mixed |
| 383 | 383 | */ |
| 384 | 384 | function svg_extract_couleurs($img) { |
| 385 | - if ($svg = svg_charger($img)) { |
|
| 386 | - if (preg_match_all("/(#[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f])|(rgb\([\s\d]+,[\s\d]+,[\s\d]+\))|(#[0-9a-f][0-9a-f][0-9a-f])/imS", $svg, $matches)) { |
|
| 387 | - return $matches[0]; |
|
| 388 | - } |
|
| 389 | - } |
|
| 390 | - return []; |
|
| 385 | + if ($svg = svg_charger($img)) { |
|
| 386 | + if (preg_match_all("/(#[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f])|(rgb\([\s\d]+,[\s\d]+,[\s\d]+\))|(#[0-9a-f][0-9a-f][0-9a-f])/imS", $svg, $matches)) { |
|
| 387 | + return $matches[0]; |
|
| 388 | + } |
|
| 389 | + } |
|
| 390 | + return []; |
|
| 391 | 391 | } |
| 392 | 392 | |
| 393 | 393 | /** |
@@ -398,56 +398,56 @@ discard block |
||
| 398 | 398 | * @return bool|string |
| 399 | 399 | */ |
| 400 | 400 | function svg_recadrer($img, $new_width, $new_height, $offset_width, $offset_height, $background_color='') { |
| 401 | - if ($svg = svg_force_viewBox_px($img) |
|
| 402 | - and $svg_infos = svg_lire_balise_svg($svg)) { |
|
| 403 | - |
|
| 404 | - list($balise_svg, $attributs) = $svg_infos; |
|
| 405 | - $viewBox = explode(' ', $attributs['viewBox']); |
|
| 406 | - |
|
| 407 | - $viewport_w = $new_width; |
|
| 408 | - $viewport_h = $new_height; |
|
| 409 | - $viewport_ox = $offset_width; |
|
| 410 | - $viewport_oy = $offset_height; |
|
| 411 | - |
|
| 412 | - // si on a un width/height qui rescale, il faut rescaler |
|
| 413 | - if (isset ($attributs['width']) |
|
| 414 | - and $w = svg_dimension_to_pixels($attributs['width']) |
|
| 415 | - and isset ($attributs['height']) |
|
| 416 | - and $h = svg_dimension_to_pixels($attributs['height'])) { |
|
| 417 | - |
|
| 418 | - $xscale = $viewBox[2] / $w; |
|
| 419 | - $viewport_w = round($viewport_w * $xscale, 2); |
|
| 420 | - $viewport_ox = round($viewport_ox * $xscale, 2); |
|
| 421 | - $yscale = $viewBox[3] / $h; |
|
| 422 | - $viewport_h = round($viewport_h * $yscale, 2); |
|
| 423 | - $viewport_oy = round($viewport_oy * $yscale, 2); |
|
| 424 | - } |
|
| 425 | - |
|
| 426 | - if ($viewport_w>$viewBox[2] or $viewport_h>$viewBox[3]) { |
|
| 427 | - $svg = svg_clip_in_box($svg, $viewBox[0], $viewBox[1], $viewBox[2], $viewBox[3]); |
|
| 428 | - } |
|
| 429 | - |
|
| 430 | - // maintenant on redefinit la viewBox |
|
| 431 | - $viewBox[0] += $viewport_ox; |
|
| 432 | - $viewBox[1] += $viewport_oy; |
|
| 433 | - $viewBox[2] = $viewport_w; |
|
| 434 | - $viewBox[3] = $viewport_h; |
|
| 435 | - |
|
| 436 | - $attributs['viewBox'] = implode(' ', $viewBox); |
|
| 437 | - $attributs['width'] = strval($new_width); |
|
| 438 | - $attributs['height'] = strval($new_height); |
|
| 439 | - |
|
| 440 | - $svg = svg_change_balise_svg($svg, $balise_svg, $attributs); |
|
| 441 | - |
|
| 442 | - // ajouter un background |
|
| 443 | - if ($background_color and $background_color!=='transparent') { |
|
| 444 | - $svg = svg_ajouter_background($svg, $background_color); |
|
| 445 | - } |
|
| 446 | - |
|
| 447 | - return $svg; |
|
| 448 | - } |
|
| 449 | - |
|
| 450 | - return $img; |
|
| 401 | + if ($svg = svg_force_viewBox_px($img) |
|
| 402 | + and $svg_infos = svg_lire_balise_svg($svg)) { |
|
| 403 | + |
|
| 404 | + list($balise_svg, $attributs) = $svg_infos; |
|
| 405 | + $viewBox = explode(' ', $attributs['viewBox']); |
|
| 406 | + |
|
| 407 | + $viewport_w = $new_width; |
|
| 408 | + $viewport_h = $new_height; |
|
| 409 | + $viewport_ox = $offset_width; |
|
| 410 | + $viewport_oy = $offset_height; |
|
| 411 | + |
|
| 412 | + // si on a un width/height qui rescale, il faut rescaler |
|
| 413 | + if (isset ($attributs['width']) |
|
| 414 | + and $w = svg_dimension_to_pixels($attributs['width']) |
|
| 415 | + and isset ($attributs['height']) |
|
| 416 | + and $h = svg_dimension_to_pixels($attributs['height'])) { |
|
| 417 | + |
|
| 418 | + $xscale = $viewBox[2] / $w; |
|
| 419 | + $viewport_w = round($viewport_w * $xscale, 2); |
|
| 420 | + $viewport_ox = round($viewport_ox * $xscale, 2); |
|
| 421 | + $yscale = $viewBox[3] / $h; |
|
| 422 | + $viewport_h = round($viewport_h * $yscale, 2); |
|
| 423 | + $viewport_oy = round($viewport_oy * $yscale, 2); |
|
| 424 | + } |
|
| 425 | + |
|
| 426 | + if ($viewport_w>$viewBox[2] or $viewport_h>$viewBox[3]) { |
|
| 427 | + $svg = svg_clip_in_box($svg, $viewBox[0], $viewBox[1], $viewBox[2], $viewBox[3]); |
|
| 428 | + } |
|
| 429 | + |
|
| 430 | + // maintenant on redefinit la viewBox |
|
| 431 | + $viewBox[0] += $viewport_ox; |
|
| 432 | + $viewBox[1] += $viewport_oy; |
|
| 433 | + $viewBox[2] = $viewport_w; |
|
| 434 | + $viewBox[3] = $viewport_h; |
|
| 435 | + |
|
| 436 | + $attributs['viewBox'] = implode(' ', $viewBox); |
|
| 437 | + $attributs['width'] = strval($new_width); |
|
| 438 | + $attributs['height'] = strval($new_height); |
|
| 439 | + |
|
| 440 | + $svg = svg_change_balise_svg($svg, $balise_svg, $attributs); |
|
| 441 | + |
|
| 442 | + // ajouter un background |
|
| 443 | + if ($background_color and $background_color!=='transparent') { |
|
| 444 | + $svg = svg_ajouter_background($svg, $background_color); |
|
| 445 | + } |
|
| 446 | + |
|
| 447 | + return $svg; |
|
| 448 | + } |
|
| 449 | + |
|
| 450 | + return $img; |
|
| 451 | 451 | } |
| 452 | 452 | |
| 453 | 453 | /** |
@@ -457,25 +457,25 @@ discard block |
||
| 457 | 457 | * @return bool|string |
| 458 | 458 | */ |
| 459 | 459 | function svg_ajouter_background($img, $background_color) { |
| 460 | - if ($svg = svg_charger($img) |
|
| 461 | - and $svg_infos = svg_lire_balise_svg($svg)){ |
|
| 462 | - |
|
| 463 | - if ($background_color and $background_color!=='transparent') { |
|
| 464 | - list($balise_svg, $attributs) = $svg_infos; |
|
| 465 | - |
|
| 466 | - $background_color = svg_couleur_to_hexa($background_color); |
|
| 467 | - if (isset($attributs['viewBox'])) { |
|
| 468 | - $viewBox = explode(' ', $attributs['viewBox']); |
|
| 469 | - $rect = "<rect x=\"".$viewBox[0]."\" y=\"".$viewBox[1]."\" width=\"".$viewBox[2]."\" height=\"".$viewBox[3]."\" fill=\"$background_color\"/>"; |
|
| 470 | - } |
|
| 471 | - else { |
|
| 472 | - $rect = "<rect width=\"100%\" height=\"100%\" fill=\"$background_color\"/>"; |
|
| 473 | - } |
|
| 474 | - $svg = svg_insert_shapes($svg, $rect); |
|
| 475 | - } |
|
| 476 | - return $svg; |
|
| 477 | - } |
|
| 478 | - return $img; |
|
| 460 | + if ($svg = svg_charger($img) |
|
| 461 | + and $svg_infos = svg_lire_balise_svg($svg)){ |
|
| 462 | + |
|
| 463 | + if ($background_color and $background_color!=='transparent') { |
|
| 464 | + list($balise_svg, $attributs) = $svg_infos; |
|
| 465 | + |
|
| 466 | + $background_color = svg_couleur_to_hexa($background_color); |
|
| 467 | + if (isset($attributs['viewBox'])) { |
|
| 468 | + $viewBox = explode(' ', $attributs['viewBox']); |
|
| 469 | + $rect = "<rect x=\"".$viewBox[0]."\" y=\"".$viewBox[1]."\" width=\"".$viewBox[2]."\" height=\"".$viewBox[3]."\" fill=\"$background_color\"/>"; |
|
| 470 | + } |
|
| 471 | + else { |
|
| 472 | + $rect = "<rect width=\"100%\" height=\"100%\" fill=\"$background_color\"/>"; |
|
| 473 | + } |
|
| 474 | + $svg = svg_insert_shapes($svg, $rect); |
|
| 475 | + } |
|
| 476 | + return $svg; |
|
| 477 | + } |
|
| 478 | + return $img; |
|
| 479 | 479 | } |
| 480 | 480 | |
| 481 | 481 | |
@@ -486,25 +486,25 @@ discard block |
||
| 486 | 486 | * @return bool|string |
| 487 | 487 | */ |
| 488 | 488 | function svg_ajouter_voile($img, $background_color, $opacity) { |
| 489 | - if ($svg = svg_charger($img) |
|
| 490 | - and $svg_infos = svg_lire_balise_svg($svg)){ |
|
| 491 | - |
|
| 492 | - if ($background_color and $background_color!=='transparent') { |
|
| 493 | - list($balise_svg, $attributs) = $svg_infos; |
|
| 494 | - |
|
| 495 | - $background_color = svg_couleur_to_hexa($background_color); |
|
| 496 | - if (isset($attributs['viewBox'])) { |
|
| 497 | - $viewBox = explode(' ', $attributs['viewBox']); |
|
| 498 | - $rect = "<rect x=\"".$viewBox[0]."\" y=\"".$viewBox[1]."\" width=\"".$viewBox[2]."\" height=\"".$viewBox[3]."\" fill=\"$background_color\" opacity=\"$opacity\"/>"; |
|
| 499 | - } |
|
| 500 | - else { |
|
| 501 | - $rect = "<rect width=\"100%\" height=\"100%\" fill=\"$background_color\"/>"; |
|
| 502 | - } |
|
| 503 | - $svg = svg_insert_shapes($svg, $rect, false); |
|
| 504 | - } |
|
| 505 | - return $svg; |
|
| 506 | - } |
|
| 507 | - return $img; |
|
| 489 | + if ($svg = svg_charger($img) |
|
| 490 | + and $svg_infos = svg_lire_balise_svg($svg)){ |
|
| 491 | + |
|
| 492 | + if ($background_color and $background_color!=='transparent') { |
|
| 493 | + list($balise_svg, $attributs) = $svg_infos; |
|
| 494 | + |
|
| 495 | + $background_color = svg_couleur_to_hexa($background_color); |
|
| 496 | + if (isset($attributs['viewBox'])) { |
|
| 497 | + $viewBox = explode(' ', $attributs['viewBox']); |
|
| 498 | + $rect = "<rect x=\"".$viewBox[0]."\" y=\"".$viewBox[1]."\" width=\"".$viewBox[2]."\" height=\"".$viewBox[3]."\" fill=\"$background_color\" opacity=\"$opacity\"/>"; |
|
| 499 | + } |
|
| 500 | + else { |
|
| 501 | + $rect = "<rect width=\"100%\" height=\"100%\" fill=\"$background_color\"/>"; |
|
| 502 | + } |
|
| 503 | + $svg = svg_insert_shapes($svg, $rect, false); |
|
| 504 | + } |
|
| 505 | + return $svg; |
|
| 506 | + } |
|
| 507 | + return $img; |
|
| 508 | 508 | } |
| 509 | 509 | |
| 510 | 510 | |
@@ -515,26 +515,26 @@ discard block |
||
| 515 | 515 | * @return bool|string |
| 516 | 516 | */ |
| 517 | 517 | function svg_transformer($img, $attributs) { |
| 518 | - if ($svg = svg_charger($img) |
|
| 519 | - and $svg_infos = svg_lire_balise_svg($svg)){ |
|
| 520 | - |
|
| 521 | - if ($attributs) { |
|
| 522 | - list($balise_svg, ) = $svg_infos; |
|
| 523 | - $g = "<g"; |
|
| 524 | - foreach ($attributs as $k=>$v) { |
|
| 525 | - if (strlen($v)) { |
|
| 526 | - $g .= " $k=\"".attribut_html($v)."\""; |
|
| 527 | - } |
|
| 528 | - } |
|
| 529 | - if (strlen($g) > 2) { |
|
| 530 | - $g .= ">"; |
|
| 531 | - $svg = svg_insert_shapes($svg, $g); |
|
| 532 | - $svg = svg_insert_shapes($svg, "</g>", false); |
|
| 533 | - } |
|
| 534 | - } |
|
| 535 | - return $svg; |
|
| 536 | - } |
|
| 537 | - return $img; |
|
| 518 | + if ($svg = svg_charger($img) |
|
| 519 | + and $svg_infos = svg_lire_balise_svg($svg)){ |
|
| 520 | + |
|
| 521 | + if ($attributs) { |
|
| 522 | + list($balise_svg, ) = $svg_infos; |
|
| 523 | + $g = "<g"; |
|
| 524 | + foreach ($attributs as $k=>$v) { |
|
| 525 | + if (strlen($v)) { |
|
| 526 | + $g .= " $k=\"".attribut_html($v)."\""; |
|
| 527 | + } |
|
| 528 | + } |
|
| 529 | + if (strlen($g) > 2) { |
|
| 530 | + $g .= ">"; |
|
| 531 | + $svg = svg_insert_shapes($svg, $g); |
|
| 532 | + $svg = svg_insert_shapes($svg, "</g>", false); |
|
| 533 | + } |
|
| 534 | + } |
|
| 535 | + return $svg; |
|
| 536 | + } |
|
| 537 | + return $img; |
|
| 538 | 538 | } |
| 539 | 539 | |
| 540 | 540 | /** |
@@ -545,20 +545,20 @@ discard block |
||
| 545 | 545 | * @return bool|string |
| 546 | 546 | */ |
| 547 | 547 | function svg_apply_filter($img, $filter_def) { |
| 548 | - if ($svg = svg_charger($img) |
|
| 549 | - and $svg_infos = svg_lire_balise_svg($svg)){ |
|
| 550 | - |
|
| 551 | - if ($filter_def) { |
|
| 552 | - list($balise_svg, ) = $svg_infos; |
|
| 553 | - $filter_id = "filter-". substr(md5($filter_def . strlen($svg)), 0, 8); |
|
| 554 | - $filter = "<defs><filter id=\"$filter_id\">$filter_def</filter></defs>"; |
|
| 555 | - $g = "<g filter=\"url(#$filter_id)\">"; |
|
| 556 | - $svg = svg_insert_shapes($svg, $filter . $g); |
|
| 557 | - $svg = svg_insert_shapes($svg, "</g>", false); |
|
| 558 | - } |
|
| 559 | - return $svg; |
|
| 560 | - } |
|
| 561 | - return $img; |
|
| 548 | + if ($svg = svg_charger($img) |
|
| 549 | + and $svg_infos = svg_lire_balise_svg($svg)){ |
|
| 550 | + |
|
| 551 | + if ($filter_def) { |
|
| 552 | + list($balise_svg, ) = $svg_infos; |
|
| 553 | + $filter_id = "filter-". substr(md5($filter_def . strlen($svg)), 0, 8); |
|
| 554 | + $filter = "<defs><filter id=\"$filter_id\">$filter_def</filter></defs>"; |
|
| 555 | + $g = "<g filter=\"url(#$filter_id)\">"; |
|
| 556 | + $svg = svg_insert_shapes($svg, $filter . $g); |
|
| 557 | + $svg = svg_insert_shapes($svg, "</g>", false); |
|
| 558 | + } |
|
| 559 | + return $svg; |
|
| 560 | + } |
|
| 561 | + return $img; |
|
| 562 | 562 | } |
| 563 | 563 | |
| 564 | 564 | /** |
@@ -568,8 +568,8 @@ discard block |
||
| 568 | 568 | * @return string |
| 569 | 569 | */ |
| 570 | 570 | function svg_filter_blur($img, $blur_width) { |
| 571 | - $blur_width = intval($blur_width); |
|
| 572 | - return svg_apply_filter($img, "<feGaussianBlur stdDeviation=\"$blur_width\"/>"); |
|
| 571 | + $blur_width = intval($blur_width); |
|
| 572 | + return svg_apply_filter($img, "<feGaussianBlur stdDeviation=\"$blur_width\"/>"); |
|
| 573 | 573 | } |
| 574 | 574 | |
| 575 | 575 | /** |
@@ -579,10 +579,10 @@ discard block |
||
| 579 | 579 | * @return bool|string |
| 580 | 580 | */ |
| 581 | 581 | function svg_filter_grayscale($img, $intensity) { |
| 582 | - $value = round(1.0 - $intensity, 2); |
|
| 583 | - //$filter = "<feColorMatrix type=\"matrix\" values=\"0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\"/>"; |
|
| 584 | - $filter = "<feColorMatrix type=\"saturate\" values=\"$value\"/>"; |
|
| 585 | - return svg_apply_filter($img, $filter); |
|
| 582 | + $value = round(1.0 - $intensity, 2); |
|
| 583 | + //$filter = "<feColorMatrix type=\"matrix\" values=\"0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\"/>"; |
|
| 584 | + $filter = "<feColorMatrix type=\"saturate\" values=\"$value\"/>"; |
|
| 585 | + return svg_apply_filter($img, $filter); |
|
| 586 | 586 | } |
| 587 | 587 | |
| 588 | 588 | /** |
@@ -592,8 +592,8 @@ discard block |
||
| 592 | 592 | * @return bool|string |
| 593 | 593 | */ |
| 594 | 594 | function svg_filter_sepia($img, $intensity) { |
| 595 | - $filter = "<feColorMatrix type=\"matrix\" values=\"0.30 0.30 0.30 0.0 0 0.25 0.25 0.25 0.0 0 0.20 0.20 0.20 0.0 0 0.00 0.00 0.00 1 0\"/>"; |
|
| 596 | - return svg_apply_filter($img, $filter); |
|
| 595 | + $filter = "<feColorMatrix type=\"matrix\" values=\"0.30 0.30 0.30 0.0 0 0.25 0.25 0.25 0.0 0 0.20 0.20 0.20 0.0 0 0.00 0.00 0.00 1 0\"/>"; |
|
| 596 | + return svg_apply_filter($img, $filter); |
|
| 597 | 597 | } |
| 598 | 598 | |
| 599 | 599 | /** |
@@ -603,30 +603,30 @@ discard block |
||
| 603 | 603 | * @return bool|string |
| 604 | 604 | */ |
| 605 | 605 | function svg_flip($img, $HorV) { |
| 606 | - if ($svg = svg_force_viewBox_px($img) |
|
| 607 | - and $svg_infos = svg_lire_balise_svg($svg)){ |
|
| 608 | - |
|
| 609 | - list($balise_svg, $atts) = $svg_infos; |
|
| 610 | - $viewBox = explode(' ', $atts['viewBox']); |
|
| 611 | - |
|
| 612 | - if (!in_array($HorV, ['h', 'H'])) { |
|
| 613 | - $transform = "scale(-1,1)"; |
|
| 614 | - |
|
| 615 | - $x = intval($viewBox[0]) + intval($viewBox[2]/2); |
|
| 616 | - $mx = -$x; |
|
| 617 | - $transform = "translate($x, 0) $transform translate($mx, 0)"; |
|
| 618 | - } |
|
| 619 | - else { |
|
| 620 | - $transform = "scale(1,-1)"; |
|
| 621 | - |
|
| 622 | - $y = intval($viewBox[1]) + intval($viewBox[3]/2); |
|
| 623 | - $my = -$y; |
|
| 624 | - $transform = "translate(0, $y) $transform translate(0, $my)"; |
|
| 625 | - } |
|
| 626 | - $svg = svg_transformer($svg, ['transform' => $transform]); |
|
| 627 | - return $svg; |
|
| 628 | - } |
|
| 629 | - return $img; |
|
| 606 | + if ($svg = svg_force_viewBox_px($img) |
|
| 607 | + and $svg_infos = svg_lire_balise_svg($svg)){ |
|
| 608 | + |
|
| 609 | + list($balise_svg, $atts) = $svg_infos; |
|
| 610 | + $viewBox = explode(' ', $atts['viewBox']); |
|
| 611 | + |
|
| 612 | + if (!in_array($HorV, ['h', 'H'])) { |
|
| 613 | + $transform = "scale(-1,1)"; |
|
| 614 | + |
|
| 615 | + $x = intval($viewBox[0]) + intval($viewBox[2]/2); |
|
| 616 | + $mx = -$x; |
|
| 617 | + $transform = "translate($x, 0) $transform translate($mx, 0)"; |
|
| 618 | + } |
|
| 619 | + else { |
|
| 620 | + $transform = "scale(1,-1)"; |
|
| 621 | + |
|
| 622 | + $y = intval($viewBox[1]) + intval($viewBox[3]/2); |
|
| 623 | + $my = -$y; |
|
| 624 | + $transform = "translate(0, $y) $transform translate(0, $my)"; |
|
| 625 | + } |
|
| 626 | + $svg = svg_transformer($svg, ['transform' => $transform]); |
|
| 627 | + return $svg; |
|
| 628 | + } |
|
| 629 | + return $img; |
|
| 630 | 630 | } |
| 631 | 631 | |
| 632 | 632 | /** |
@@ -640,19 +640,19 @@ discard block |
||
| 640 | 640 | * @return bool|string |
| 641 | 641 | */ |
| 642 | 642 | function svg_rotate($img, $angle, $center_x, $center_y) { |
| 643 | - if ($svg = svg_force_viewBox_px($img) |
|
| 644 | - and $svg_infos = svg_lire_balise_svg($svg)){ |
|
| 643 | + if ($svg = svg_force_viewBox_px($img) |
|
| 644 | + and $svg_infos = svg_lire_balise_svg($svg)){ |
|
| 645 | 645 | |
| 646 | - list($balise_svg, $atts) = $svg_infos; |
|
| 647 | - $viewBox = explode(' ', $atts['viewBox']); |
|
| 646 | + list($balise_svg, $atts) = $svg_infos; |
|
| 647 | + $viewBox = explode(' ', $atts['viewBox']); |
|
| 648 | 648 | |
| 649 | - $center_x = round($viewBox[0] + $center_x * $viewBox[2]); |
|
| 650 | - $center_y = round($viewBox[1] + $center_y * $viewBox[3]); |
|
| 651 | - $svg = svg_transformer($svg, ['transform' => "rotate($angle $center_x $center_y)"]); |
|
| 649 | + $center_x = round($viewBox[0] + $center_x * $viewBox[2]); |
|
| 650 | + $center_y = round($viewBox[1] + $center_y * $viewBox[3]); |
|
| 651 | + $svg = svg_transformer($svg, ['transform' => "rotate($angle $center_x $center_y)"]); |
|
| 652 | 652 | |
| 653 | - return $svg; |
|
| 654 | - } |
|
| 655 | - return $img; |
|
| 653 | + return $svg; |
|
| 654 | + } |
|
| 655 | + return $img; |
|
| 656 | 656 | } |
| 657 | 657 | |
| 658 | 658 | /** |
@@ -664,40 +664,40 @@ discard block |
||
| 664 | 664 | * @return bool|mixed|string |
| 665 | 665 | */ |
| 666 | 666 | function svg_filtrer_couleurs($img, $callback_filter) { |
| 667 | - if ($svg = svg_force_viewBox_px($img) |
|
| 668 | - and $colors = svg_extract_couleurs($svg)) { |
|
| 669 | - |
|
| 670 | - $colors = array_unique($colors); |
|
| 671 | - |
|
| 672 | - $short = []; |
|
| 673 | - $long = []; |
|
| 674 | - while (count($colors)) { |
|
| 675 | - $c = array_shift($colors); |
|
| 676 | - if (strlen($c) == 4) { |
|
| 677 | - $short[] = $c; |
|
| 678 | - } |
|
| 679 | - else { |
|
| 680 | - $long[] = $c; |
|
| 681 | - } |
|
| 682 | - } |
|
| 683 | - |
|
| 684 | - $colors = array_merge($long, $short); |
|
| 685 | - $new_colors = []; |
|
| 686 | - $colors = array_flip($colors); |
|
| 687 | - foreach ($colors as $c => $k) { |
|
| 688 | - $colors[$c] = "@@@COLOR$$k$@@@"; |
|
| 689 | - } |
|
| 690 | - |
|
| 691 | - |
|
| 692 | - foreach ($colors as $original => $replace) { |
|
| 693 | - $new = svg_couleur_to_hexa($original); |
|
| 694 | - $new_colors[$replace] = $callback_filter($new); |
|
| 695 | - } |
|
| 696 | - |
|
| 697 | - $svg = str_replace(array_keys($colors), array_values($colors), $svg); |
|
| 698 | - $svg = str_replace(array_keys($new_colors), array_values($new_colors), $svg); |
|
| 699 | - |
|
| 700 | - return $svg; |
|
| 701 | - } |
|
| 702 | - return $img; |
|
| 667 | + if ($svg = svg_force_viewBox_px($img) |
|
| 668 | + and $colors = svg_extract_couleurs($svg)) { |
|
| 669 | + |
|
| 670 | + $colors = array_unique($colors); |
|
| 671 | + |
|
| 672 | + $short = []; |
|
| 673 | + $long = []; |
|
| 674 | + while (count($colors)) { |
|
| 675 | + $c = array_shift($colors); |
|
| 676 | + if (strlen($c) == 4) { |
|
| 677 | + $short[] = $c; |
|
| 678 | + } |
|
| 679 | + else { |
|
| 680 | + $long[] = $c; |
|
| 681 | + } |
|
| 682 | + } |
|
| 683 | + |
|
| 684 | + $colors = array_merge($long, $short); |
|
| 685 | + $new_colors = []; |
|
| 686 | + $colors = array_flip($colors); |
|
| 687 | + foreach ($colors as $c => $k) { |
|
| 688 | + $colors[$c] = "@@@COLOR$$k$@@@"; |
|
| 689 | + } |
|
| 690 | + |
|
| 691 | + |
|
| 692 | + foreach ($colors as $original => $replace) { |
|
| 693 | + $new = svg_couleur_to_hexa($original); |
|
| 694 | + $new_colors[$replace] = $callback_filter($new); |
|
| 695 | + } |
|
| 696 | + |
|
| 697 | + $svg = str_replace(array_keys($colors), array_values($colors), $svg); |
|
| 698 | + $svg = str_replace(array_keys($new_colors), array_values($new_colors), $svg); |
|
| 699 | + |
|
| 700 | + return $svg; |
|
| 701 | + } |
|
| 702 | + return $img; |
|
| 703 | 703 | } |
| 704 | 704 | \ No newline at end of file |
@@ -4,311 +4,311 @@ discard block |
||
| 4 | 4 | // ** ne pas modifier le fichier ** |
| 5 | 5 | |
| 6 | 6 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 7 | - return; |
|
| 7 | + return; |
|
| 8 | 8 | } |
| 9 | 9 | |
| 10 | 10 | $GLOBALS[$GLOBALS['idx_lang']] = array( |
| 11 | 11 | |
| 12 | - // A |
|
| 13 | - 'activer_plugin' => 'Активирайте плъгина', |
|
| 14 | - 'aide_non_disponible' => 'Тази част от рубриката "Помощник" все още не е публикувана на български език.', |
|
| 15 | - 'auteur' => 'Автор:', |
|
| 16 | - 'avis_acces_interdit' => 'Забранен достъп.', |
|
| 17 | - 'avis_article_modifie' => 'Предупреждение! @nom_auteur_modif@ е работил по тази статия преди @date_diff@ минути', |
|
| 18 | - 'avis_aucun_resultat' => 'Няма намерени резултати.', |
|
| 19 | - 'avis_chemin_invalide_1' => 'Името на файла, което сте избрали', |
|
| 20 | - 'avis_chemin_invalide_2' => 'е грешно. Моля, върнете се на предишната страница, за за проверите подадената информация. ', |
|
| 21 | - 'avis_connexion_echec_1' => 'Връзката към SQL сървъра се разпадна.', # MODIF |
|
| 22 | - 'avis_connexion_echec_2' => 'Моля, върнете се на предишната страница, за да проверите подадената информация.', |
|
| 23 | - 'avis_connexion_echec_3' => '<b>ВНИМАНИЕ!</b> За достъп до голяма част от сървърите е необходимо да се изпрати <b>заявка</b> за активиране достъпа до базите данни SQL, преди използването им. Ако не успеете да се свържете, проверете дали сте изпратили заявката.', # MODIF |
|
| 24 | - 'avis_connexion_ldap_echec_1' => 'Връзката с LDAP сървъра пропадна.', |
|
| 25 | - 'avis_connexion_ldap_echec_2' => 'Моля, върнете се на предишната страница, за за проверите подадената информация.', |
|
| 26 | - 'avis_connexion_ldap_echec_3' => 'Без използване на LDAP-поддръжка за вписване на потребители.', |
|
| 27 | - 'avis_deplacement_rubrique' => 'Предупреждение! Рубриката съдържа @contient_breves@ новина@scb@: ако желаете да я преместите, отметнете в полето за потвърждение. ', |
|
| 28 | - 'avis_erreur_connexion_mysql' => 'Грешка при свързване с SQL', |
|
| 29 | - 'avis_espace_interdit' => '<b>Забранена област</b><p>СПИП е вече инсталиран.', # MODIF |
|
| 30 | - 'avis_lecture_noms_bases_1' => 'Инсталаторът не може да прочете имената на инсталираните бази данни.', |
|
| 31 | - 'avis_lecture_noms_bases_2' => 'Или не съществува база данни, или свойството, позволяващо преглед на базите данни е забранено |
|
| 12 | + // A |
|
| 13 | + 'activer_plugin' => 'Активирайте плъгина', |
|
| 14 | + 'aide_non_disponible' => 'Тази част от рубриката "Помощник" все още не е публикувана на български език.', |
|
| 15 | + 'auteur' => 'Автор:', |
|
| 16 | + 'avis_acces_interdit' => 'Забранен достъп.', |
|
| 17 | + 'avis_article_modifie' => 'Предупреждение! @nom_auteur_modif@ е работил по тази статия преди @date_diff@ минути', |
|
| 18 | + 'avis_aucun_resultat' => 'Няма намерени резултати.', |
|
| 19 | + 'avis_chemin_invalide_1' => 'Името на файла, което сте избрали', |
|
| 20 | + 'avis_chemin_invalide_2' => 'е грешно. Моля, върнете се на предишната страница, за за проверите подадената информация. ', |
|
| 21 | + 'avis_connexion_echec_1' => 'Връзката към SQL сървъра се разпадна.', # MODIF |
|
| 22 | + 'avis_connexion_echec_2' => 'Моля, върнете се на предишната страница, за да проверите подадената информация.', |
|
| 23 | + 'avis_connexion_echec_3' => '<b>ВНИМАНИЕ!</b> За достъп до голяма част от сървърите е необходимо да се изпрати <b>заявка</b> за активиране достъпа до базите данни SQL, преди използването им. Ако не успеете да се свържете, проверете дали сте изпратили заявката.', # MODIF |
|
| 24 | + 'avis_connexion_ldap_echec_1' => 'Връзката с LDAP сървъра пропадна.', |
|
| 25 | + 'avis_connexion_ldap_echec_2' => 'Моля, върнете се на предишната страница, за за проверите подадената информация.', |
|
| 26 | + 'avis_connexion_ldap_echec_3' => 'Без използване на LDAP-поддръжка за вписване на потребители.', |
|
| 27 | + 'avis_deplacement_rubrique' => 'Предупреждение! Рубриката съдържа @contient_breves@ новина@scb@: ако желаете да я преместите, отметнете в полето за потвърждение. ', |
|
| 28 | + 'avis_erreur_connexion_mysql' => 'Грешка при свързване с SQL', |
|
| 29 | + 'avis_espace_interdit' => '<b>Забранена област</b><p>СПИП е вече инсталиран.', # MODIF |
|
| 30 | + 'avis_lecture_noms_bases_1' => 'Инсталаторът не може да прочете имената на инсталираните бази данни.', |
|
| 31 | + 'avis_lecture_noms_bases_2' => 'Или не съществува база данни, или свойството, позволяващо преглед на базите данни е забранено |
|
| 32 | 32 | поради съображения за сигурност (какъвто е случаят с много доставчици).', |
| 33 | - 'avis_lecture_noms_bases_3' => 'Ако втората възможност се окаже вярна, тогава е възможно да се използва базата данни, указана след Вашето влизане в системата.', |
|
| 34 | - 'avis_non_acces_page' => 'Забранен достъп до тази страница.', |
|
| 35 | - 'avis_operation_echec' => 'Операцията пропадна.', |
|
| 36 | - 'avis_suppression_base' => 'ПРЕДУПРЕЖДЕНИЕ: изтриването на данните е необратимо', |
|
| 33 | + 'avis_lecture_noms_bases_3' => 'Ако втората възможност се окаже вярна, тогава е възможно да се използва базата данни, указана след Вашето влизане в системата.', |
|
| 34 | + 'avis_non_acces_page' => 'Забранен достъп до тази страница.', |
|
| 35 | + 'avis_operation_echec' => 'Операцията пропадна.', |
|
| 36 | + 'avis_suppression_base' => 'ПРЕДУПРЕЖДЕНИЕ: изтриването на данните е необратимо', |
|
| 37 | 37 | |
| 38 | - // B |
|
| 39 | - 'bouton_acces_ldap' => 'Добавяне достъп до LDAP >>', |
|
| 40 | - 'bouton_ajouter' => 'Добавяне', |
|
| 41 | - 'bouton_demande_publication' => 'Заявка за публикуване на статията', |
|
| 42 | - 'bouton_desactive_tout' => 'Деактивирайте всички', |
|
| 43 | - 'bouton_effacer_tout' => 'Изтриване на ВСИЧКО', |
|
| 44 | - 'bouton_envoyer_message' => 'Последно съобщение: изпращане', |
|
| 45 | - 'bouton_modifier' => 'Промяна', |
|
| 46 | - 'bouton_radio_afficher' => 'Показване', |
|
| 47 | - 'bouton_radio_apparaitre_liste_redacteurs_connectes' => 'Добяване към списъка на текущо свързаните редактори', |
|
| 48 | - 'bouton_radio_envoi_annonces_adresse' => 'Изпращане на съобщения до следния адрес:', |
|
| 49 | - 'bouton_radio_envoi_liste_nouveautes' => 'Изпращане на списък с новини', |
|
| 50 | - 'bouton_radio_non_apparaitre_liste_redacteurs_connectes' => 'Изключване от списъка на текущо свързаните редактори', |
|
| 51 | - 'bouton_radio_non_envoi_annonces_editoriales' => 'Отказ от изпращане на редакторски съобщения', |
|
| 52 | - 'bouton_redirection' => 'ПРЕНАСОЧВАНЕ', |
|
| 53 | - 'bouton_relancer_installation' => 'Подновяване на инсталацията', |
|
| 54 | - 'bouton_suivant' => 'По-нататък', |
|
| 55 | - 'bouton_tenter_recuperation' => 'Опит за възстановяване', |
|
| 56 | - 'bouton_test_proxy' => 'Тестване на прокси', |
|
| 57 | - 'bouton_vider_cache' => 'Изпразване на кеш-паметта', |
|
| 38 | + // B |
|
| 39 | + 'bouton_acces_ldap' => 'Добавяне достъп до LDAP >>', |
|
| 40 | + 'bouton_ajouter' => 'Добавяне', |
|
| 41 | + 'bouton_demande_publication' => 'Заявка за публикуване на статията', |
|
| 42 | + 'bouton_desactive_tout' => 'Деактивирайте всички', |
|
| 43 | + 'bouton_effacer_tout' => 'Изтриване на ВСИЧКО', |
|
| 44 | + 'bouton_envoyer_message' => 'Последно съобщение: изпращане', |
|
| 45 | + 'bouton_modifier' => 'Промяна', |
|
| 46 | + 'bouton_radio_afficher' => 'Показване', |
|
| 47 | + 'bouton_radio_apparaitre_liste_redacteurs_connectes' => 'Добяване към списъка на текущо свързаните редактори', |
|
| 48 | + 'bouton_radio_envoi_annonces_adresse' => 'Изпращане на съобщения до следния адрес:', |
|
| 49 | + 'bouton_radio_envoi_liste_nouveautes' => 'Изпращане на списък с новини', |
|
| 50 | + 'bouton_radio_non_apparaitre_liste_redacteurs_connectes' => 'Изключване от списъка на текущо свързаните редактори', |
|
| 51 | + 'bouton_radio_non_envoi_annonces_editoriales' => 'Отказ от изпращане на редакторски съобщения', |
|
| 52 | + 'bouton_redirection' => 'ПРЕНАСОЧВАНЕ', |
|
| 53 | + 'bouton_relancer_installation' => 'Подновяване на инсталацията', |
|
| 54 | + 'bouton_suivant' => 'По-нататък', |
|
| 55 | + 'bouton_tenter_recuperation' => 'Опит за възстановяване', |
|
| 56 | + 'bouton_test_proxy' => 'Тестване на прокси', |
|
| 57 | + 'bouton_vider_cache' => 'Изпразване на кеш-паметта', |
|
| 58 | 58 | |
| 59 | - // C |
|
| 60 | - 'cache_modifiable_webmestre' => 'Параметърът може да бъде променен от уеб-администратора. ', |
|
| 61 | - 'calendrier_synchro' => 'Ако инсталирате приложение за дневник, съвместимо с <b>iCal</b>, ще можете да го синхронизирате с информацията от сайта.', |
|
| 59 | + // C |
|
| 60 | + 'cache_modifiable_webmestre' => 'Параметърът може да бъде променен от уеб-администратора. ', |
|
| 61 | + 'calendrier_synchro' => 'Ако инсталирате приложение за дневник, съвместимо с <b>iCal</b>, ще можете да го синхронизирате с информацията от сайта.', |
|
| 62 | 62 | |
| 63 | - // D |
|
| 64 | - 'date_mot_heures' => 'ч.', |
|
| 63 | + // D |
|
| 64 | + 'date_mot_heures' => 'ч.', |
|
| 65 | 65 | |
| 66 | - // E |
|
| 67 | - 'email' => 'електронен адрес', |
|
| 68 | - 'email_2' => 'електронен адрес:', |
|
| 69 | - 'entree_adresse_annuaire' => 'Адрес на директорията', |
|
| 70 | - 'entree_adresse_email' => 'Електронен адрес (е-mail)', |
|
| 71 | - 'entree_base_donnee_1' => 'Адрес на базата данни', |
|
| 72 | - 'entree_base_donnee_2' => '(Често адресът съвпада с адрес от Вашия сайт, понякога съответства на името «localhost», а понякога се оставя празен.)', |
|
| 73 | - 'entree_biographie' => 'Кратка биография с няколко думи.', |
|
| 74 | - 'entree_chemin_acces' => '<b>Въвеждане</b> на път:', |
|
| 75 | - 'entree_cle_pgp' => 'PGP ключ', |
|
| 76 | - 'entree_contenu_rubrique' => '(Кратко съдържание на рубриката.)', |
|
| 77 | - 'entree_identifiants_connexion' => 'Идентефикатори за свързване', |
|
| 78 | - 'entree_informations_connexion_ldap' => 'Моля, попълнете бланката с информацията за LDAP връзка. Тази информация ще получите от системния или мрежовия администратор.', |
|
| 79 | - 'entree_infos_perso' => 'Кой си ти?', |
|
| 80 | - 'entree_interieur_rubrique' => 'В рубриката:', |
|
| 81 | - 'entree_liens_sites' => '<b>Хипертекстова препратка</b> (препратка, сайт за посещаване и т.н.)', |
|
| 82 | - 'entree_login' => 'Вход', |
|
| 83 | - 'entree_login_connexion_1' => 'Потребителско име за свързване', |
|
| 84 | - 'entree_login_connexion_2' => '(Понякога съвпада с Вашето потребителско име към FTP достъпа, понякога се оставя празно)', |
|
| 85 | - 'entree_mot_passe' => 'Парола', |
|
| 86 | - 'entree_mot_passe_1' => 'Парола за свързване', |
|
| 87 | - 'entree_mot_passe_2' => '(Понякога съвпада с паролата Ви за FTP-достъп, понякога се оставя празно)', |
|
| 88 | - 'entree_nom_fichier' => 'Моля, попълнете име на файла @texte_compresse@:', |
|
| 89 | - 'entree_nom_pseudo' => 'Име или прякор', |
|
| 90 | - 'entree_nom_pseudo_1' => '(Име или прякор)', |
|
| 91 | - 'entree_nom_site' => 'Име на сайта', |
|
| 92 | - 'entree_nouveau_passe' => 'Нова парола', |
|
| 93 | - 'entree_passe_ldap' => 'Парола', |
|
| 94 | - 'entree_port_annuaire' => 'Номер на порта на директорията', |
|
| 95 | - 'entree_signature' => 'Подпис', |
|
| 96 | - 'entree_titre_obligatoire' => '<b>Заглавие</b> [Задължително]<br />', |
|
| 97 | - 'entree_url' => 'URL на сайта', |
|
| 98 | - 'erreur_plugin_fichier_absent' => 'Липсва файл', |
|
| 99 | - 'erreur_plugin_fichier_def_absent' => 'Файлът - дефиниция липсва', |
|
| 100 | - 'erreur_plugin_nom_fonction_interdit' => 'Забранено име на функцията', |
|
| 101 | - 'erreur_plugin_nom_manquant' => 'Липсва име на плъгина', |
|
| 102 | - 'erreur_plugin_prefix_manquant' => 'Не е определено име, указващо мястото на плъгина', |
|
| 103 | - 'erreur_plugin_tag_plugin_absent' => '<плъгин> липсва във файла - дефиниция', |
|
| 104 | - 'erreur_plugin_version_manquant' => 'Липсва версията на плъгина', |
|
| 66 | + // E |
|
| 67 | + 'email' => 'електронен адрес', |
|
| 68 | + 'email_2' => 'електронен адрес:', |
|
| 69 | + 'entree_adresse_annuaire' => 'Адрес на директорията', |
|
| 70 | + 'entree_adresse_email' => 'Електронен адрес (е-mail)', |
|
| 71 | + 'entree_base_donnee_1' => 'Адрес на базата данни', |
|
| 72 | + 'entree_base_donnee_2' => '(Често адресът съвпада с адрес от Вашия сайт, понякога съответства на името «localhost», а понякога се оставя празен.)', |
|
| 73 | + 'entree_biographie' => 'Кратка биография с няколко думи.', |
|
| 74 | + 'entree_chemin_acces' => '<b>Въвеждане</b> на път:', |
|
| 75 | + 'entree_cle_pgp' => 'PGP ключ', |
|
| 76 | + 'entree_contenu_rubrique' => '(Кратко съдържание на рубриката.)', |
|
| 77 | + 'entree_identifiants_connexion' => 'Идентефикатори за свързване', |
|
| 78 | + 'entree_informations_connexion_ldap' => 'Моля, попълнете бланката с информацията за LDAP връзка. Тази информация ще получите от системния или мрежовия администратор.', |
|
| 79 | + 'entree_infos_perso' => 'Кой си ти?', |
|
| 80 | + 'entree_interieur_rubrique' => 'В рубриката:', |
|
| 81 | + 'entree_liens_sites' => '<b>Хипертекстова препратка</b> (препратка, сайт за посещаване и т.н.)', |
|
| 82 | + 'entree_login' => 'Вход', |
|
| 83 | + 'entree_login_connexion_1' => 'Потребителско име за свързване', |
|
| 84 | + 'entree_login_connexion_2' => '(Понякога съвпада с Вашето потребителско име към FTP достъпа, понякога се оставя празно)', |
|
| 85 | + 'entree_mot_passe' => 'Парола', |
|
| 86 | + 'entree_mot_passe_1' => 'Парола за свързване', |
|
| 87 | + 'entree_mot_passe_2' => '(Понякога съвпада с паролата Ви за FTP-достъп, понякога се оставя празно)', |
|
| 88 | + 'entree_nom_fichier' => 'Моля, попълнете име на файла @texte_compresse@:', |
|
| 89 | + 'entree_nom_pseudo' => 'Име или прякор', |
|
| 90 | + 'entree_nom_pseudo_1' => '(Име или прякор)', |
|
| 91 | + 'entree_nom_site' => 'Име на сайта', |
|
| 92 | + 'entree_nouveau_passe' => 'Нова парола', |
|
| 93 | + 'entree_passe_ldap' => 'Парола', |
|
| 94 | + 'entree_port_annuaire' => 'Номер на порта на директорията', |
|
| 95 | + 'entree_signature' => 'Подпис', |
|
| 96 | + 'entree_titre_obligatoire' => '<b>Заглавие</b> [Задължително]<br />', |
|
| 97 | + 'entree_url' => 'URL на сайта', |
|
| 98 | + 'erreur_plugin_fichier_absent' => 'Липсва файл', |
|
| 99 | + 'erreur_plugin_fichier_def_absent' => 'Файлът - дефиниция липсва', |
|
| 100 | + 'erreur_plugin_nom_fonction_interdit' => 'Забранено име на функцията', |
|
| 101 | + 'erreur_plugin_nom_manquant' => 'Липсва име на плъгина', |
|
| 102 | + 'erreur_plugin_prefix_manquant' => 'Не е определено име, указващо мястото на плъгина', |
|
| 103 | + 'erreur_plugin_tag_plugin_absent' => '<плъгин> липсва във файла - дефиниция', |
|
| 104 | + 'erreur_plugin_version_manquant' => 'Липсва версията на плъгина', |
|
| 105 | 105 | |
| 106 | - // I |
|
| 107 | - 'ical_info1' => 'Тази страница представя няколко начина да останете във връзка с дейността на сайта.', |
|
| 108 | - 'ical_info2' => 'За повече информация, отидете на <a href="@spipnet@">Документация за СПИП</a>.', # MODIF |
|
| 109 | - 'ical_info_calendrier' => 'Имате на разположение два календара. Първият е карта на сайта, указваща всички публикувани статии. Вторият съдържа обявления за редакторите, както и най-новите лични съобщения до Вас. Този календар се показва само на Вас, благодарение на личнен ключ, който можете да променяте по всяко време чрез смяна на паролата.', |
|
| 110 | - 'ical_methode_http' => 'Сваляне', |
|
| 111 | - 'ical_methode_webcal' => 'Синхронизация (webcal://)', # MODIF |
|
| 112 | - 'ical_texte_js' => 'Един ред на скрипт Java позволява на всяка страница от сайта лесно да се показват най-новите публикувани статии.', |
|
| 113 | - 'ical_texte_prive' => 'Календарът е строго личен. Той уведомява за вътрешните редакторски дейности на сайта (напр. задачи, лични срещи, изпратени статии и новини и др.)', |
|
| 114 | - 'ical_texte_public' => 'Календарът Ви дава възможност да следите публичните дейности на сайта (напр. публикувани статии и новини).', |
|
| 115 | - 'ical_texte_rss' => 'Можете да обедините последните новини от сайта на всеки файлов четец от типа XML/RSS (Rich Site Summary). Това е същият формат, който позволява на СПИП да чете последните новини, публикувани от други сайтове като за целта използва съвместим формат за обмен.', |
|
| 116 | - 'ical_titre_js' => 'Скрипт Java', |
|
| 117 | - 'ical_titre_mailing' => 'Пощенски списък', |
|
| 118 | - 'ical_titre_rss' => 'Файлове за обединение', |
|
| 119 | - 'icone_activer_cookie' => 'Поставяне на cookie', |
|
| 120 | - 'icone_admin_plugin' => 'Управление на плъгините', |
|
| 121 | - 'icone_afficher_auteurs' => 'Показване на авторите', |
|
| 122 | - 'icone_afficher_visiteurs' => 'Показване на посетителите', |
|
| 123 | - 'icone_arret_discussion' => 'Прекъсване участието в тази дискусия', |
|
| 124 | - 'icone_calendrier' => 'Календар', |
|
| 125 | - 'icone_creer_auteur' => 'Създаване на автор и свързване със статията', |
|
| 126 | - 'icone_creer_mot_cle' => 'Създаване на ключова дума и свързване със статията', |
|
| 127 | - 'icone_creer_rubrique_2' => 'Създаване на рубрика', |
|
| 128 | - 'icone_modifier_article' => 'Промяна на статията', |
|
| 129 | - 'icone_modifier_rubrique' => 'Промяна на рубриката', |
|
| 130 | - 'icone_retour' => 'Обратно', |
|
| 131 | - 'icone_retour_article' => 'Обратно към статията', |
|
| 132 | - 'icone_supprimer_cookie' => 'Изтриване на cookie', |
|
| 133 | - 'icone_supprimer_rubrique' => 'Изтриване на рубриката', |
|
| 134 | - 'icone_supprimer_signature' => 'Изтриване на записа', |
|
| 135 | - 'icone_valider_signature' => 'Одобряване на записа', |
|
| 136 | - 'image_administrer_rubrique' => 'Управление на рубриката', |
|
| 137 | - 'impossible_modifier_login_auteur' => 'Impossible de modifier le login.', # MODIF |
|
| 138 | - 'impossible_modifier_pass_auteur' => 'Impossible de modifier le mot de passe.', # MODIF |
|
| 139 | - 'info_1_article' => '1 статия', |
|
| 140 | - 'info_activer_cookie' => 'Възможност за активиране на <b>cookie администриране</b>, което позволява |
|
| 106 | + // I |
|
| 107 | + 'ical_info1' => 'Тази страница представя няколко начина да останете във връзка с дейността на сайта.', |
|
| 108 | + 'ical_info2' => 'За повече информация, отидете на <a href="@spipnet@">Документация за СПИП</a>.', # MODIF |
|
| 109 | + 'ical_info_calendrier' => 'Имате на разположение два календара. Първият е карта на сайта, указваща всички публикувани статии. Вторият съдържа обявления за редакторите, както и най-новите лични съобщения до Вас. Този календар се показва само на Вас, благодарение на личнен ключ, който можете да променяте по всяко време чрез смяна на паролата.', |
|
| 110 | + 'ical_methode_http' => 'Сваляне', |
|
| 111 | + 'ical_methode_webcal' => 'Синхронизация (webcal://)', # MODIF |
|
| 112 | + 'ical_texte_js' => 'Един ред на скрипт Java позволява на всяка страница от сайта лесно да се показват най-новите публикувани статии.', |
|
| 113 | + 'ical_texte_prive' => 'Календарът е строго личен. Той уведомява за вътрешните редакторски дейности на сайта (напр. задачи, лични срещи, изпратени статии и новини и др.)', |
|
| 114 | + 'ical_texte_public' => 'Календарът Ви дава възможност да следите публичните дейности на сайта (напр. публикувани статии и новини).', |
|
| 115 | + 'ical_texte_rss' => 'Можете да обедините последните новини от сайта на всеки файлов четец от типа XML/RSS (Rich Site Summary). Това е същият формат, който позволява на СПИП да чете последните новини, публикувани от други сайтове като за целта използва съвместим формат за обмен.', |
|
| 116 | + 'ical_titre_js' => 'Скрипт Java', |
|
| 117 | + 'ical_titre_mailing' => 'Пощенски списък', |
|
| 118 | + 'ical_titre_rss' => 'Файлове за обединение', |
|
| 119 | + 'icone_activer_cookie' => 'Поставяне на cookie', |
|
| 120 | + 'icone_admin_plugin' => 'Управление на плъгините', |
|
| 121 | + 'icone_afficher_auteurs' => 'Показване на авторите', |
|
| 122 | + 'icone_afficher_visiteurs' => 'Показване на посетителите', |
|
| 123 | + 'icone_arret_discussion' => 'Прекъсване участието в тази дискусия', |
|
| 124 | + 'icone_calendrier' => 'Календар', |
|
| 125 | + 'icone_creer_auteur' => 'Създаване на автор и свързване със статията', |
|
| 126 | + 'icone_creer_mot_cle' => 'Създаване на ключова дума и свързване със статията', |
|
| 127 | + 'icone_creer_rubrique_2' => 'Създаване на рубрика', |
|
| 128 | + 'icone_modifier_article' => 'Промяна на статията', |
|
| 129 | + 'icone_modifier_rubrique' => 'Промяна на рубриката', |
|
| 130 | + 'icone_retour' => 'Обратно', |
|
| 131 | + 'icone_retour_article' => 'Обратно към статията', |
|
| 132 | + 'icone_supprimer_cookie' => 'Изтриване на cookie', |
|
| 133 | + 'icone_supprimer_rubrique' => 'Изтриване на рубриката', |
|
| 134 | + 'icone_supprimer_signature' => 'Изтриване на записа', |
|
| 135 | + 'icone_valider_signature' => 'Одобряване на записа', |
|
| 136 | + 'image_administrer_rubrique' => 'Управление на рубриката', |
|
| 137 | + 'impossible_modifier_login_auteur' => 'Impossible de modifier le login.', # MODIF |
|
| 138 | + 'impossible_modifier_pass_auteur' => 'Impossible de modifier le mot de passe.', # MODIF |
|
| 139 | + 'info_1_article' => '1 статия', |
|
| 140 | + 'info_activer_cookie' => 'Възможност за активиране на <b>cookie администриране</b>, което позволява |
|
| 141 | 141 | улеснено превключване между публичния сайт и личната зона.', |
| 142 | - 'info_administrateur' => 'Администратор', |
|
| 143 | - 'info_administrateur_1' => 'Администратор', |
|
| 144 | - 'info_administrateur_2' => 'на сайта (<i>внимавайте</i>)', |
|
| 145 | - 'info_administrateur_site_01' => 'Ако сте администратор на сайта, моля', |
|
| 146 | - 'info_administrateur_site_02' => 'посещаване на препратката', |
|
| 147 | - 'info_administrateurs' => 'Администратори', |
|
| 148 | - 'info_administrer_rubrique' => 'Вие можете да управлявате рубриката', |
|
| 149 | - 'info_adresse' => 'към адрес:', |
|
| 150 | - 'info_adresse_url' => 'Публичен URL на сайта ', |
|
| 151 | - 'info_aide_en_ligne' => 'Помощник', |
|
| 152 | - 'info_ajout_image' => 'Когато се добавят изображения под формата на приложени документи към |
|
| 142 | + 'info_administrateur' => 'Администратор', |
|
| 143 | + 'info_administrateur_1' => 'Администратор', |
|
| 144 | + 'info_administrateur_2' => 'на сайта (<i>внимавайте</i>)', |
|
| 145 | + 'info_administrateur_site_01' => 'Ако сте администратор на сайта, моля', |
|
| 146 | + 'info_administrateur_site_02' => 'посещаване на препратката', |
|
| 147 | + 'info_administrateurs' => 'Администратори', |
|
| 148 | + 'info_administrer_rubrique' => 'Вие можете да управлявате рубриката', |
|
| 149 | + 'info_adresse' => 'към адрес:', |
|
| 150 | + 'info_adresse_url' => 'Публичен URL на сайта ', |
|
| 151 | + 'info_aide_en_ligne' => 'Помощник', |
|
| 152 | + 'info_ajout_image' => 'Когато се добавят изображения под формата на приложени документи към |
|
| 153 | 153 | статия, СПИП автоматично създава умалени образи (винетки) |
| 154 | 154 | на поместените изображения. Това позволява, например да се създаде |
| 155 | 155 | автоматично галерия от изображения.', |
| 156 | - 'info_ajouter_rubrique' => 'Добавяне на друга рубрика за управление:', |
|
| 157 | - 'info_annonce_nouveautes' => 'Най-новите съобщения', |
|
| 158 | - 'info_article' => 'статия', |
|
| 159 | - 'info_article_2' => 'статии', |
|
| 160 | - 'info_article_a_paraitre' => 'Статии за одобрение със стара дата ', |
|
| 161 | - 'info_articles_02' => 'статии', |
|
| 162 | - 'info_articles_2' => 'Статии', |
|
| 163 | - 'info_articles_auteur' => 'Статиите на автора', |
|
| 164 | - 'info_articles_trouves' => 'Намерени статии', |
|
| 165 | - 'info_attente_validation' => 'Вашите статии, очакващи одобрение за публикуване', |
|
| 166 | - 'info_aujourdhui' => 'днес:', |
|
| 167 | - 'info_auteur_gere_toutes_rubriques_2' => 'Je gère <b>toutes les rubriques</b>', # MODIF |
|
| 168 | - 'info_auteurs' => 'Автори', |
|
| 169 | - 'info_auteurs_par_tri' => 'Автори@partri@', |
|
| 170 | - 'info_auteurs_trouves' => 'Намерени автори', |
|
| 171 | - 'info_authentification_externe' => 'Външно удостоверяване на автентичността', |
|
| 172 | - 'info_avertissement' => 'Предупреждение', |
|
| 173 | - 'info_base_installee' => 'Структурата на Вашата база данни е инсталирана.', |
|
| 174 | - 'info_chapeau' => 'Преглед', |
|
| 175 | - 'info_chapeau_2' => 'Въведение:', |
|
| 176 | - 'info_chemin_acces_1' => 'Опции: <b>Път за достъп до директорията</b>', |
|
| 177 | - 'info_chemin_acces_2' => 'От сега нататък Вие трябва да определяте пътя за достъп до данните в директорията. Тази информация дава възможност за преглед на потребителските профили, съхранени там.', |
|
| 178 | - 'info_chemin_acces_annuaire' => 'Опции: <b>Път за достъп</b>', |
|
| 179 | - 'info_choix_base' => 'Трета стъпка:', |
|
| 180 | - 'info_classement_1' => '<sup>st</sup> от общо @liste@', |
|
| 181 | - 'info_classement_2' => '<sup>th</sup> от общо @liste@', |
|
| 182 | - 'info_code_acces' => 'Не забравяйте личния си код за достъп!', |
|
| 183 | - 'info_config_suivi' => 'Ако адресът отговаря а даден пощенски списък, можете да окажете отдолу адресът, където участниците на сайта биха могли да се регистрират. Този адрес може да бъде URL (наример страницата, където се прави регистрация през Интернет страница), или електронен адрес, заедно с определена тема на писмото (например: <tt>@adresse_suivi@?subject=subscribe</tt>):', |
|
| 184 | - 'info_config_suivi_explication' => 'Можете да се абонирате за пощенския списък на сайта. За целта ще получите автоматично електронно съобщение с обявленията, свързани с новините и статиите, изпратени за публикуване.', |
|
| 185 | - 'info_confirmer_passe' => 'Потвърдете новата парола:', |
|
| 186 | - 'info_connexion_base' => 'Втора стъпка: <b>Опит за свързване с базата данни</b>', |
|
| 187 | - 'info_connexion_ldap_ok' => '<b>Успешна LDAP връзка</b><p> Преминете към следващата стъпка.', # MODIF |
|
| 188 | - 'info_connexion_mysql' => 'Първа стъпка: <b>Вашата SQL връзка</b>', |
|
| 189 | - 'info_connexion_ok' => 'Успешно свързване.', |
|
| 190 | - 'info_contact' => 'Контакт', |
|
| 191 | - 'info_contenu_articles' => 'Съдържание на статиите', |
|
| 192 | - 'info_creation_paragraphe' => '(За нов ред оставете празни редове.)', # MODIF |
|
| 193 | - 'info_creation_rubrique' => 'Трябва да създадете поне една рубрика,<br />преди да започнете да пишете статии.<br />', |
|
| 194 | - 'info_creation_tables' => 'Четвърта стъпка: <b>Създаване на таблици с бази данни</b>', |
|
| 195 | - 'info_creer_base' => '<b>Създаване</b> на нова база данни:', |
|
| 196 | - 'info_dans_rubrique' => 'В рубриката:', |
|
| 197 | - 'info_date_publication_anterieure' => 'Дата на предишно публикуване:', |
|
| 198 | - 'info_date_referencement' => 'ДАТА НА СВЪРЗВАНЕ НА САЙТА:', |
|
| 199 | - 'info_derniere_etape' => 'Последна стъпка: <b>Приключено!', |
|
| 200 | - 'info_descriptif' => 'Описание:', |
|
| 201 | - 'info_discussion_cours' => 'Дискусии в ход', |
|
| 202 | - 'info_ecrire_article' => 'Преди да започнете за пишете статии, трябва да създадете поне една рубрика.', |
|
| 203 | - 'info_email_envoi' => 'Електронен адрес на изпращача (по желание)', |
|
| 204 | - 'info_email_envoi_txt' => 'Впишете електронния адрес на изпращача, който използвате (по подразбиране, адресът на получателя ще се използва за адрес на изпращача):', |
|
| 205 | - 'info_email_webmestre' => 'Електронен адрес на уеб-администратора (незадължителен)', # MODIF |
|
| 206 | - 'info_envoi_email_automatique' => 'Автоматично изпращане на съобщение', |
|
| 207 | - 'info_envoyer_maintenant' => 'Изпращане', |
|
| 208 | - 'info_etape_suivante' => 'Преминете към следващата стъпка', |
|
| 209 | - 'info_etape_suivante_1' => 'Можете да преминете към следващата стъпка.', |
|
| 210 | - 'info_etape_suivante_2' => 'Можете да преминете към следващата стъпка.', |
|
| 211 | - 'info_exportation_base' => 'експортиране на базата данни в @archive@', |
|
| 212 | - 'info_facilite_suivi_activite' => 'За улесняване по-нататъшните действия на редакторите, |
|
| 156 | + 'info_ajouter_rubrique' => 'Добавяне на друга рубрика за управление:', |
|
| 157 | + 'info_annonce_nouveautes' => 'Най-новите съобщения', |
|
| 158 | + 'info_article' => 'статия', |
|
| 159 | + 'info_article_2' => 'статии', |
|
| 160 | + 'info_article_a_paraitre' => 'Статии за одобрение със стара дата ', |
|
| 161 | + 'info_articles_02' => 'статии', |
|
| 162 | + 'info_articles_2' => 'Статии', |
|
| 163 | + 'info_articles_auteur' => 'Статиите на автора', |
|
| 164 | + 'info_articles_trouves' => 'Намерени статии', |
|
| 165 | + 'info_attente_validation' => 'Вашите статии, очакващи одобрение за публикуване', |
|
| 166 | + 'info_aujourdhui' => 'днес:', |
|
| 167 | + 'info_auteur_gere_toutes_rubriques_2' => 'Je gère <b>toutes les rubriques</b>', # MODIF |
|
| 168 | + 'info_auteurs' => 'Автори', |
|
| 169 | + 'info_auteurs_par_tri' => 'Автори@partri@', |
|
| 170 | + 'info_auteurs_trouves' => 'Намерени автори', |
|
| 171 | + 'info_authentification_externe' => 'Външно удостоверяване на автентичността', |
|
| 172 | + 'info_avertissement' => 'Предупреждение', |
|
| 173 | + 'info_base_installee' => 'Структурата на Вашата база данни е инсталирана.', |
|
| 174 | + 'info_chapeau' => 'Преглед', |
|
| 175 | + 'info_chapeau_2' => 'Въведение:', |
|
| 176 | + 'info_chemin_acces_1' => 'Опции: <b>Път за достъп до директорията</b>', |
|
| 177 | + 'info_chemin_acces_2' => 'От сега нататък Вие трябва да определяте пътя за достъп до данните в директорията. Тази информация дава възможност за преглед на потребителските профили, съхранени там.', |
|
| 178 | + 'info_chemin_acces_annuaire' => 'Опции: <b>Път за достъп</b>', |
|
| 179 | + 'info_choix_base' => 'Трета стъпка:', |
|
| 180 | + 'info_classement_1' => '<sup>st</sup> от общо @liste@', |
|
| 181 | + 'info_classement_2' => '<sup>th</sup> от общо @liste@', |
|
| 182 | + 'info_code_acces' => 'Не забравяйте личния си код за достъп!', |
|
| 183 | + 'info_config_suivi' => 'Ако адресът отговаря а даден пощенски списък, можете да окажете отдолу адресът, където участниците на сайта биха могли да се регистрират. Този адрес може да бъде URL (наример страницата, където се прави регистрация през Интернет страница), или електронен адрес, заедно с определена тема на писмото (например: <tt>@adresse_suivi@?subject=subscribe</tt>):', |
|
| 184 | + 'info_config_suivi_explication' => 'Можете да се абонирате за пощенския списък на сайта. За целта ще получите автоматично електронно съобщение с обявленията, свързани с новините и статиите, изпратени за публикуване.', |
|
| 185 | + 'info_confirmer_passe' => 'Потвърдете новата парола:', |
|
| 186 | + 'info_connexion_base' => 'Втора стъпка: <b>Опит за свързване с базата данни</b>', |
|
| 187 | + 'info_connexion_ldap_ok' => '<b>Успешна LDAP връзка</b><p> Преминете към следващата стъпка.', # MODIF |
|
| 188 | + 'info_connexion_mysql' => 'Първа стъпка: <b>Вашата SQL връзка</b>', |
|
| 189 | + 'info_connexion_ok' => 'Успешно свързване.', |
|
| 190 | + 'info_contact' => 'Контакт', |
|
| 191 | + 'info_contenu_articles' => 'Съдържание на статиите', |
|
| 192 | + 'info_creation_paragraphe' => '(За нов ред оставете празни редове.)', # MODIF |
|
| 193 | + 'info_creation_rubrique' => 'Трябва да създадете поне една рубрика,<br />преди да започнете да пишете статии.<br />', |
|
| 194 | + 'info_creation_tables' => 'Четвърта стъпка: <b>Създаване на таблици с бази данни</b>', |
|
| 195 | + 'info_creer_base' => '<b>Създаване</b> на нова база данни:', |
|
| 196 | + 'info_dans_rubrique' => 'В рубриката:', |
|
| 197 | + 'info_date_publication_anterieure' => 'Дата на предишно публикуване:', |
|
| 198 | + 'info_date_referencement' => 'ДАТА НА СВЪРЗВАНЕ НА САЙТА:', |
|
| 199 | + 'info_derniere_etape' => 'Последна стъпка: <b>Приключено!', |
|
| 200 | + 'info_descriptif' => 'Описание:', |
|
| 201 | + 'info_discussion_cours' => 'Дискусии в ход', |
|
| 202 | + 'info_ecrire_article' => 'Преди да започнете за пишете статии, трябва да създадете поне една рубрика.', |
|
| 203 | + 'info_email_envoi' => 'Електронен адрес на изпращача (по желание)', |
|
| 204 | + 'info_email_envoi_txt' => 'Впишете електронния адрес на изпращача, който използвате (по подразбиране, адресът на получателя ще се използва за адрес на изпращача):', |
|
| 205 | + 'info_email_webmestre' => 'Електронен адрес на уеб-администратора (незадължителен)', # MODIF |
|
| 206 | + 'info_envoi_email_automatique' => 'Автоматично изпращане на съобщение', |
|
| 207 | + 'info_envoyer_maintenant' => 'Изпращане', |
|
| 208 | + 'info_etape_suivante' => 'Преминете към следващата стъпка', |
|
| 209 | + 'info_etape_suivante_1' => 'Можете да преминете към следващата стъпка.', |
|
| 210 | + 'info_etape_suivante_2' => 'Можете да преминете към следващата стъпка.', |
|
| 211 | + 'info_exportation_base' => 'експортиране на базата данни в @archive@', |
|
| 212 | + 'info_facilite_suivi_activite' => 'За улесняване по-нататъшните действия на редакторите, |
|
| 213 | 213 | СПИП изпраща по електронна поща съобщение с молбите за публикуване и одобрените статии до |
| 214 | 214 | някой пощенски списък |
| 215 | 215 | на редактори, например. |
| 216 | 216 | ', |
| 217 | - 'info_fichiers_authent' => 'Файл за удостоверяване автентичността: .htpasswd', |
|
| 218 | - 'info_forums_abo_invites' => 'Сайтът Ви съдържа форуми посредством предварителен абонамент; посетителите могат да се регистират за тях през публичния сайт.', |
|
| 219 | - 'info_gauche_admin_tech' => '<b>Само администратори имат достъп до тази страница.</b><p> Тя осигурява достъп до различни |
|
| 217 | + 'info_fichiers_authent' => 'Файл за удостоверяване автентичността: .htpasswd', |
|
| 218 | + 'info_forums_abo_invites' => 'Сайтът Ви съдържа форуми посредством предварителен абонамент; посетителите могат да се регистират за тях през публичния сайт.', |
|
| 219 | + 'info_gauche_admin_tech' => '<b>Само администратори имат достъп до тази страница.</b><p> Тя осигурява достъп до различни |
|
| 220 | 220 | технически задачи за поддръжка. Някои от тях позволяват специфичен процес на |
| 221 | 221 | идентификация и изискват FTP достъп до сайта.', # MODIF |
| 222 | - 'info_gauche_admin_vider' => '<b>Само администратори имат достъп до тази страница.</b><p> Тя осигурява достъп доразлични |
|
| 222 | + 'info_gauche_admin_vider' => '<b>Само администратори имат достъп до тази страница.</b><p> Тя осигурява достъп доразлични |
|
| 223 | 223 | технически задачи за поддръжка. Някои от тях позволяват специфичен процес на |
| 224 | 224 | идентификация и изискват FTP достъп до сайта.', # MODIF |
| 225 | - 'info_gauche_auteurs' => 'Тук ще намерите всички автори на сайта. |
|
| 225 | + 'info_gauche_auteurs' => 'Тук ще намерите всички автори на сайта. |
|
| 226 | 226 | Статусът на всеки от тях е обозначен с цвета на неговата икона (редактор - жълта; администратор - зелена).', |
| 227 | - 'info_gauche_auteurs_exterieurs' => 'Външни автори, без достъп до сайта, са обозначени със синя икона; изтритите автори - с кошче за боклук.', # MODIF |
|
| 228 | - 'info_gauche_messagerie' => 'Изпращането на съобщения позволява да се обменя информация между редакторите, да се съхраняват бележки (за лично ползване) или да се публикуват обяви в началната страница на личната зона (ако сте администратор).', |
|
| 229 | - 'info_gauche_statistiques_referers' => 'Тази страница показва списък с <i>препратки към сайтове</i>: т.е. сайтовете, съдържащи връзка към Вашия сайт, само за вчера и днес: този списък се акуализира на всеки 24 часа.', |
|
| 230 | - 'info_gauche_visiteurs_enregistres' => 'Тук ще намерите посетителите, регистрирани |
|
| 227 | + 'info_gauche_auteurs_exterieurs' => 'Външни автори, без достъп до сайта, са обозначени със синя икона; изтритите автори - с кошче за боклук.', # MODIF |
|
| 228 | + 'info_gauche_messagerie' => 'Изпращането на съобщения позволява да се обменя информация между редакторите, да се съхраняват бележки (за лично ползване) или да се публикуват обяви в началната страница на личната зона (ако сте администратор).', |
|
| 229 | + 'info_gauche_statistiques_referers' => 'Тази страница показва списък с <i>препратки към сайтове</i>: т.е. сайтовете, съдържащи връзка към Вашия сайт, само за вчера и днес: този списък се акуализира на всеки 24 часа.', |
|
| 230 | + 'info_gauche_visiteurs_enregistres' => 'Тук ще намерите посетителите, регистрирани |
|
| 231 | 231 | в публичната зона на сайта (форумите са с предварително записване).', |
| 232 | - 'info_generation_miniatures_images' => 'Генерирана на умалени образи на изображенията', |
|
| 233 | - 'info_hebergeur_desactiver_envoi_email' => 'Някои доставчици не позволяват изпращането на автоматични съобщения |
|
| 232 | + 'info_generation_miniatures_images' => 'Генерирана на умалени образи на изображенията', |
|
| 233 | + 'info_hebergeur_desactiver_envoi_email' => 'Някои доставчици не позволяват изпращането на автоматични съобщения |
|
| 234 | 234 | от техните сървъри. В този случай, следните свойства |
| 235 | 235 | на СПИП не работят:', |
| 236 | - 'info_hier' => 'вчера:', |
|
| 237 | - 'info_identification_publique' => 'Публична самоличност...', |
|
| 238 | - 'info_image_process' => 'Изберете най-удобният начин да създавате миниатюри, чрез натискане въру съответната картинка.', |
|
| 239 | - 'info_image_process2' => '<b>N.B.</b> <i>Ако не можете да видите никакво изображение, следователно сървърът Ви не е конфигуриран да използва такива инструменти. Ако искате да ползвате това свойство, трябва да се свържете с доставчика си и да поискате да ви инсталират разширения от типа "GD" или "Imagick"</i>', # MODIF |
|
| 240 | - 'info_images_auto' => 'Автоматично изчислени изображения', |
|
| 241 | - 'info_informations_personnelles' => 'Стъпка пет: <b>Лични данни</b>', |
|
| 242 | - 'info_inscription_automatique' => 'Автоматична регистрация на нови редактори', |
|
| 243 | - 'info_jeu_caractere' => 'Кодировка на сайта', |
|
| 244 | - 'info_jours' => 'дни', |
|
| 245 | - 'info_laisser_champs_vides' => 'оставите празни полетата)', |
|
| 246 | - 'info_langues' => 'Езици на сайта', |
|
| 247 | - 'info_ldap_ok' => 'Инсталирана е аутентификация за LDAP.', |
|
| 248 | - 'info_lien_hypertexte' => 'Хипертекстова препратка:', |
|
| 249 | - 'info_liste_redacteurs_connectes' => 'Списък на свързаните редактори', |
|
| 250 | - 'info_login_existant' => 'Потребителското име вече съществува.', |
|
| 251 | - 'info_login_trop_court' => 'Потребителското име е твърде кратко.', |
|
| 252 | - 'info_maximum' => 'максимум:', |
|
| 253 | - 'info_meme_rubrique' => 'В същата рубрика', |
|
| 254 | - 'info_message_en_redaction' => 'Съобщения в процес на обработка', |
|
| 255 | - 'info_message_technique' => 'Техническо съобщение:', |
|
| 256 | - 'info_messagerie_interne' => 'Система за вътрешни съобщения', |
|
| 257 | - 'info_mise_a_niveau_base' => 'Актуализиране на базата данни SQL', |
|
| 258 | - 'info_mise_a_niveau_base_2' => '{{Предупреждение!}} Инсталираната версия на СПИП |
|
| 236 | + 'info_hier' => 'вчера:', |
|
| 237 | + 'info_identification_publique' => 'Публична самоличност...', |
|
| 238 | + 'info_image_process' => 'Изберете най-удобният начин да създавате миниатюри, чрез натискане въру съответната картинка.', |
|
| 239 | + 'info_image_process2' => '<b>N.B.</b> <i>Ако не можете да видите никакво изображение, следователно сървърът Ви не е конфигуриран да използва такива инструменти. Ако искате да ползвате това свойство, трябва да се свържете с доставчика си и да поискате да ви инсталират разширения от типа "GD" или "Imagick"</i>', # MODIF |
|
| 240 | + 'info_images_auto' => 'Автоматично изчислени изображения', |
|
| 241 | + 'info_informations_personnelles' => 'Стъпка пет: <b>Лични данни</b>', |
|
| 242 | + 'info_inscription_automatique' => 'Автоматична регистрация на нови редактори', |
|
| 243 | + 'info_jeu_caractere' => 'Кодировка на сайта', |
|
| 244 | + 'info_jours' => 'дни', |
|
| 245 | + 'info_laisser_champs_vides' => 'оставите празни полетата)', |
|
| 246 | + 'info_langues' => 'Езици на сайта', |
|
| 247 | + 'info_ldap_ok' => 'Инсталирана е аутентификация за LDAP.', |
|
| 248 | + 'info_lien_hypertexte' => 'Хипертекстова препратка:', |
|
| 249 | + 'info_liste_redacteurs_connectes' => 'Списък на свързаните редактори', |
|
| 250 | + 'info_login_existant' => 'Потребителското име вече съществува.', |
|
| 251 | + 'info_login_trop_court' => 'Потребителското име е твърде кратко.', |
|
| 252 | + 'info_maximum' => 'максимум:', |
|
| 253 | + 'info_meme_rubrique' => 'В същата рубрика', |
|
| 254 | + 'info_message_en_redaction' => 'Съобщения в процес на обработка', |
|
| 255 | + 'info_message_technique' => 'Техническо съобщение:', |
|
| 256 | + 'info_messagerie_interne' => 'Система за вътрешни съобщения', |
|
| 257 | + 'info_mise_a_niveau_base' => 'Актуализиране на базата данни SQL', |
|
| 258 | + 'info_mise_a_niveau_base_2' => '{{Предупреждение!}} Инсталираната версия на СПИП |
|
| 259 | 259 | е по-стара от тази, показана на този сайт |
| 260 | 260 | Има риск за изгубване на данни, както и Вашият сайт да |
| 261 | 261 | спре да работи.<br />{{Преинсталирай |
| 262 | 262 | файловете на СПИП.}}', |
| 263 | - 'info_modifier_rubrique' => 'Промяна на настройките на рубриката:', |
|
| 264 | - 'info_modifier_titre' => 'Промяна: @titre@', |
|
| 265 | - 'info_mon_site_spip' => 'Моят сайт под СПИП', |
|
| 266 | - 'info_moyenne' => 'средно:', |
|
| 267 | - 'info_multi_cet_article' => 'Език на статията:', |
|
| 268 | - 'info_multi_langues_choisies' => 'Изберете по-долу езиците, които желаете да са активни за редакторите на сайта. |
|
| 263 | + 'info_modifier_rubrique' => 'Промяна на настройките на рубриката:', |
|
| 264 | + 'info_modifier_titre' => 'Промяна: @titre@', |
|
| 265 | + 'info_mon_site_spip' => 'Моят сайт под СПИП', |
|
| 266 | + 'info_moyenne' => 'средно:', |
|
| 267 | + 'info_multi_cet_article' => 'Език на статията:', |
|
| 268 | + 'info_multi_langues_choisies' => 'Изберете по-долу езиците, които желаете да са активни за редакторите на сайта. |
|
| 269 | 269 | Езиците, които вече са използвани в сайта (в началото на списъка) не могат да бъдат деактивирани.', |
| 270 | - 'info_multi_secteurs' => ' ... само за рубрики, намиращи се в схемата?', |
|
| 271 | - 'info_nom' => 'Име', |
|
| 272 | - 'info_nom_destinataire' => 'Име на получателя', |
|
| 273 | - 'info_nom_site' => 'Име на сайта Ви', |
|
| 274 | - 'info_nombre_articles' => '@nb_articles@ статии,', |
|
| 275 | - 'info_nombre_rubriques' => '@nb_rubriques@ рубрики,', |
|
| 276 | - 'info_nombre_sites' => '@nb_sites@ сайтове,', |
|
| 277 | - 'info_non_deplacer' => 'Не правете нищо...', |
|
| 278 | - 'info_non_envoi_annonce_dernieres_nouveautes' => 'СПИП може да изпраща регулярно информация за новостите на сайта. |
|
| 270 | + 'info_multi_secteurs' => ' ... само за рубрики, намиращи се в схемата?', |
|
| 271 | + 'info_nom' => 'Име', |
|
| 272 | + 'info_nom_destinataire' => 'Име на получателя', |
|
| 273 | + 'info_nom_site' => 'Име на сайта Ви', |
|
| 274 | + 'info_nombre_articles' => '@nb_articles@ статии,', |
|
| 275 | + 'info_nombre_rubriques' => '@nb_rubriques@ рубрики,', |
|
| 276 | + 'info_nombre_sites' => '@nb_sites@ сайтове,', |
|
| 277 | + 'info_non_deplacer' => 'Не правете нищо...', |
|
| 278 | + 'info_non_envoi_annonce_dernieres_nouveautes' => 'СПИП може да изпраща регулярно информация за новостите на сайта. |
|
| 279 | 279 | (напр. съобщения за наскоро публикуваните статии и новини).', |
| 280 | - 'info_non_envoi_liste_nouveautes' => 'Бе изпращане на списък с най-новите съобщения', |
|
| 281 | - 'info_non_modifiable' => 'промяната е невъзможна', |
|
| 282 | - 'info_non_suppression_mot_cle' => 'Отказ от изтриване на ключовата дума.', |
|
| 283 | - 'info_notes' => 'Бележки под линия', |
|
| 284 | - 'info_nouvel_article' => 'Нова статия', |
|
| 285 | - 'info_nouvelle_traduction' => 'Нов превод:', |
|
| 286 | - 'info_numero_article' => 'НОМЕР НА СТАТИЯТА:', |
|
| 287 | - 'info_obligatoire_02' => '[Задължително]', # MODIF |
|
| 288 | - 'info_option_accepter_visiteurs' => 'Позволяване регистрацията на посетители от публичния сайт', |
|
| 289 | - 'info_option_ne_pas_accepter_visiteurs' => 'Отказ за регистрация на посетител', |
|
| 290 | - 'info_options_avancees' => 'ПОДРОБНИ ОПЦИИ', |
|
| 291 | - 'info_ou' => 'или ...', |
|
| 292 | - 'info_page_interdite' => 'Забранена страница', |
|
| 293 | - 'info_par_nombre_article' => '(по номер на статията)', |
|
| 294 | - 'info_passe_trop_court' => 'Паролата не е достатъчно дълга.', |
|
| 295 | - 'info_passes_identiques' => 'Двете пароли не съвадат.', |
|
| 296 | - 'info_plus_cinq_car' => 'повече от 5 знака', |
|
| 297 | - 'info_plus_cinq_car_2' => '(повече от 5 знака)', |
|
| 298 | - 'info_plus_trois_car' => '(повече от 3 знака)', |
|
| 299 | - 'info_popularite' => 'популярност: @popularite@; посещения: @visites@', |
|
| 300 | - 'info_post_scriptum' => 'Постскриптум', |
|
| 301 | - 'info_post_scriptum_2' => 'Постскриптум:', |
|
| 302 | - 'info_pour' => 'за', |
|
| 303 | - 'info_preview_texte' => 'Възможно е да се прави предварителен преглед на сайта все едно, че всички статии и новини (които имат статус "изпратени") са вече публикувани. Да бъде ли даден достъп към тази функция на администраторите само, да бъде ли възможна за всички автори на сайта или да бъде изключена напълно?', # MODIF |
|
| 304 | - 'info_procedez_par_etape' => 'моля, продължете напред стъпка по стъпка', |
|
| 305 | - 'info_procedure_maj_version' => 'процедурата по обновяване трябва да се стартира, |
|
| 280 | + 'info_non_envoi_liste_nouveautes' => 'Бе изпращане на списък с най-новите съобщения', |
|
| 281 | + 'info_non_modifiable' => 'промяната е невъзможна', |
|
| 282 | + 'info_non_suppression_mot_cle' => 'Отказ от изтриване на ключовата дума.', |
|
| 283 | + 'info_notes' => 'Бележки под линия', |
|
| 284 | + 'info_nouvel_article' => 'Нова статия', |
|
| 285 | + 'info_nouvelle_traduction' => 'Нов превод:', |
|
| 286 | + 'info_numero_article' => 'НОМЕР НА СТАТИЯТА:', |
|
| 287 | + 'info_obligatoire_02' => '[Задължително]', # MODIF |
|
| 288 | + 'info_option_accepter_visiteurs' => 'Позволяване регистрацията на посетители от публичния сайт', |
|
| 289 | + 'info_option_ne_pas_accepter_visiteurs' => 'Отказ за регистрация на посетител', |
|
| 290 | + 'info_options_avancees' => 'ПОДРОБНИ ОПЦИИ', |
|
| 291 | + 'info_ou' => 'или ...', |
|
| 292 | + 'info_page_interdite' => 'Забранена страница', |
|
| 293 | + 'info_par_nombre_article' => '(по номер на статията)', |
|
| 294 | + 'info_passe_trop_court' => 'Паролата не е достатъчно дълга.', |
|
| 295 | + 'info_passes_identiques' => 'Двете пароли не съвадат.', |
|
| 296 | + 'info_plus_cinq_car' => 'повече от 5 знака', |
|
| 297 | + 'info_plus_cinq_car_2' => '(повече от 5 знака)', |
|
| 298 | + 'info_plus_trois_car' => '(повече от 3 знака)', |
|
| 299 | + 'info_popularite' => 'популярност: @popularite@; посещения: @visites@', |
|
| 300 | + 'info_post_scriptum' => 'Постскриптум', |
|
| 301 | + 'info_post_scriptum_2' => 'Постскриптум:', |
|
| 302 | + 'info_pour' => 'за', |
|
| 303 | + 'info_preview_texte' => 'Възможно е да се прави предварителен преглед на сайта все едно, че всички статии и новини (които имат статус "изпратени") са вече публикувани. Да бъде ли даден достъп към тази функция на администраторите само, да бъде ли възможна за всички автори на сайта или да бъде изключена напълно?', # MODIF |
|
| 304 | + 'info_procedez_par_etape' => 'моля, продължете напред стъпка по стъпка', |
|
| 305 | + 'info_procedure_maj_version' => 'процедурата по обновяване трябва да се стартира, |
|
| 306 | 306 | за да може базата данни да се адаптира към новата версия на СПИП.', |
| 307 | - 'info_ps' => 'П.С. ', |
|
| 308 | - 'info_publier' => 'публикуване', |
|
| 309 | - 'info_publies' => 'Вашите публикувани статии', |
|
| 310 | - 'info_question_accepter_visiteurs' => 'Ако шаблоните на сайта Ви позволяват посетителите да се регистират без да влизат в личната зона, активирайте следната опция:', |
|
| 311 | - 'info_question_inscription_nouveaux_redacteurs' => 'Позволявате ли регистрацията на нови редактори от |
|
| 307 | + 'info_ps' => 'П.С. ', |
|
| 308 | + 'info_publier' => 'публикуване', |
|
| 309 | + 'info_publies' => 'Вашите публикувани статии', |
|
| 310 | + 'info_question_accepter_visiteurs' => 'Ако шаблоните на сайта Ви позволяват посетителите да се регистират без да влизат в личната зона, активирайте следната опция:', |
|
| 311 | + 'info_question_inscription_nouveaux_redacteurs' => 'Позволявате ли регистрацията на нови редактори от |
|
| 312 | 312 | публикувания сайт. Ако сте съгласни, посетителите трябва да се |
| 313 | 313 | регистрират през автоматичната форма, за да имат достъп до личната зона и |
| 314 | 314 | да предложат свои собствени статии. <blockquote><i>По време на регистрацията |
@@ -317,208 +317,208 @@ discard block |
||
| 317 | 317 | доставчици спират съобщения, изпратени |
| 318 | 318 | до техни сървъри: в този случай автоматичната регистрация |
| 319 | 319 | не би могла да се осъществи.', # MODIF |
| 320 | - 'info_qui_edite' => '@nom_auteur_modif@ a travaillé sur ce contenu il y a @date_diff@ minutes', # MODIF |
|
| 321 | - 'info_racine_site' => 'Схема на сайта', |
|
| 322 | - 'info_recharger_page' => 'Моля, презаредете страницата след малко.', |
|
| 323 | - 'info_recherche_auteur_zero' => 'Няма намерени резултати за @cherche_auteur@.', |
|
| 324 | - 'info_recommencer' => 'Моля, опитайте отново.', |
|
| 325 | - 'info_redacteur_1' => 'Редактор', |
|
| 326 | - 'info_redacteur_2' => 'достъп до личната зона(<i>препоръчително</i>)', |
|
| 327 | - 'info_redacteurs' => 'Редактори', |
|
| 328 | - 'info_redaction_en_cours' => 'В ХОД Е ПИСАНЕ', |
|
| 329 | - 'info_redirection' => 'Пренасочване', |
|
| 330 | - 'info_refuses' => 'Вашите отхвърлени статии', |
|
| 331 | - 'info_reglage_ldap' => 'Опции: <b>Приспособяване на вписването чрез LDAP</b>', |
|
| 332 | - 'info_renvoi_article' => '<b>Пренасочване.</b> Статията се отнася към страница:', |
|
| 333 | - 'info_reserve_admin' => 'Този адрес може да се променя само от администратори.', |
|
| 334 | - 'info_restreindre_rubrique' => 'Забрана за управление на рубриката:', |
|
| 335 | - 'info_resultat_recherche' => 'Намерени резултати:', |
|
| 336 | - 'info_rubriques' => 'Рубрики', |
|
| 337 | - 'info_rubriques_02' => 'рубрики', |
|
| 338 | - 'info_rubriques_trouvees' => 'Намерени рубрики', |
|
| 339 | - 'info_sans_titre' => 'Без заглавие', |
|
| 340 | - 'info_selection_chemin_acces' => '<b>Изберете</b> по-долу път за достъп в директорията:', |
|
| 341 | - 'info_signatures' => 'подписи', |
|
| 342 | - 'info_site' => 'Сайт', |
|
| 343 | - 'info_site_2' => 'сайт:', |
|
| 344 | - 'info_site_min' => 'сайт', |
|
| 345 | - 'info_site_reference_2' => 'Свързан сайт', |
|
| 346 | - 'info_site_web' => 'ИНТЕРНЕТ САЙТ:', # MODIF |
|
| 347 | - 'info_sites' => 'сайтове', |
|
| 348 | - 'info_sites_lies_mot' => 'Свързани сайтове, асоциирани с ключовата дума', |
|
| 349 | - 'info_sites_proxy' => 'Използване на прокси', |
|
| 350 | - 'info_sites_trouves' => 'Намерени сайтове', |
|
| 351 | - 'info_sous_titre' => 'Подзаглавие:', |
|
| 352 | - 'info_statut_administrateur' => 'Администратор', |
|
| 353 | - 'info_statut_auteur' => 'Статус на автора:', # MODIF |
|
| 354 | - 'info_statut_auteur_a_confirmer' => 'Регистрация, предстояща за потвърждение', |
|
| 355 | - 'info_statut_auteur_autre' => 'Друг статус:', |
|
| 356 | - 'info_statut_redacteur' => 'Редактор', |
|
| 357 | - 'info_statut_utilisateurs_1' => 'Статус "по подразбиране" на вписаните потребители', |
|
| 358 | - 'info_statut_utilisateurs_2' => 'Изберете статус за хората, вписани в LDAP-директорията при свързването им за първи път. По-късно ще можете да променяте тази характеристика за всеки автор по отделно.', |
|
| 359 | - 'info_suivi_activite' => 'Дейности на редакторите', |
|
| 360 | - 'info_surtitre' => 'Челно заглавие:', |
|
| 361 | - 'info_syndication_integrale_1' => 'Сайтът Ви предлага файлове за обединение (вж <a href="@url@">@titre@</a>).', |
|
| 362 | - 'info_syndication_integrale_2' => 'Желаете ли да изпратите цели статии или само резюме от няколко стотин знака?', |
|
| 363 | - 'info_taille_maximale_vignette' => 'Максимален размер на винетките, който е генериран от системата:', |
|
| 364 | - 'info_terminer_installation' => 'Сега можете да приключите с процеса по стандартна инсталация.', |
|
| 365 | - 'info_texte' => 'Текст', |
|
| 366 | - 'info_texte_explicatif' => 'Обяснителен текст', |
|
| 367 | - 'info_texte_long' => '(текстът е прекалено дълъг: той ще се появи в няколко части, които ще бъдат събрани след одобрението.)', |
|
| 368 | - 'info_texte_message' => 'Текст на съобщението:', # MODIF |
|
| 369 | - 'info_texte_message_02' => 'Текст на съобщение', |
|
| 370 | - 'info_titre' => 'Заглавие:', |
|
| 371 | - 'info_total' => 'общо:', |
|
| 372 | - 'info_tous_articles_en_redaction' => 'Всички статии в процес на обработка', |
|
| 373 | - 'info_tous_articles_presents' => 'Всички статии в рубриката', |
|
| 374 | - 'info_tous_les' => 'всички:', |
|
| 375 | - 'info_tout_site' => 'Целият сайт', |
|
| 376 | - 'info_tout_site2' => 'Статията не е преведена на дадения език.', |
|
| 377 | - 'info_tout_site3' => 'Статията е преведена на дадения език, но след това са направени промени в основната статия. Преводът изисква актуализация.', |
|
| 378 | - 'info_tout_site4' => 'Статията е преведена на дадения език, а преводът - актуализиран.', |
|
| 379 | - 'info_tout_site5' => 'Оригинална статия.', |
|
| 380 | - 'info_tout_site6' => '<b>Предупреждение:</b> показани са само оригинални статии. |
|
| 320 | + 'info_qui_edite' => '@nom_auteur_modif@ a travaillé sur ce contenu il y a @date_diff@ minutes', # MODIF |
|
| 321 | + 'info_racine_site' => 'Схема на сайта', |
|
| 322 | + 'info_recharger_page' => 'Моля, презаредете страницата след малко.', |
|
| 323 | + 'info_recherche_auteur_zero' => 'Няма намерени резултати за @cherche_auteur@.', |
|
| 324 | + 'info_recommencer' => 'Моля, опитайте отново.', |
|
| 325 | + 'info_redacteur_1' => 'Редактор', |
|
| 326 | + 'info_redacteur_2' => 'достъп до личната зона(<i>препоръчително</i>)', |
|
| 327 | + 'info_redacteurs' => 'Редактори', |
|
| 328 | + 'info_redaction_en_cours' => 'В ХОД Е ПИСАНЕ', |
|
| 329 | + 'info_redirection' => 'Пренасочване', |
|
| 330 | + 'info_refuses' => 'Вашите отхвърлени статии', |
|
| 331 | + 'info_reglage_ldap' => 'Опции: <b>Приспособяване на вписването чрез LDAP</b>', |
|
| 332 | + 'info_renvoi_article' => '<b>Пренасочване.</b> Статията се отнася към страница:', |
|
| 333 | + 'info_reserve_admin' => 'Този адрес може да се променя само от администратори.', |
|
| 334 | + 'info_restreindre_rubrique' => 'Забрана за управление на рубриката:', |
|
| 335 | + 'info_resultat_recherche' => 'Намерени резултати:', |
|
| 336 | + 'info_rubriques' => 'Рубрики', |
|
| 337 | + 'info_rubriques_02' => 'рубрики', |
|
| 338 | + 'info_rubriques_trouvees' => 'Намерени рубрики', |
|
| 339 | + 'info_sans_titre' => 'Без заглавие', |
|
| 340 | + 'info_selection_chemin_acces' => '<b>Изберете</b> по-долу път за достъп в директорията:', |
|
| 341 | + 'info_signatures' => 'подписи', |
|
| 342 | + 'info_site' => 'Сайт', |
|
| 343 | + 'info_site_2' => 'сайт:', |
|
| 344 | + 'info_site_min' => 'сайт', |
|
| 345 | + 'info_site_reference_2' => 'Свързан сайт', |
|
| 346 | + 'info_site_web' => 'ИНТЕРНЕТ САЙТ:', # MODIF |
|
| 347 | + 'info_sites' => 'сайтове', |
|
| 348 | + 'info_sites_lies_mot' => 'Свързани сайтове, асоциирани с ключовата дума', |
|
| 349 | + 'info_sites_proxy' => 'Използване на прокси', |
|
| 350 | + 'info_sites_trouves' => 'Намерени сайтове', |
|
| 351 | + 'info_sous_titre' => 'Подзаглавие:', |
|
| 352 | + 'info_statut_administrateur' => 'Администратор', |
|
| 353 | + 'info_statut_auteur' => 'Статус на автора:', # MODIF |
|
| 354 | + 'info_statut_auteur_a_confirmer' => 'Регистрация, предстояща за потвърждение', |
|
| 355 | + 'info_statut_auteur_autre' => 'Друг статус:', |
|
| 356 | + 'info_statut_redacteur' => 'Редактор', |
|
| 357 | + 'info_statut_utilisateurs_1' => 'Статус "по подразбиране" на вписаните потребители', |
|
| 358 | + 'info_statut_utilisateurs_2' => 'Изберете статус за хората, вписани в LDAP-директорията при свързването им за първи път. По-късно ще можете да променяте тази характеристика за всеки автор по отделно.', |
|
| 359 | + 'info_suivi_activite' => 'Дейности на редакторите', |
|
| 360 | + 'info_surtitre' => 'Челно заглавие:', |
|
| 361 | + 'info_syndication_integrale_1' => 'Сайтът Ви предлага файлове за обединение (вж <a href="@url@">@titre@</a>).', |
|
| 362 | + 'info_syndication_integrale_2' => 'Желаете ли да изпратите цели статии или само резюме от няколко стотин знака?', |
|
| 363 | + 'info_taille_maximale_vignette' => 'Максимален размер на винетките, който е генериран от системата:', |
|
| 364 | + 'info_terminer_installation' => 'Сега можете да приключите с процеса по стандартна инсталация.', |
|
| 365 | + 'info_texte' => 'Текст', |
|
| 366 | + 'info_texte_explicatif' => 'Обяснителен текст', |
|
| 367 | + 'info_texte_long' => '(текстът е прекалено дълъг: той ще се появи в няколко части, които ще бъдат събрани след одобрението.)', |
|
| 368 | + 'info_texte_message' => 'Текст на съобщението:', # MODIF |
|
| 369 | + 'info_texte_message_02' => 'Текст на съобщение', |
|
| 370 | + 'info_titre' => 'Заглавие:', |
|
| 371 | + 'info_total' => 'общо:', |
|
| 372 | + 'info_tous_articles_en_redaction' => 'Всички статии в процес на обработка', |
|
| 373 | + 'info_tous_articles_presents' => 'Всички статии в рубриката', |
|
| 374 | + 'info_tous_les' => 'всички:', |
|
| 375 | + 'info_tout_site' => 'Целият сайт', |
|
| 376 | + 'info_tout_site2' => 'Статията не е преведена на дадения език.', |
|
| 377 | + 'info_tout_site3' => 'Статията е преведена на дадения език, но след това са направени промени в основната статия. Преводът изисква актуализация.', |
|
| 378 | + 'info_tout_site4' => 'Статията е преведена на дадения език, а преводът - актуализиран.', |
|
| 379 | + 'info_tout_site5' => 'Оригинална статия.', |
|
| 380 | + 'info_tout_site6' => '<b>Предупреждение:</b> показани са само оригинални статии. |
|
| 381 | 381 | Преводите са свързани с оригинала в цвят, посочващ техния статус:', |
| 382 | - 'info_traductions' => 'Преводи', |
|
| 383 | - 'info_travail_colaboratif' => 'Съвместна работа по статии', |
|
| 384 | - 'info_un_article' => 'една статия,', |
|
| 385 | - 'info_un_site' => 'сайт,', |
|
| 386 | - 'info_une_rubrique' => 'рубрика,', |
|
| 387 | - 'info_une_rubrique_02' => '1 рубрика', |
|
| 388 | - 'info_url' => 'URL:', |
|
| 389 | - 'info_urlref' => 'Препратка в хипертекст:', |
|
| 390 | - 'info_utilisation_spip' => 'СПИП вече е готов за използване.', |
|
| 391 | - 'info_visites_par_mois' => 'Месечен дисплей:', |
|
| 392 | - 'info_visiteur_1' => 'Посетител', |
|
| 393 | - 'info_visiteur_2' => 'публичен сайт', |
|
| 394 | - 'info_visiteurs' => 'Посетители', |
|
| 395 | - 'info_visiteurs_02' => 'Посетители на публичния сайт', |
|
| 396 | - 'install_echec_annonce' => 'Инсталацията Ви вероятно няма да проработи или сайтът, който правите ще даде лош резултат...', |
|
| 397 | - 'install_extension_mbstring' => 'СПИП не работи с:', |
|
| 398 | - 'install_extension_php_obligatoire' => 'СПИП изисква разширение от типа php:', |
|
| 399 | - 'install_select_langue' => 'Изберете език и след това натиснете бутон по-нататък, за да стартирате процедурата по инсталацията.', |
|
| 400 | - 'intem_redacteur' => 'редактор', |
|
| 401 | - 'item_accepter_inscriptions' => 'Позволяване на регистрации', |
|
| 402 | - 'item_activer_messages_avertissement' => 'Активиране на предупредителни съобщения', |
|
| 403 | - 'item_administrateur_2' => 'администратор', |
|
| 404 | - 'item_afficher_calendrier' => 'Показване в календара', |
|
| 405 | - 'item_autoriser_syndication_integrale' => 'Включване на цели статии във файловете за обединяване', |
|
| 406 | - 'item_choix_administrateurs' => 'администратори', |
|
| 407 | - 'item_choix_generation_miniature' => 'Автоматично генериране на умалени образи.', |
|
| 408 | - 'item_choix_non_generation_miniature' => 'Без генериране на умалени образи.', |
|
| 409 | - 'item_choix_redacteurs' => 'редактори', |
|
| 410 | - 'item_choix_visiteurs' => 'посетители на публичния сайт', |
|
| 411 | - 'item_creer_fichiers_authent' => 'Създаване на файлове от типа .htpasswd', |
|
| 412 | - 'item_login' => 'Потребителско име', |
|
| 413 | - 'item_mots_cles_association_articles' => 'статиите', |
|
| 414 | - 'item_mots_cles_association_rubriques' => 'рубриките', |
|
| 415 | - 'item_mots_cles_association_sites' => 'свързаните или обединени сайтове.', |
|
| 416 | - 'item_non' => 'Не', |
|
| 417 | - 'item_non_accepter_inscriptions' => 'Забрана на регистрации', |
|
| 418 | - 'item_non_activer_messages_avertissement' => 'Без предупредителни съобщения', |
|
| 419 | - 'item_non_afficher_calendrier' => 'Без показване в календара', |
|
| 420 | - 'item_non_autoriser_syndication_integrale' => 'Изпращане на резюме', |
|
| 421 | - 'item_non_creer_fichiers_authent' => 'Забрана за създаване на файловете', |
|
| 422 | - 'item_non_publier_articles' => 'Забраняване публикуването на статии преди техните дати на публикуване.', |
|
| 423 | - 'item_nouvel_auteur' => 'Нов автор', |
|
| 424 | - 'item_nouvelle_rubrique' => 'Нова рубрика', |
|
| 425 | - 'item_oui' => 'Да', |
|
| 426 | - 'item_publier_articles' => 'Публикуване на статиите независимо от техните дати на публикуване.', |
|
| 427 | - 'item_reponse_article' => 'Отговор на статията', |
|
| 428 | - 'item_visiteur' => 'посетител', |
|
| 382 | + 'info_traductions' => 'Преводи', |
|
| 383 | + 'info_travail_colaboratif' => 'Съвместна работа по статии', |
|
| 384 | + 'info_un_article' => 'една статия,', |
|
| 385 | + 'info_un_site' => 'сайт,', |
|
| 386 | + 'info_une_rubrique' => 'рубрика,', |
|
| 387 | + 'info_une_rubrique_02' => '1 рубрика', |
|
| 388 | + 'info_url' => 'URL:', |
|
| 389 | + 'info_urlref' => 'Препратка в хипертекст:', |
|
| 390 | + 'info_utilisation_spip' => 'СПИП вече е готов за използване.', |
|
| 391 | + 'info_visites_par_mois' => 'Месечен дисплей:', |
|
| 392 | + 'info_visiteur_1' => 'Посетител', |
|
| 393 | + 'info_visiteur_2' => 'публичен сайт', |
|
| 394 | + 'info_visiteurs' => 'Посетители', |
|
| 395 | + 'info_visiteurs_02' => 'Посетители на публичния сайт', |
|
| 396 | + 'install_echec_annonce' => 'Инсталацията Ви вероятно няма да проработи или сайтът, който правите ще даде лош резултат...', |
|
| 397 | + 'install_extension_mbstring' => 'СПИП не работи с:', |
|
| 398 | + 'install_extension_php_obligatoire' => 'СПИП изисква разширение от типа php:', |
|
| 399 | + 'install_select_langue' => 'Изберете език и след това натиснете бутон по-нататък, за да стартирате процедурата по инсталацията.', |
|
| 400 | + 'intem_redacteur' => 'редактор', |
|
| 401 | + 'item_accepter_inscriptions' => 'Позволяване на регистрации', |
|
| 402 | + 'item_activer_messages_avertissement' => 'Активиране на предупредителни съобщения', |
|
| 403 | + 'item_administrateur_2' => 'администратор', |
|
| 404 | + 'item_afficher_calendrier' => 'Показване в календара', |
|
| 405 | + 'item_autoriser_syndication_integrale' => 'Включване на цели статии във файловете за обединяване', |
|
| 406 | + 'item_choix_administrateurs' => 'администратори', |
|
| 407 | + 'item_choix_generation_miniature' => 'Автоматично генериране на умалени образи.', |
|
| 408 | + 'item_choix_non_generation_miniature' => 'Без генериране на умалени образи.', |
|
| 409 | + 'item_choix_redacteurs' => 'редактори', |
|
| 410 | + 'item_choix_visiteurs' => 'посетители на публичния сайт', |
|
| 411 | + 'item_creer_fichiers_authent' => 'Създаване на файлове от типа .htpasswd', |
|
| 412 | + 'item_login' => 'Потребителско име', |
|
| 413 | + 'item_mots_cles_association_articles' => 'статиите', |
|
| 414 | + 'item_mots_cles_association_rubriques' => 'рубриките', |
|
| 415 | + 'item_mots_cles_association_sites' => 'свързаните или обединени сайтове.', |
|
| 416 | + 'item_non' => 'Не', |
|
| 417 | + 'item_non_accepter_inscriptions' => 'Забрана на регистрации', |
|
| 418 | + 'item_non_activer_messages_avertissement' => 'Без предупредителни съобщения', |
|
| 419 | + 'item_non_afficher_calendrier' => 'Без показване в календара', |
|
| 420 | + 'item_non_autoriser_syndication_integrale' => 'Изпращане на резюме', |
|
| 421 | + 'item_non_creer_fichiers_authent' => 'Забрана за създаване на файловете', |
|
| 422 | + 'item_non_publier_articles' => 'Забраняване публикуването на статии преди техните дати на публикуване.', |
|
| 423 | + 'item_nouvel_auteur' => 'Нов автор', |
|
| 424 | + 'item_nouvelle_rubrique' => 'Нова рубрика', |
|
| 425 | + 'item_oui' => 'Да', |
|
| 426 | + 'item_publier_articles' => 'Публикуване на статиите независимо от техните дати на публикуване.', |
|
| 427 | + 'item_reponse_article' => 'Отговор на статията', |
|
| 428 | + 'item_visiteur' => 'посетител', |
|
| 429 | 429 | |
| 430 | - // J |
|
| 431 | - 'jour_non_connu_nc' => 'непознат', |
|
| 430 | + // J |
|
| 431 | + 'jour_non_connu_nc' => 'непознат', |
|
| 432 | 432 | |
| 433 | - // L |
|
| 434 | - 'lien_ajouter_auteur' => 'Добавяне на автора', |
|
| 435 | - 'lien_email' => 'Електронен адрес', |
|
| 436 | - 'lien_nom_site' => 'ИМЕ НА САЙТА:', |
|
| 437 | - 'lien_retirer_auteur' => 'Премахване на автор', |
|
| 438 | - 'lien_site' => 'сайт', |
|
| 439 | - 'lien_tout_deplier' => 'Разширяване на всички', |
|
| 440 | - 'lien_tout_replier' => 'Разтваряне на всички', |
|
| 441 | - 'lien_trier_nom' => 'Подреждане по име', |
|
| 442 | - 'lien_trier_nombre_articles' => 'Подреждане по номер на статията', |
|
| 443 | - 'lien_trier_statut' => 'Подреждане по статус', |
|
| 444 | - 'lien_voir_en_ligne' => 'ИЗГЛЕД НА САЙТА:', |
|
| 445 | - 'logo_article' => 'ЛОГО НА СТАТИЯТА', # MODIF |
|
| 446 | - 'logo_auteur' => 'ЛОГО НА АВТОРА', # MODIF |
|
| 447 | - 'logo_rubrique' => 'ЛОГО НА РУБРИКАТА', # MODIF |
|
| 448 | - 'logo_site' => 'ЛОГО НА САЙТА', # MODIF |
|
| 449 | - 'logo_standard_rubrique' => 'СТАНДАРТНО ЛОГО ЗА РУБРИКИ', # MODIF |
|
| 450 | - 'logo_survol' => 'АЛТЕРНАТИВНО ЛОГО', # MODIF |
|
| 433 | + // L |
|
| 434 | + 'lien_ajouter_auteur' => 'Добавяне на автора', |
|
| 435 | + 'lien_email' => 'Електронен адрес', |
|
| 436 | + 'lien_nom_site' => 'ИМЕ НА САЙТА:', |
|
| 437 | + 'lien_retirer_auteur' => 'Премахване на автор', |
|
| 438 | + 'lien_site' => 'сайт', |
|
| 439 | + 'lien_tout_deplier' => 'Разширяване на всички', |
|
| 440 | + 'lien_tout_replier' => 'Разтваряне на всички', |
|
| 441 | + 'lien_trier_nom' => 'Подреждане по име', |
|
| 442 | + 'lien_trier_nombre_articles' => 'Подреждане по номер на статията', |
|
| 443 | + 'lien_trier_statut' => 'Подреждане по статус', |
|
| 444 | + 'lien_voir_en_ligne' => 'ИЗГЛЕД НА САЙТА:', |
|
| 445 | + 'logo_article' => 'ЛОГО НА СТАТИЯТА', # MODIF |
|
| 446 | + 'logo_auteur' => 'ЛОГО НА АВТОРА', # MODIF |
|
| 447 | + 'logo_rubrique' => 'ЛОГО НА РУБРИКАТА', # MODIF |
|
| 448 | + 'logo_site' => 'ЛОГО НА САЙТА', # MODIF |
|
| 449 | + 'logo_standard_rubrique' => 'СТАНДАРТНО ЛОГО ЗА РУБРИКИ', # MODIF |
|
| 450 | + 'logo_survol' => 'АЛТЕРНАТИВНО ЛОГО', # MODIF |
|
| 451 | 451 | |
| 452 | - // M |
|
| 453 | - 'menu_aide_installation_choix_base' => 'Избор на база данни', |
|
| 454 | - 'module_fichier_langue' => 'Езиков файл', |
|
| 455 | - 'module_raccourci' => 'Кратка команда', |
|
| 456 | - 'module_texte_affiche' => 'Показан текст', |
|
| 457 | - 'module_texte_explicatif' => 'Можете да впишете следните кратки команди в шаблоните на сайта си. Те ще бъдат автоматично преведени на различни езици, за които има езиков файл.', |
|
| 458 | - 'module_texte_traduction' => 'Езиковият файл ,, @module@ ’’ е достъпен на:', |
|
| 459 | - 'mois_non_connu' => 'непознат', |
|
| 452 | + // M |
|
| 453 | + 'menu_aide_installation_choix_base' => 'Избор на база данни', |
|
| 454 | + 'module_fichier_langue' => 'Езиков файл', |
|
| 455 | + 'module_raccourci' => 'Кратка команда', |
|
| 456 | + 'module_texte_affiche' => 'Показан текст', |
|
| 457 | + 'module_texte_explicatif' => 'Можете да впишете следните кратки команди в шаблоните на сайта си. Те ще бъдат автоматично преведени на различни езици, за които има езиков файл.', |
|
| 458 | + 'module_texte_traduction' => 'Езиковият файл ,, @module@ ’’ е достъпен на:', |
|
| 459 | + 'mois_non_connu' => 'непознат', |
|
| 460 | 460 | |
| 461 | - // O |
|
| 462 | - 'onglet_repartition_actuelle' => 'сега', |
|
| 461 | + // O |
|
| 462 | + 'onglet_repartition_actuelle' => 'сега', |
|
| 463 | 463 | |
| 464 | - // P |
|
| 465 | - 'plugin_etat_developpement' => 'в развитие', |
|
| 466 | - 'plugin_etat_experimental' => 'експериментален', |
|
| 467 | - 'plugin_etat_stable' => 'стабилен', |
|
| 468 | - 'plugin_etat_test' => 'в процес на тестване', |
|
| 469 | - 'plugins_liste' => 'Списък с плъгини', |
|
| 464 | + // P |
|
| 465 | + 'plugin_etat_developpement' => 'в развитие', |
|
| 466 | + 'plugin_etat_experimental' => 'експериментален', |
|
| 467 | + 'plugin_etat_stable' => 'стабилен', |
|
| 468 | + 'plugin_etat_test' => 'в процес на тестване', |
|
| 469 | + 'plugins_liste' => 'Списък с плъгини', |
|
| 470 | 470 | |
| 471 | - // R |
|
| 472 | - 'repertoire_plugins' => 'Директория:', |
|
| 473 | - 'required' => '[Задължително]', # MODIF |
|
| 471 | + // R |
|
| 472 | + 'repertoire_plugins' => 'Директория:', |
|
| 473 | + 'required' => '[Задължително]', # MODIF |
|
| 474 | 474 | |
| 475 | - // S |
|
| 476 | - 'statut_admin_restreint' => '(ограничен администратор)', # MODIF |
|
| 475 | + // S |
|
| 476 | + 'statut_admin_restreint' => '(ограничен администратор)', # MODIF |
|
| 477 | 477 | |
| 478 | - // T |
|
| 479 | - 'taille_cache_image' => 'Изображенията, изчислени автоматично от СПИП (умалени изображения, заглавия, преобразени в графики, математически формули в TeX формат и др.) заемат общо @taille@ в директорията @dir@.', |
|
| 480 | - 'taille_cache_infinie' => 'Този сайт няма фиксиран лимит за размера на <code>CACHE/</code> директорията.', |
|
| 481 | - 'taille_cache_maxi' => 'СПИП се опитва да намали размера на данните в <code>CACHE/</code> директорията до около <b>@octets@</b>.', |
|
| 482 | - 'taille_cache_octets' => 'Размерът на кеш-паметта в момента е @octets@.', # MODIF |
|
| 483 | - 'taille_cache_vide' => 'Кеш-паметта е празна.', |
|
| 484 | - 'taille_repertoire_cache' => 'Размер на кеш-паметта в момента', |
|
| 485 | - 'text_article_propose_publication' => 'Изпратена е статия със заявка за публикуване. Не се колебайте да дадете мнението си за нея във форума, който е прикрепен към нея (най-долу на страницата).', # MODIF |
|
| 486 | - 'texte_acces_ldap_anonyme_1' => 'Някои LDAP-сървъри не позволяват анонимен достъп. В такива случаи, за да можете да правите справка в директорията, трябва да използвате началното си потребителско име за достъп. Въпреки това, в повечето случаи можете да оставяте следните полета празни. ', |
|
| 487 | - 'texte_admin_effacer_01' => 'Тази команда изтрива <i>цялото</i> съдържание в базата данни, |
|
| 478 | + // T |
|
| 479 | + 'taille_cache_image' => 'Изображенията, изчислени автоматично от СПИП (умалени изображения, заглавия, преобразени в графики, математически формули в TeX формат и др.) заемат общо @taille@ в директорията @dir@.', |
|
| 480 | + 'taille_cache_infinie' => 'Този сайт няма фиксиран лимит за размера на <code>CACHE/</code> директорията.', |
|
| 481 | + 'taille_cache_maxi' => 'СПИП се опитва да намали размера на данните в <code>CACHE/</code> директорията до около <b>@octets@</b>.', |
|
| 482 | + 'taille_cache_octets' => 'Размерът на кеш-паметта в момента е @octets@.', # MODIF |
|
| 483 | + 'taille_cache_vide' => 'Кеш-паметта е празна.', |
|
| 484 | + 'taille_repertoire_cache' => 'Размер на кеш-паметта в момента', |
|
| 485 | + 'text_article_propose_publication' => 'Изпратена е статия със заявка за публикуване. Не се колебайте да дадете мнението си за нея във форума, който е прикрепен към нея (най-долу на страницата).', # MODIF |
|
| 486 | + 'texte_acces_ldap_anonyme_1' => 'Някои LDAP-сървъри не позволяват анонимен достъп. В такива случаи, за да можете да правите справка в директорията, трябва да използвате началното си потребителско име за достъп. Въпреки това, в повечето случаи можете да оставяте следните полета празни. ', |
|
| 487 | + 'texte_admin_effacer_01' => 'Тази команда изтрива <i>цялото</i> съдържание в базата данни, |
|
| 488 | 488 | включително <i>всички</i> параметри за достъп за редактори и администратори. След нейното изпълнение, трябва |
| 489 | 489 | да се преинсталира СПИП, за да се създаде нова база данни и първи администраторски достъп.', |
| 490 | - 'texte_adresse_annuaire_1' => '( Ако директорията Ви е инсталирана на същата машина, на която и Интернет сайта, вероятно е «localhost».)', |
|
| 491 | - 'texte_ajout_auteur' => 'Следният автор бе добавен към статията:', |
|
| 492 | - 'texte_annuaire_ldap_1' => 'Ако разполагате с достъп до (LDAP) директория, можете да я използвате, за да вписвате автоматично потребители в СПИП.', |
|
| 493 | - 'texte_article_statut' => 'Статията е:', |
|
| 494 | - 'texte_article_virtuel' => 'Виртуална статия', |
|
| 495 | - 'texte_article_virtuel_reference' => '<b>Виртуална статия:</b> свързана статия на Вашия СПИП сайт, която се пренасочва към друг URL адрес. За да премахнете пренасочването, изтрийте горепосочения URL.', |
|
| 496 | - 'texte_aucun_resultat_auteur' => 'Няма намерен разултат за @cherche_auteur@.', |
|
| 497 | - 'texte_auteur_messagerie' => 'Сайт може продължително да следи списъка от свързани редактори, което позволява изпращането та съобщения в реално време (ако съобщението е забранено по-горе, тогава целият списък от редактори е забранен). Вие можете да решите да не се появявате в този списък (т.е. да сте невидим за останалите потребители).', |
|
| 498 | - 'texte_auteurs' => 'АВТОРИТЕ', |
|
| 499 | - 'texte_choix_base_1' => 'Изберете база данни:', |
|
| 500 | - 'texte_choix_base_2' => 'Сървърът SQL съдържа няколко бази данни.', |
|
| 501 | - 'texte_choix_base_3' => '<b>Изберете</b> по-долу това, което доставчикът Ви e разрешил:', |
|
| 502 | - 'texte_compte_element' => '@count@ елемент', |
|
| 503 | - 'texte_compte_elements' => '@count@ елементи', |
|
| 504 | - 'texte_connexion_mysql' => 'Погледнете информацията, предоставена от доставчика Ви: ако доставчикът ви поддържа SQL, трябва да са дадени кодовете за връзка със сървъра SQL.', # MODIF |
|
| 505 | - 'texte_contenu_article' => '(Съдържание на статията с няколко думи.)', |
|
| 506 | - 'texte_contenu_articles' => 'Въз основа на оформлението на сайта Ви, може да решите |
|
| 490 | + 'texte_adresse_annuaire_1' => '( Ако директорията Ви е инсталирана на същата машина, на която и Интернет сайта, вероятно е «localhost».)', |
|
| 491 | + 'texte_ajout_auteur' => 'Следният автор бе добавен към статията:', |
|
| 492 | + 'texte_annuaire_ldap_1' => 'Ако разполагате с достъп до (LDAP) директория, можете да я използвате, за да вписвате автоматично потребители в СПИП.', |
|
| 493 | + 'texte_article_statut' => 'Статията е:', |
|
| 494 | + 'texte_article_virtuel' => 'Виртуална статия', |
|
| 495 | + 'texte_article_virtuel_reference' => '<b>Виртуална статия:</b> свързана статия на Вашия СПИП сайт, която се пренасочва към друг URL адрес. За да премахнете пренасочването, изтрийте горепосочения URL.', |
|
| 496 | + 'texte_aucun_resultat_auteur' => 'Няма намерен разултат за @cherche_auteur@.', |
|
| 497 | + 'texte_auteur_messagerie' => 'Сайт може продължително да следи списъка от свързани редактори, което позволява изпращането та съобщения в реално време (ако съобщението е забранено по-горе, тогава целият списък от редактори е забранен). Вие можете да решите да не се появявате в този списък (т.е. да сте невидим за останалите потребители).', |
|
| 498 | + 'texte_auteurs' => 'АВТОРИТЕ', |
|
| 499 | + 'texte_choix_base_1' => 'Изберете база данни:', |
|
| 500 | + 'texte_choix_base_2' => 'Сървърът SQL съдържа няколко бази данни.', |
|
| 501 | + 'texte_choix_base_3' => '<b>Изберете</b> по-долу това, което доставчикът Ви e разрешил:', |
|
| 502 | + 'texte_compte_element' => '@count@ елемент', |
|
| 503 | + 'texte_compte_elements' => '@count@ елементи', |
|
| 504 | + 'texte_connexion_mysql' => 'Погледнете информацията, предоставена от доставчика Ви: ако доставчикът ви поддържа SQL, трябва да са дадени кодовете за връзка със сървъра SQL.', # MODIF |
|
| 505 | + 'texte_contenu_article' => '(Съдържание на статията с няколко думи.)', |
|
| 506 | + 'texte_contenu_articles' => 'Въз основа на оформлението на сайта Ви, може да решите |
|
| 507 | 507 | да не използвате някои елементи на статиите. |
| 508 | 508 | Използвайте този списък, за да изберете кои елементи искате да направите активни.', |
| 509 | - 'texte_crash_base' => 'Ако Вашата база данни |
|
| 509 | + 'texte_crash_base' => 'Ако Вашата база данни |
|
| 510 | 510 | блокира, можете да се опитате да я поправите |
| 511 | 511 | автоматично.', |
| 512 | - 'texte_creer_rubrique' => 'Преди да пишете статии,<br /> трябва да създадете рубрика.', |
|
| 513 | - 'texte_date_creation_article' => 'ДАТА НА СЪЗДАВАНЕ НА СТАТИЯТА:', |
|
| 514 | - 'texte_date_publication_anterieure' => 'Дата на предишно публикуване:', |
|
| 515 | - 'texte_date_publication_anterieure_nonaffichee' => 'Скриване датата на предишно публикуване.', |
|
| 516 | - 'texte_date_publication_article' => 'ДАТА НА ПУБЛИКУВАНЕ В ИНТЕРНЕТ:', |
|
| 517 | - 'texte_descriptif_rapide' => 'Кратко описание', |
|
| 518 | - 'texte_effacer_base' => 'Изтриване на базата данни СПИП', |
|
| 519 | - 'texte_en_cours_validation' => 'Изпратени са следните статии със заявка за публикуване. Не се колебайте да дадете мнението си за тях във форума, който е прикрепен към тях. ', # MODIF |
|
| 520 | - 'texte_enrichir_mise_a_jour' => 'Можете да обогатите външния вид на текста като използвате «Типографски кратки команди».', |
|
| 521 | - 'texte_fichier_authent' => '<b>Да създаде ли СПИП специални <tt>.htpasswd</tt> |
|
| 512 | + 'texte_creer_rubrique' => 'Преди да пишете статии,<br /> трябва да създадете рубрика.', |
|
| 513 | + 'texte_date_creation_article' => 'ДАТА НА СЪЗДАВАНЕ НА СТАТИЯТА:', |
|
| 514 | + 'texte_date_publication_anterieure' => 'Дата на предишно публикуване:', |
|
| 515 | + 'texte_date_publication_anterieure_nonaffichee' => 'Скриване датата на предишно публикуване.', |
|
| 516 | + 'texte_date_publication_article' => 'ДАТА НА ПУБЛИКУВАНЕ В ИНТЕРНЕТ:', |
|
| 517 | + 'texte_descriptif_rapide' => 'Кратко описание', |
|
| 518 | + 'texte_effacer_base' => 'Изтриване на базата данни СПИП', |
|
| 519 | + 'texte_en_cours_validation' => 'Изпратени са следните статии със заявка за публикуване. Не се колебайте да дадете мнението си за тях във форума, който е прикрепен към тях. ', # MODIF |
|
| 520 | + 'texte_enrichir_mise_a_jour' => 'Можете да обогатите външния вид на текста като използвате «Типографски кратки команди».', |
|
| 521 | + 'texte_fichier_authent' => '<b>Да създаде ли СПИП специални <tt>.htpasswd</tt> |
|
| 522 | 522 | и <tt>.htpasswd-admin</tt> файлове в директорията@dossier@?</b><p> |
| 523 | 523 | Тези файлове ще бъдат използвани за ограничаване достъпа на авторите |
| 524 | 524 | и администраторите до други части на сайта |
@@ -526,44 +526,44 @@ discard block |
||
| 526 | 526 | Ако не сте използвали такива файлове преди, можете да осигурите възможност |
| 527 | 527 | за стойност "по подразбиране" (без |
| 528 | 528 | да се създават файлове).', # MODIF |
| 529 | - 'texte_informations_personnelles_1' => 'Системата сега ще създаде личен достъп до сайта. ', |
|
| 530 | - 'texte_informations_personnelles_2' => '(Забележка: ако това е преинсталация и достъпът Ви все още е активен, можете', # MODIF |
|
| 531 | - 'texte_introductif_article' => '(Въведение към статията.)', |
|
| 532 | - 'texte_jeu_caractere' => 'Препоръчваме да използвате на сайта универсална кодировка на знаците от азбуката (<tt>utf-8</tt>), за да може да се показва под формата на текст на всякакъв език. Никой от настоящите Интернет - навигатори нямат проблеми с нея. ', |
|
| 533 | - 'texte_jeu_caractere_3' => 'Настоящата кодировка на сайта е:', |
|
| 534 | - 'texte_jeu_caractere_4' => 'Ако това не отговаря на ситуацията, която имате с данните си (например след възстановяване на базата от данни от архива) или ако <em>правите настройка на сайта си в момента</em> и желаете да използвате различна кодировка на символите, моля да обозначите кодировката тук:', |
|
| 535 | - 'texte_login_ldap_1' => '(Оставете празно поле за потребител за анонимен достъп или попълнете пълния път за достъп, например «<tt>uid=smith, ou=users, dc=my-domain, dc=com</tt>».)', |
|
| 536 | - 'texte_login_precaution' => 'Внимание! Това е потребителското име, с което в момента сте се свързали. |
|
| 529 | + 'texte_informations_personnelles_1' => 'Системата сега ще създаде личен достъп до сайта. ', |
|
| 530 | + 'texte_informations_personnelles_2' => '(Забележка: ако това е преинсталация и достъпът Ви все още е активен, можете', # MODIF |
|
| 531 | + 'texte_introductif_article' => '(Въведение към статията.)', |
|
| 532 | + 'texte_jeu_caractere' => 'Препоръчваме да използвате на сайта универсална кодировка на знаците от азбуката (<tt>utf-8</tt>), за да може да се показва под формата на текст на всякакъв език. Никой от настоящите Интернет - навигатори нямат проблеми с нея. ', |
|
| 533 | + 'texte_jeu_caractere_3' => 'Настоящата кодировка на сайта е:', |
|
| 534 | + 'texte_jeu_caractere_4' => 'Ако това не отговаря на ситуацията, която имате с данните си (например след възстановяване на базата от данни от архива) или ако <em>правите настройка на сайта си в момента</em> и желаете да използвате различна кодировка на символите, моля да обозначите кодировката тук:', |
|
| 535 | + 'texte_login_ldap_1' => '(Оставете празно поле за потребител за анонимен достъп или попълнете пълния път за достъп, например «<tt>uid=smith, ou=users, dc=my-domain, dc=com</tt>».)', |
|
| 536 | + 'texte_login_precaution' => 'Внимание! Това е потребителското име, с което в момента сте се свързали. |
|
| 537 | 537 | Предпазливо използвайте формата ...', |
| 538 | - 'texte_mise_a_niveau_base_1' => 'СПИП файловете са актуализирани. |
|
| 538 | + 'texte_mise_a_niveau_base_1' => 'СПИП файловете са актуализирани. |
|
| 539 | 539 | Сега остава да обновите базата данни на |
| 540 | 540 | сайта.', |
| 541 | - 'texte_modifier_article' => 'Промяна на статията:', |
|
| 542 | - 'texte_multilinguisme' => 'Ако желаете да боравите със статии на няколко езика с усложнена навигация, можете да добавите меню "избор на език" към статиите и/или към рубриките, в зависимост от организацията на сайта Ви.', # MODIF |
|
| 543 | - 'texte_multilinguisme_trad' => 'Също така, можете да активирате система за управление на препратките към различните преводи на статията.', # MODIF |
|
| 544 | - 'texte_non_compresse' => '<i>uncompressed</i> (сървърът ви не поддрържа това свойство)', |
|
| 545 | - 'texte_nouvelle_version_spip_1' => 'Току-що инсталирахте нова версия на СПИП.', |
|
| 546 | - 'texte_nouvelle_version_spip_2' => 'Тази нова версия налага по-сериозна от обикновената актуализация. Ако сте администратор на сайта, изтрийте файла <tt>inc_connect.php3</tt> от директория <tt>ecrire</tt> и стартирайте отново инсталацията, с цел да актуализирате параметрите на базата данни за връзка. <p>(NB: ако сте забравили параметрите на базата данни за връзка, погледнете следния файл <tt>inc_connect.php3</tt> преди да го изтриете).', # MODIF |
|
| 547 | - 'texte_operation_echec' => 'Върнете се на предишната страница, за да изберете друга база или да създадете нова. Потвърдете информацията, изпратена от Вашия доставчик. ', |
|
| 548 | - 'texte_plus_trois_car' => 'повече от 3 знака', |
|
| 549 | - 'texte_plusieurs_articles' => 'Бяха намерени няколко автора за @cherche_auteur@:', |
|
| 550 | - 'texte_port_annuaire' => '(Обичайната стойност е подходяща като цяло.)', |
|
| 551 | - 'texte_presente_plugin' => 'На тази страница са указани наличните на сайта плъгини. Активирайте тези от тях, които Ви трябват, чрез отбелязване в съответната кутийка.', |
|
| 552 | - 'texte_proposer_publication' => 'Когато напишете статията,<br /> можете да я изпратите за публикуване.', |
|
| 553 | - 'texte_proxy' => 'В някои случаи (интранет, защитени мрежи и др.), |
|
| 541 | + 'texte_modifier_article' => 'Промяна на статията:', |
|
| 542 | + 'texte_multilinguisme' => 'Ако желаете да боравите със статии на няколко езика с усложнена навигация, можете да добавите меню "избор на език" към статиите и/или към рубриките, в зависимост от организацията на сайта Ви.', # MODIF |
|
| 543 | + 'texte_multilinguisme_trad' => 'Също така, можете да активирате система за управление на препратките към различните преводи на статията.', # MODIF |
|
| 544 | + 'texte_non_compresse' => '<i>uncompressed</i> (сървърът ви не поддрържа това свойство)', |
|
| 545 | + 'texte_nouvelle_version_spip_1' => 'Току-що инсталирахте нова версия на СПИП.', |
|
| 546 | + 'texte_nouvelle_version_spip_2' => 'Тази нова версия налага по-сериозна от обикновената актуализация. Ако сте администратор на сайта, изтрийте файла <tt>inc_connect.php3</tt> от директория <tt>ecrire</tt> и стартирайте отново инсталацията, с цел да актуализирате параметрите на базата данни за връзка. <p>(NB: ако сте забравили параметрите на базата данни за връзка, погледнете следния файл <tt>inc_connect.php3</tt> преди да го изтриете).', # MODIF |
|
| 547 | + 'texte_operation_echec' => 'Върнете се на предишната страница, за да изберете друга база или да създадете нова. Потвърдете информацията, изпратена от Вашия доставчик. ', |
|
| 548 | + 'texte_plus_trois_car' => 'повече от 3 знака', |
|
| 549 | + 'texte_plusieurs_articles' => 'Бяха намерени няколко автора за @cherche_auteur@:', |
|
| 550 | + 'texte_port_annuaire' => '(Обичайната стойност е подходяща като цяло.)', |
|
| 551 | + 'texte_presente_plugin' => 'На тази страница са указани наличните на сайта плъгини. Активирайте тези от тях, които Ви трябват, чрез отбелязване в съответната кутийка.', |
|
| 552 | + 'texte_proposer_publication' => 'Когато напишете статията,<br /> можете да я изпратите за публикуване.', |
|
| 553 | + 'texte_proxy' => 'В някои случаи (интранет, защитени мрежи и др.), |
|
| 554 | 554 | е нужно да се използва <i>HTTP прокси</i>, за да се достигне до обединените сайтове. |
| 555 | 555 | Ако има прокси, впишете адрес му отдолу по следния начин |
| 556 | 556 | <tt><html>http://proxy:8080</html></tt>. По принцип, |
| 557 | 557 | това поле се оставя празно.', |
| 558 | - 'texte_publication_articles_post_dates' => 'Какво би трябвало да направи СПИП във връзка със статии, |
|
| 558 | + 'texte_publication_articles_post_dates' => 'Какво би трябвало да направи СПИП във връзка със статии, |
|
| 559 | 559 | чиято публикация е зададена |
| 560 | 560 | за бъдеща дата?', |
| 561 | - 'texte_rappel_selection_champs' => '[Не забравяйте да изберете правилното поле.]', |
|
| 562 | - 'texte_recalcul_page' => 'Ако желаете да |
|
| 561 | + 'texte_rappel_selection_champs' => '[Не забравяйте да изберете правилното поле.]', |
|
| 562 | + 'texte_recalcul_page' => 'Ако желаете да |
|
| 563 | 563 | презаредите само една страница, по-добре направете това от публичната зона, като използвате « бутона "Презареждане" ».', |
| 564 | - 'texte_recuperer_base' => 'Поправка на базата данни', |
|
| 565 | - 'texte_reference_mais_redirige' => 'свързана статия на Вашия СПИП сайт, но пренасочена към друг URL адрес.', |
|
| 566 | - 'texte_requetes_echouent' => '<b>Когато някои SQL справки |
|
| 564 | + 'texte_recuperer_base' => 'Поправка на базата данни', |
|
| 565 | + 'texte_reference_mais_redirige' => 'свързана статия на Вашия СПИП сайт, но пренасочена към друг URL адрес.', |
|
| 566 | + 'texte_requetes_echouent' => '<b>Когато някои SQL справки |
|
| 567 | 567 | системно и без налична причина заочнат да се развалят, възможно е |
| 568 | 568 | базата данни сама да |
| 569 | 569 | го прави.</b> |
@@ -574,7 +574,7 @@ discard block |
||
| 574 | 574 | указания за това, което е развалено. |
| 575 | 575 | <p>Ако проблемът все още е налице, обадете се |
| 576 | 576 | на Вашия хост.', # MODIF |
| 577 | - 'texte_selection_langue_principale' => 'Посочете по-долу основният език на сайта. За щастие, този избор не ограничава статиите Ви да бъдат написани на избран от Вас езит. Той позволявя да определите |
|
| 577 | + 'texte_selection_langue_principale' => 'Посочете по-долу основният език на сайта. За щастие, този избор не ограничава статиите Ви да бъдат написани на избран от Вас езит. Той позволявя да определите |
|
| 578 | 578 | |
| 579 | 579 | <ul><li> формата по подразбиране на данните в публичния сайт</li> |
| 580 | 580 | |
@@ -583,71 +583,71 @@ discard block |
||
| 583 | 583 | <li> езикът, който се използва във формите на публичния сайт</li> |
| 584 | 584 | |
| 585 | 585 | <li> езикът по подразбиране на данните в личната зона.</li></ul>', |
| 586 | - 'texte_sous_titre' => 'Подзаглавие', |
|
| 587 | - 'texte_statistiques_visites' => '(тъмни ивици: неделя / тъмна крива: средно развитие)', |
|
| 588 | - 'texte_statut_attente_validation' => 'за одобрение', |
|
| 589 | - 'texte_statut_publies' => 'публикувани на сайта', |
|
| 590 | - 'texte_statut_refuses' => 'отхвърлени', |
|
| 591 | - 'texte_suppression_fichiers' => 'Тази команда служи за изтриване на всички |
|
| 586 | + 'texte_sous_titre' => 'Подзаглавие', |
|
| 587 | + 'texte_statistiques_visites' => '(тъмни ивици: неделя / тъмна крива: средно развитие)', |
|
| 588 | + 'texte_statut_attente_validation' => 'за одобрение', |
|
| 589 | + 'texte_statut_publies' => 'публикувани на сайта', |
|
| 590 | + 'texte_statut_refuses' => 'отхвърлени', |
|
| 591 | + 'texte_suppression_fichiers' => 'Тази команда служи за изтриване на всички |
|
| 592 | 592 | файлове в кеш-паметта на СПИП. Това позволява да се актуализират принудително всички страници, в |
| 593 | 593 | случаи, когато са направени важни изменения в графиките или структурата на сайта.', |
| 594 | - 'texte_sur_titre' => 'Челно заглавие', |
|
| 595 | - 'texte_table_ok' => ' : тази таблица е добра.', |
|
| 596 | - 'texte_tentative_recuperation' => 'Опит за поправка', |
|
| 597 | - 'texte_tenter_reparation' => 'Опит за поправка на базата данни', |
|
| 598 | - 'texte_test_proxy' => 'За да изпробвате дали работи проксито, впишете на това място |
|
| 594 | + 'texte_sur_titre' => 'Челно заглавие', |
|
| 595 | + 'texte_table_ok' => ' : тази таблица е добра.', |
|
| 596 | + 'texte_tentative_recuperation' => 'Опит за поправка', |
|
| 597 | + 'texte_tenter_reparation' => 'Опит за поправка на базата данни', |
|
| 598 | + 'texte_test_proxy' => 'За да изпробвате дали работи проксито, впишете на това място |
|
| 599 | 599 | URL-a на желана Интернет страница.', |
| 600 | - 'texte_titre_02' => 'Тема:', |
|
| 601 | - 'texte_titre_obligatoire' => '<b>Заглавие</b> [Задължително]', |
|
| 602 | - 'texte_travail_article' => '@nom_auteur_modif@ е работил по статията преди @date_diff@ минути', |
|
| 603 | - 'texte_travail_collaboratif' => 'Ако се случва често няколко редактора да |
|
| 600 | + 'texte_titre_02' => 'Тема:', |
|
| 601 | + 'texte_titre_obligatoire' => '<b>Заглавие</b> [Задължително]', |
|
| 602 | + 'texte_travail_article' => '@nom_auteur_modif@ е работил по статията преди @date_diff@ минути', |
|
| 603 | + 'texte_travail_collaboratif' => 'Ако се случва често няколко редактора да |
|
| 604 | 604 | работят по една и съща статия, системата |
| 605 | 605 | може да покаже наскоро отваряните статии, |
| 606 | 606 | с цел да избегнат едновременни промени. |
| 607 | 607 | Тази операция е изключена по начало, |
| 608 | 608 | с цел да не се показват излишни |
| 609 | 609 | предупредителни съобщения.', |
| 610 | - 'texte_vide' => 'празно', |
|
| 611 | - 'texte_vider_cache' => 'Изпразване на кеш-паметта', |
|
| 612 | - 'titre_admin_tech' => 'Техническа поддръжка', |
|
| 613 | - 'titre_admin_vider' => 'Техническа поддръжка', |
|
| 614 | - 'titre_cadre_afficher_article' => 'Показване на статиите:', |
|
| 615 | - 'titre_cadre_afficher_traductions' => 'Показване статуса на превод на следния език:', |
|
| 616 | - 'titre_cadre_ajouter_auteur' => 'ДОБАВЯНЕ НА АВТОР:', |
|
| 617 | - 'titre_cadre_interieur_rubrique' => 'В рубрика', |
|
| 618 | - 'titre_cadre_numero_auteur' => 'НОМЕР НА АВТОРА', |
|
| 619 | - 'titre_cadre_signature_obligatoire' => '<b>Подпис</b> [Задължителен]<br />', |
|
| 620 | - 'titre_config_fonctions' => 'Конфигуриране на сайта', |
|
| 621 | - 'titre_configuration' => 'Конфигуриране на сайта', |
|
| 622 | - 'titre_connexion_ldap' => 'Възможности: <b>Вашата LDAP-връзка</b>', |
|
| 623 | - 'titre_groupe_mots' => 'ГРУПА ОТ КЛЮЧОВИ ДУМИ:', |
|
| 624 | - 'titre_langue_article' => 'ЕЗИК НА СТАТИЯТА', # MODIF |
|
| 625 | - 'titre_langue_rubrique' => 'ЕЗИК НА РУБРИКАТА', # MODIF |
|
| 626 | - 'titre_langue_trad_article' => 'ЕЗИК И ПРЕВОДИ НА СТАТИЯТА', |
|
| 627 | - 'titre_les_articles' => 'СТАТИИ', |
|
| 628 | - 'titre_naviguer_dans_le_site' => 'Търсене на сайта', |
|
| 629 | - 'titre_nouvelle_rubrique' => 'Нова рубрика', |
|
| 630 | - 'titre_numero_rubrique' => 'НОМЕР НА РУБРИКАТА:', |
|
| 631 | - 'titre_page_articles_edit' => 'Промяна: @titre@', |
|
| 632 | - 'titre_page_articles_page' => 'Статии', |
|
| 633 | - 'titre_page_articles_tous' => 'Целият сайт', |
|
| 634 | - 'titre_page_calendrier' => 'Календар @nom_mois@ @annee@', |
|
| 635 | - 'titre_page_config_contenu' => 'Конфигуриране на сайта', |
|
| 636 | - 'titre_page_delete_all' => 'пълно и безвъзвратно изтриване', |
|
| 637 | - 'titre_page_recherche' => 'Резултати от търсенето @recherche@', |
|
| 638 | - 'titre_page_statistiques_referers' => 'Статистика (входящи препратки)', |
|
| 639 | - 'titre_page_upgrade' => 'Актуализация на СПИП', |
|
| 640 | - 'titre_publication_articles_post_dates' => 'Публикуване на статии с отминала дата', |
|
| 641 | - 'titre_reparation' => 'Поправка', |
|
| 642 | - 'titre_suivi_petition' => 'Допълнения на молбите', |
|
| 643 | - 'trad_article_traduction' => 'Всички версии на статията:', |
|
| 644 | - 'trad_delier' => 'Отказ от свързване на статията с нейните преводи', # MODIF |
|
| 645 | - 'trad_lier' => 'Статията е превод на статия номер ', |
|
| 646 | - 'trad_new' => 'Писане на нов превод на статията', # MODIF |
|
| 610 | + 'texte_vide' => 'празно', |
|
| 611 | + 'texte_vider_cache' => 'Изпразване на кеш-паметта', |
|
| 612 | + 'titre_admin_tech' => 'Техническа поддръжка', |
|
| 613 | + 'titre_admin_vider' => 'Техническа поддръжка', |
|
| 614 | + 'titre_cadre_afficher_article' => 'Показване на статиите:', |
|
| 615 | + 'titre_cadre_afficher_traductions' => 'Показване статуса на превод на следния език:', |
|
| 616 | + 'titre_cadre_ajouter_auteur' => 'ДОБАВЯНЕ НА АВТОР:', |
|
| 617 | + 'titre_cadre_interieur_rubrique' => 'В рубрика', |
|
| 618 | + 'titre_cadre_numero_auteur' => 'НОМЕР НА АВТОРА', |
|
| 619 | + 'titre_cadre_signature_obligatoire' => '<b>Подпис</b> [Задължителен]<br />', |
|
| 620 | + 'titre_config_fonctions' => 'Конфигуриране на сайта', |
|
| 621 | + 'titre_configuration' => 'Конфигуриране на сайта', |
|
| 622 | + 'titre_connexion_ldap' => 'Възможности: <b>Вашата LDAP-връзка</b>', |
|
| 623 | + 'titre_groupe_mots' => 'ГРУПА ОТ КЛЮЧОВИ ДУМИ:', |
|
| 624 | + 'titre_langue_article' => 'ЕЗИК НА СТАТИЯТА', # MODIF |
|
| 625 | + 'titre_langue_rubrique' => 'ЕЗИК НА РУБРИКАТА', # MODIF |
|
| 626 | + 'titre_langue_trad_article' => 'ЕЗИК И ПРЕВОДИ НА СТАТИЯТА', |
|
| 627 | + 'titre_les_articles' => 'СТАТИИ', |
|
| 628 | + 'titre_naviguer_dans_le_site' => 'Търсене на сайта', |
|
| 629 | + 'titre_nouvelle_rubrique' => 'Нова рубрика', |
|
| 630 | + 'titre_numero_rubrique' => 'НОМЕР НА РУБРИКАТА:', |
|
| 631 | + 'titre_page_articles_edit' => 'Промяна: @titre@', |
|
| 632 | + 'titre_page_articles_page' => 'Статии', |
|
| 633 | + 'titre_page_articles_tous' => 'Целият сайт', |
|
| 634 | + 'titre_page_calendrier' => 'Календар @nom_mois@ @annee@', |
|
| 635 | + 'titre_page_config_contenu' => 'Конфигуриране на сайта', |
|
| 636 | + 'titre_page_delete_all' => 'пълно и безвъзвратно изтриване', |
|
| 637 | + 'titre_page_recherche' => 'Резултати от търсенето @recherche@', |
|
| 638 | + 'titre_page_statistiques_referers' => 'Статистика (входящи препратки)', |
|
| 639 | + 'titre_page_upgrade' => 'Актуализация на СПИП', |
|
| 640 | + 'titre_publication_articles_post_dates' => 'Публикуване на статии с отминала дата', |
|
| 641 | + 'titre_reparation' => 'Поправка', |
|
| 642 | + 'titre_suivi_petition' => 'Допълнения на молбите', |
|
| 643 | + 'trad_article_traduction' => 'Всички версии на статията:', |
|
| 644 | + 'trad_delier' => 'Отказ от свързване на статията с нейните преводи', # MODIF |
|
| 645 | + 'trad_lier' => 'Статията е превод на статия номер ', |
|
| 646 | + 'trad_new' => 'Писане на нов превод на статията', # MODIF |
|
| 647 | 647 | |
| 648 | - // U |
|
| 649 | - 'utf8_convert_erreur_orig' => 'Грешка: кодировката на символите @charset@ не се поддържа.', |
|
| 648 | + // U |
|
| 649 | + 'utf8_convert_erreur_orig' => 'Грешка: кодировката на символите @charset@ не се поддържа.', |
|
| 650 | 650 | |
| 651 | - // V |
|
| 652 | - 'version' => 'Версия:' |
|
| 651 | + // V |
|
| 652 | + 'version' => 'Версия:' |
|
| 653 | 653 | ); |
@@ -4,118 +4,118 @@ |
||
| 4 | 4 | // ** ne pas modifier le fichier ** |
| 5 | 5 | |
| 6 | 6 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 7 | - return; |
|
| 7 | + return; |
|
| 8 | 8 | } |
| 9 | 9 | |
| 10 | 10 | $GLOBALS[$GLOBALS['idx_lang']] = array( |
| 11 | 11 | |
| 12 | - // A |
|
| 13 | - 'accueil_site' => 'Acuèlh', |
|
| 14 | - 'article' => 'Article', |
|
| 15 | - 'articles' => 'Articles', |
|
| 16 | - 'articles_auteur' => 'Articles d’aquel autor', |
|
| 17 | - 'articles_populaires' => 'Lu articles mai populars', |
|
| 18 | - 'articles_rubrique' => 'Articles d’aquela rubrica', |
|
| 19 | - 'aucun_article' => 'Li a minga d’article à-n-aquela adreça', |
|
| 20 | - 'aucun_auteur' => 'Li a minga d’autor à-n-aquela adreça', |
|
| 21 | - 'aucun_site' => 'Li a minga de site à-n-aquela adreça', |
|
| 22 | - 'aucune_breve' => 'Li a minga de brèva à-n-aquela adreça', |
|
| 23 | - 'aucune_rubrique' => 'Li a minga de rubrica à-n-aquela adreça', |
|
| 24 | - 'auteur' => 'Autor', |
|
| 25 | - 'autres' => 'Autres', |
|
| 26 | - 'autres_breves' => 'Autri brèvas', |
|
| 27 | - 'autres_groupes_mots_clefs' => 'Autres grops de mòts claus', |
|
| 28 | - 'autres_sites' => 'Autres sites', |
|
| 29 | - |
|
| 30 | - // B |
|
| 31 | - 'bonjour' => 'Boanjorn', |
|
| 32 | - |
|
| 33 | - // C |
|
| 34 | - 'commenter_site' => 'Comentar aqueu site', |
|
| 35 | - 'contact' => 'Contacte', |
|
| 36 | - 'copie_document_impossible' => 'Impossible de copiar lo document', |
|
| 37 | - |
|
| 38 | - // D |
|
| 39 | - 'date' => 'Data', |
|
| 40 | - 'dernier_ajout' => 'Darrier ajust', |
|
| 41 | - 'dernieres_breves' => 'Darrieras brèvas', |
|
| 42 | - 'derniers_articles' => 'Darriers articles', |
|
| 43 | - 'derniers_commentaires' => 'Darriers comentaris', |
|
| 44 | - 'derniers_messages_forum' => 'Darriers messatges publicats dins lu fòros', |
|
| 45 | - |
|
| 46 | - // E |
|
| 47 | - 'edition_mode_texte' => 'Edicion en mòde tèxt de', |
|
| 48 | - 'en_reponse' => 'En respoasta à:', |
|
| 49 | - 'en_resume' => 'En resumit', |
|
| 50 | - 'envoyer_message' => 'Mandar un messatge', |
|
| 51 | - 'espace_prive' => 'Espaci privat', |
|
| 52 | - |
|
| 53 | - // F |
|
| 54 | - 'formats_acceptes' => 'Formats acceptats : @formats@.', |
|
| 55 | - |
|
| 56 | - // H |
|
| 57 | - 'hierarchie_site' => 'Ierarquia dau sit', |
|
| 58 | - |
|
| 59 | - // J |
|
| 60 | - 'jours' => 'jorns', |
|
| 61 | - |
|
| 62 | - // L |
|
| 63 | - 'lien_connecter' => 'Si conectar', |
|
| 64 | - |
|
| 65 | - // M |
|
| 66 | - 'meme_auteur' => 'Dau meme autor', |
|
| 67 | - 'meme_rubrique' => 'Dins la mema rubrica', |
|
| 68 | - 'memes_auteurs' => 'Dei memes autors', |
|
| 69 | - 'message' => 'Messatge', |
|
| 70 | - 'messages_forum' => 'Messatges', |
|
| 71 | - 'messages_recents' => 'Lu messatges de fòros mai recents', |
|
| 72 | - 'mots_clef' => 'Mòt-clau', |
|
| 73 | - 'mots_clefs' => 'Mòts-claus', |
|
| 74 | - 'mots_clefs_meme_groupe' => 'Mòts-claus dins lo meme grop', |
|
| 75 | - |
|
| 76 | - // N |
|
| 77 | - 'navigation' => 'Navigacion', |
|
| 78 | - 'nom' => 'Nom', |
|
| 79 | - 'nouveautes' => 'Li novèutats', |
|
| 80 | - 'nouveautes_web' => 'Novèutats sus lo oèb', |
|
| 81 | - 'nouveaux_articles' => 'Articles nòus', |
|
| 82 | - 'nouvelles_breves' => 'Brèvas novèlas', |
|
| 83 | - |
|
| 84 | - // P |
|
| 85 | - 'page_precedente' => 'pàgina anteriora', |
|
| 86 | - 'page_suivante' => 'pàgina seguenta', |
|
| 87 | - 'par_auteur' => 'da', |
|
| 88 | - 'participer_site' => 'Podètz participar à la vida d’aqueu sit e prepauar lu voastres articles en vos inscrivent çai sota. Receberètz un e-mail que v’indicarà lu voastres còdes per accedir à l’espaci privat dau sit.', |
|
| 89 | - 'plan_site' => 'Plan dau site', |
|
| 90 | - 'popularite' => 'Popularitat', |
|
| 91 | - 'poster_message' => 'Postar un messatge', |
|
| 92 | - 'proposer_site' => 'Podètz prepauar un site à ajustar en aquela rubrica:', |
|
| 93 | - |
|
| 94 | - // R |
|
| 95 | - 'repondre_article' => 'Respoandre à-n-aquel article', |
|
| 96 | - 'repondre_breve' => 'Respoandre à-n-aquela brèva', |
|
| 97 | - 'resultats_recherche' => 'Resultats de la recèrca', |
|
| 98 | - 'retour_debut_forums' => 'Retorn au començament dei fòros', |
|
| 99 | - 'rubrique' => 'Rubrica', |
|
| 100 | - 'rubriques' => 'Rubricas', |
|
| 101 | - |
|
| 102 | - // S |
|
| 103 | - 'signatures_petition' => 'Firmas', |
|
| 104 | - 'site_realise_avec_spip' => 'Sit realisat embé SPIP', |
|
| 105 | - 'sites_web' => 'Sits web', |
|
| 106 | - 'sous_rubriques' => 'Sosrubricas', |
|
| 107 | - 'spam' => 'Espam', |
|
| 108 | - 'suite' => 'seguida', |
|
| 109 | - 'sur_web' => 'Sus lo oèb', |
|
| 110 | - 'syndiquer_rubrique' => 'Sindicar aquela rubrica', |
|
| 111 | - 'syndiquer_site' => 'Sindicar tot lo sit', |
|
| 112 | - |
|
| 113 | - // T |
|
| 114 | - 'texte_lettre_information' => 'Vequí la letra d’informacion dau sit', |
|
| 115 | - 'texte_lettre_information_2' => 'Aquela letra recensa li noveutas publicadi despí', |
|
| 116 | - |
|
| 117 | - // V |
|
| 118 | - 'ver_imprimer' => 'Version d’estampar', |
|
| 119 | - 'voir_en_ligne' => 'Vejatz en linha', |
|
| 120 | - 'voir_squelette' => 'veire l’esqueleta d’aquela pàgina' |
|
| 12 | + // A |
|
| 13 | + 'accueil_site' => 'Acuèlh', |
|
| 14 | + 'article' => 'Article', |
|
| 15 | + 'articles' => 'Articles', |
|
| 16 | + 'articles_auteur' => 'Articles d’aquel autor', |
|
| 17 | + 'articles_populaires' => 'Lu articles mai populars', |
|
| 18 | + 'articles_rubrique' => 'Articles d’aquela rubrica', |
|
| 19 | + 'aucun_article' => 'Li a minga d’article à-n-aquela adreça', |
|
| 20 | + 'aucun_auteur' => 'Li a minga d’autor à-n-aquela adreça', |
|
| 21 | + 'aucun_site' => 'Li a minga de site à-n-aquela adreça', |
|
| 22 | + 'aucune_breve' => 'Li a minga de brèva à-n-aquela adreça', |
|
| 23 | + 'aucune_rubrique' => 'Li a minga de rubrica à-n-aquela adreça', |
|
| 24 | + 'auteur' => 'Autor', |
|
| 25 | + 'autres' => 'Autres', |
|
| 26 | + 'autres_breves' => 'Autri brèvas', |
|
| 27 | + 'autres_groupes_mots_clefs' => 'Autres grops de mòts claus', |
|
| 28 | + 'autres_sites' => 'Autres sites', |
|
| 29 | + |
|
| 30 | + // B |
|
| 31 | + 'bonjour' => 'Boanjorn', |
|
| 32 | + |
|
| 33 | + // C |
|
| 34 | + 'commenter_site' => 'Comentar aqueu site', |
|
| 35 | + 'contact' => 'Contacte', |
|
| 36 | + 'copie_document_impossible' => 'Impossible de copiar lo document', |
|
| 37 | + |
|
| 38 | + // D |
|
| 39 | + 'date' => 'Data', |
|
| 40 | + 'dernier_ajout' => 'Darrier ajust', |
|
| 41 | + 'dernieres_breves' => 'Darrieras brèvas', |
|
| 42 | + 'derniers_articles' => 'Darriers articles', |
|
| 43 | + 'derniers_commentaires' => 'Darriers comentaris', |
|
| 44 | + 'derniers_messages_forum' => 'Darriers messatges publicats dins lu fòros', |
|
| 45 | + |
|
| 46 | + // E |
|
| 47 | + 'edition_mode_texte' => 'Edicion en mòde tèxt de', |
|
| 48 | + 'en_reponse' => 'En respoasta à:', |
|
| 49 | + 'en_resume' => 'En resumit', |
|
| 50 | + 'envoyer_message' => 'Mandar un messatge', |
|
| 51 | + 'espace_prive' => 'Espaci privat', |
|
| 52 | + |
|
| 53 | + // F |
|
| 54 | + 'formats_acceptes' => 'Formats acceptats : @formats@.', |
|
| 55 | + |
|
| 56 | + // H |
|
| 57 | + 'hierarchie_site' => 'Ierarquia dau sit', |
|
| 58 | + |
|
| 59 | + // J |
|
| 60 | + 'jours' => 'jorns', |
|
| 61 | + |
|
| 62 | + // L |
|
| 63 | + 'lien_connecter' => 'Si conectar', |
|
| 64 | + |
|
| 65 | + // M |
|
| 66 | + 'meme_auteur' => 'Dau meme autor', |
|
| 67 | + 'meme_rubrique' => 'Dins la mema rubrica', |
|
| 68 | + 'memes_auteurs' => 'Dei memes autors', |
|
| 69 | + 'message' => 'Messatge', |
|
| 70 | + 'messages_forum' => 'Messatges', |
|
| 71 | + 'messages_recents' => 'Lu messatges de fòros mai recents', |
|
| 72 | + 'mots_clef' => 'Mòt-clau', |
|
| 73 | + 'mots_clefs' => 'Mòts-claus', |
|
| 74 | + 'mots_clefs_meme_groupe' => 'Mòts-claus dins lo meme grop', |
|
| 75 | + |
|
| 76 | + // N |
|
| 77 | + 'navigation' => 'Navigacion', |
|
| 78 | + 'nom' => 'Nom', |
|
| 79 | + 'nouveautes' => 'Li novèutats', |
|
| 80 | + 'nouveautes_web' => 'Novèutats sus lo oèb', |
|
| 81 | + 'nouveaux_articles' => 'Articles nòus', |
|
| 82 | + 'nouvelles_breves' => 'Brèvas novèlas', |
|
| 83 | + |
|
| 84 | + // P |
|
| 85 | + 'page_precedente' => 'pàgina anteriora', |
|
| 86 | + 'page_suivante' => 'pàgina seguenta', |
|
| 87 | + 'par_auteur' => 'da', |
|
| 88 | + 'participer_site' => 'Podètz participar à la vida d’aqueu sit e prepauar lu voastres articles en vos inscrivent çai sota. Receberètz un e-mail que v’indicarà lu voastres còdes per accedir à l’espaci privat dau sit.', |
|
| 89 | + 'plan_site' => 'Plan dau site', |
|
| 90 | + 'popularite' => 'Popularitat', |
|
| 91 | + 'poster_message' => 'Postar un messatge', |
|
| 92 | + 'proposer_site' => 'Podètz prepauar un site à ajustar en aquela rubrica:', |
|
| 93 | + |
|
| 94 | + // R |
|
| 95 | + 'repondre_article' => 'Respoandre à-n-aquel article', |
|
| 96 | + 'repondre_breve' => 'Respoandre à-n-aquela brèva', |
|
| 97 | + 'resultats_recherche' => 'Resultats de la recèrca', |
|
| 98 | + 'retour_debut_forums' => 'Retorn au començament dei fòros', |
|
| 99 | + 'rubrique' => 'Rubrica', |
|
| 100 | + 'rubriques' => 'Rubricas', |
|
| 101 | + |
|
| 102 | + // S |
|
| 103 | + 'signatures_petition' => 'Firmas', |
|
| 104 | + 'site_realise_avec_spip' => 'Sit realisat embé SPIP', |
|
| 105 | + 'sites_web' => 'Sits web', |
|
| 106 | + 'sous_rubriques' => 'Sosrubricas', |
|
| 107 | + 'spam' => 'Espam', |
|
| 108 | + 'suite' => 'seguida', |
|
| 109 | + 'sur_web' => 'Sus lo oèb', |
|
| 110 | + 'syndiquer_rubrique' => 'Sindicar aquela rubrica', |
|
| 111 | + 'syndiquer_site' => 'Sindicar tot lo sit', |
|
| 112 | + |
|
| 113 | + // T |
|
| 114 | + 'texte_lettre_information' => 'Vequí la letra d’informacion dau sit', |
|
| 115 | + 'texte_lettre_information_2' => 'Aquela letra recensa li noveutas publicadi despí', |
|
| 116 | + |
|
| 117 | + // V |
|
| 118 | + 'ver_imprimer' => 'Version d’estampar', |
|
| 119 | + 'voir_en_ligne' => 'Vejatz en linha', |
|
| 120 | + 'voir_squelette' => 'veire l’esqueleta d’aquela pàgina' |
|
| 121 | 121 | ); |
@@ -30,7 +30,7 @@ discard block |
||
| 30 | 30 | **/ |
| 31 | 31 | |
| 32 | 32 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 33 | - return; |
|
| 33 | + return; |
|
| 34 | 34 | } |
| 35 | 35 | |
| 36 | 36 | global $logo_libelles; |
@@ -49,90 +49,90 @@ discard block |
||
| 49 | 49 | * @return array Variables d'environnement pour le fond |
| 50 | 50 | */ |
| 51 | 51 | function formulaires_editer_logo_charger_dist($objet, $id_objet, $retour = '', $options = array()) { |
| 52 | - // pas dans une boucle ? formulaire pour le logo du site |
|
| 53 | - // dans ce cas, il faut chercher un 'siteon0.ext' |
|
| 54 | - if (!$objet) { |
|
| 55 | - $objet = 'site'; |
|
| 56 | - } |
|
| 52 | + // pas dans une boucle ? formulaire pour le logo du site |
|
| 53 | + // dans ce cas, il faut chercher un 'siteon0.ext' |
|
| 54 | + if (!$objet) { |
|
| 55 | + $objet = 'site'; |
|
| 56 | + } |
|
| 57 | 57 | |
| 58 | - $objet = objet_type($objet); |
|
| 59 | - $_id_objet = id_table_objet($objet); |
|
| 58 | + $objet = objet_type($objet); |
|
| 59 | + $_id_objet = id_table_objet($objet); |
|
| 60 | 60 | |
| 61 | - if (!is_array($options)) { |
|
| 62 | - $options = unserialize($options); |
|
| 63 | - } |
|
| 64 | - $options = spip_sanitize_from_request($options, '*'); |
|
| 61 | + if (!is_array($options)) { |
|
| 62 | + $options = unserialize($options); |
|
| 63 | + } |
|
| 64 | + $options = spip_sanitize_from_request($options, '*'); |
|
| 65 | 65 | |
| 66 | - if (!isset($options['titre'])) { |
|
| 67 | - $balise_img = chercher_filtre('balise_img'); |
|
| 68 | - $img = $balise_img(chemin_image('image-24.png'),'', 'cadre-icone'); |
|
| 69 | - $libelles = pipeline('libeller_logo', $GLOBALS['logo_libelles']); |
|
| 70 | - $libelle = (($id_objet or $objet != 'rubrique') ? $objet : 'racine'); |
|
| 71 | - if (isset($libelles[$libelle])) { |
|
| 72 | - $libelle = $libelles[$libelle]; |
|
| 73 | - } elseif ($libelle = objet_info($objet, 'texte_logo_objet')) { |
|
| 74 | - $libelle = _T($libelle); |
|
| 75 | - } else { |
|
| 76 | - $libelle = _L('Logo'); |
|
| 77 | - } |
|
| 78 | - switch ($objet) { |
|
| 79 | - case 'article': |
|
| 80 | - $libelle .= ' ' . aider('logoart'); |
|
| 81 | - break; |
|
| 82 | - case 'breve': |
|
| 83 | - $libelle .= ' ' . aider('breveslogo'); |
|
| 84 | - break; |
|
| 85 | - case 'rubrique': |
|
| 86 | - $libelle .= ' ' . aider('rublogo'); |
|
| 87 | - break; |
|
| 88 | - default: |
|
| 89 | - break; |
|
| 90 | - } |
|
| 66 | + if (!isset($options['titre'])) { |
|
| 67 | + $balise_img = chercher_filtre('balise_img'); |
|
| 68 | + $img = $balise_img(chemin_image('image-24.png'),'', 'cadre-icone'); |
|
| 69 | + $libelles = pipeline('libeller_logo', $GLOBALS['logo_libelles']); |
|
| 70 | + $libelle = (($id_objet or $objet != 'rubrique') ? $objet : 'racine'); |
|
| 71 | + if (isset($libelles[$libelle])) { |
|
| 72 | + $libelle = $libelles[$libelle]; |
|
| 73 | + } elseif ($libelle = objet_info($objet, 'texte_logo_objet')) { |
|
| 74 | + $libelle = _T($libelle); |
|
| 75 | + } else { |
|
| 76 | + $libelle = _L('Logo'); |
|
| 77 | + } |
|
| 78 | + switch ($objet) { |
|
| 79 | + case 'article': |
|
| 80 | + $libelle .= ' ' . aider('logoart'); |
|
| 81 | + break; |
|
| 82 | + case 'breve': |
|
| 83 | + $libelle .= ' ' . aider('breveslogo'); |
|
| 84 | + break; |
|
| 85 | + case 'rubrique': |
|
| 86 | + $libelle .= ' ' . aider('rublogo'); |
|
| 87 | + break; |
|
| 88 | + default: |
|
| 89 | + break; |
|
| 90 | + } |
|
| 91 | 91 | |
| 92 | - $options['titre'] = $img . $libelle; |
|
| 93 | - } |
|
| 94 | - if (!isset($options['editable'])) { |
|
| 95 | - include_spip('inc/autoriser'); |
|
| 96 | - $options['editable'] = autoriser('iconifier', $objet, $id_objet); |
|
| 97 | - } |
|
| 92 | + $options['titre'] = $img . $libelle; |
|
| 93 | + } |
|
| 94 | + if (!isset($options['editable'])) { |
|
| 95 | + include_spip('inc/autoriser'); |
|
| 96 | + $options['editable'] = autoriser('iconifier', $objet, $id_objet); |
|
| 97 | + } |
|
| 98 | 98 | |
| 99 | - $res = array( |
|
| 100 | - 'editable' => ($GLOBALS['meta']['activer_logos'] == 'oui' ? ' ' : '') && (!isset($options['editable']) or $options['editable']), |
|
| 101 | - 'logo_survol' => ($GLOBALS['meta']['activer_logos_survol'] == 'oui' ? ' ' : ''), |
|
| 102 | - 'objet' => $objet, |
|
| 103 | - 'id_objet' => $id_objet, |
|
| 104 | - '_options' => $options, |
|
| 105 | - '_show_upload_off' => '', |
|
| 106 | - ); |
|
| 99 | + $res = array( |
|
| 100 | + 'editable' => ($GLOBALS['meta']['activer_logos'] == 'oui' ? ' ' : '') && (!isset($options['editable']) or $options['editable']), |
|
| 101 | + 'logo_survol' => ($GLOBALS['meta']['activer_logos_survol'] == 'oui' ? ' ' : ''), |
|
| 102 | + 'objet' => $objet, |
|
| 103 | + 'id_objet' => $id_objet, |
|
| 104 | + '_options' => $options, |
|
| 105 | + '_show_upload_off' => '', |
|
| 106 | + ); |
|
| 107 | 107 | |
| 108 | - // rechercher le logo de l'objet |
|
| 109 | - // la fonction prend un parametre '_id_objet' etrange : |
|
| 110 | - // le nom de la cle primaire (et non le nom de la table) |
|
| 111 | - // ou directement le nom du raccourcis a chercher |
|
| 112 | - $chercher_logo = charger_fonction('chercher_logo', 'inc'); |
|
| 113 | - $etats = $res['logo_survol'] ? array('on', 'off') : array('on'); |
|
| 114 | - foreach ($etats as $etat) { |
|
| 115 | - $logo = $chercher_logo($id_objet, $_id_objet, $etat); |
|
| 116 | - if ($logo) { |
|
| 117 | - $res['logo_' . $etat] = $logo[0]; |
|
| 118 | - } |
|
| 119 | - } |
|
| 120 | - // pas de logo_on -> pas de formulaire pour le survol |
|
| 121 | - if (!isset($res['logo_on'])) { |
|
| 122 | - $res['logo_survol'] = ''; |
|
| 123 | - } elseif (!isset($res['logo_off']) and _request('logo_up')) { |
|
| 124 | - $res['_show_upload_off'] = ' '; |
|
| 125 | - } |
|
| 108 | + // rechercher le logo de l'objet |
|
| 109 | + // la fonction prend un parametre '_id_objet' etrange : |
|
| 110 | + // le nom de la cle primaire (et non le nom de la table) |
|
| 111 | + // ou directement le nom du raccourcis a chercher |
|
| 112 | + $chercher_logo = charger_fonction('chercher_logo', 'inc'); |
|
| 113 | + $etats = $res['logo_survol'] ? array('on', 'off') : array('on'); |
|
| 114 | + foreach ($etats as $etat) { |
|
| 115 | + $logo = $chercher_logo($id_objet, $_id_objet, $etat); |
|
| 116 | + if ($logo) { |
|
| 117 | + $res['logo_' . $etat] = $logo[0]; |
|
| 118 | + } |
|
| 119 | + } |
|
| 120 | + // pas de logo_on -> pas de formulaire pour le survol |
|
| 121 | + if (!isset($res['logo_on'])) { |
|
| 122 | + $res['logo_survol'] = ''; |
|
| 123 | + } elseif (!isset($res['logo_off']) and _request('logo_up')) { |
|
| 124 | + $res['_show_upload_off'] = ' '; |
|
| 125 | + } |
|
| 126 | 126 | |
| 127 | - // si le logo n'est pas editable et qu'il n'y en a pas, on affiche pas du tout le formulaire |
|
| 128 | - if (!$res['editable'] |
|
| 129 | - and !isset($res['logo_off']) |
|
| 130 | - and !isset($res['logo_on']) |
|
| 131 | - ) { |
|
| 132 | - return false; |
|
| 133 | - } |
|
| 127 | + // si le logo n'est pas editable et qu'il n'y en a pas, on affiche pas du tout le formulaire |
|
| 128 | + if (!$res['editable'] |
|
| 129 | + and !isset($res['logo_off']) |
|
| 130 | + and !isset($res['logo_on']) |
|
| 131 | + ) { |
|
| 132 | + return false; |
|
| 133 | + } |
|
| 134 | 134 | |
| 135 | - return $res; |
|
| 135 | + return $res; |
|
| 136 | 136 | } |
| 137 | 137 | |
| 138 | 138 | /** |
@@ -146,7 +146,7 @@ discard block |
||
| 146 | 146 | * @return string Hash du formulaire |
| 147 | 147 | */ |
| 148 | 148 | function formulaires_editer_logo_identifier_dist($objet, $id_objet, $retour = '', $options = array()) { |
| 149 | - return serialize(array($objet, $id_objet)); |
|
| 149 | + return serialize(array($objet, $id_objet)); |
|
| 150 | 150 | } |
| 151 | 151 | |
| 152 | 152 | /** |
@@ -162,29 +162,29 @@ discard block |
||
| 162 | 162 | * @return array Erreurs du formulaire |
| 163 | 163 | */ |
| 164 | 164 | function formulaires_editer_logo_verifier_dist($objet, $id_objet, $retour = '', $options = array()) { |
| 165 | - $erreurs = array(); |
|
| 166 | - // verifier les extensions |
|
| 167 | - $sources = formulaire_editer_logo_get_sources(); |
|
| 168 | - include_spip('action/editer_logo'); |
|
| 169 | - $extensions_possibles = $GLOBALS['formats_logos']; |
|
| 170 | - if (in_array('jpg', $extensions_possibles)) { |
|
| 171 | - $extensions_possibles[] = 'jpeg'; |
|
| 172 | - } |
|
| 173 | - foreach ($sources as $etat => $file) { |
|
| 174 | - // seulement si une reception correcte a eu lieu |
|
| 175 | - if ($file and $file['error'] == 0) { |
|
| 176 | - if (!in_array( |
|
| 177 | - strtolower(pathinfo($file['name'], PATHINFO_EXTENSION)), |
|
| 178 | - $extensions_possibles |
|
| 179 | - )) { |
|
| 180 | - $erreurs['logo_' . $etat] = _L('Extension non reconnue'); |
|
| 181 | - } |
|
| 182 | - } elseif ($file and $file['error'] != 0 and isset($file['msg'])) { |
|
| 183 | - $erreurs['message_erreur'] = $file['msg']; |
|
| 184 | - } |
|
| 185 | - } |
|
| 165 | + $erreurs = array(); |
|
| 166 | + // verifier les extensions |
|
| 167 | + $sources = formulaire_editer_logo_get_sources(); |
|
| 168 | + include_spip('action/editer_logo'); |
|
| 169 | + $extensions_possibles = $GLOBALS['formats_logos']; |
|
| 170 | + if (in_array('jpg', $extensions_possibles)) { |
|
| 171 | + $extensions_possibles[] = 'jpeg'; |
|
| 172 | + } |
|
| 173 | + foreach ($sources as $etat => $file) { |
|
| 174 | + // seulement si une reception correcte a eu lieu |
|
| 175 | + if ($file and $file['error'] == 0) { |
|
| 176 | + if (!in_array( |
|
| 177 | + strtolower(pathinfo($file['name'], PATHINFO_EXTENSION)), |
|
| 178 | + $extensions_possibles |
|
| 179 | + )) { |
|
| 180 | + $erreurs['logo_' . $etat] = _L('Extension non reconnue'); |
|
| 181 | + } |
|
| 182 | + } elseif ($file and $file['error'] != 0 and isset($file['msg'])) { |
|
| 183 | + $erreurs['message_erreur'] = $file['msg']; |
|
| 184 | + } |
|
| 185 | + } |
|
| 186 | 186 | |
| 187 | - return $erreurs; |
|
| 187 | + return $erreurs; |
|
| 188 | 188 | } |
| 189 | 189 | |
| 190 | 190 | /** |
@@ -200,47 +200,47 @@ discard block |
||
| 200 | 200 | * @return array Retour des traitements |
| 201 | 201 | */ |
| 202 | 202 | function formulaires_editer_logo_traiter_dist($objet, $id_objet, $retour = '', $options = array()) { |
| 203 | - $res = array('editable' => ' '); |
|
| 203 | + $res = array('editable' => ' '); |
|
| 204 | 204 | |
| 205 | - // pas dans une boucle ? formulaire pour le logo du site |
|
| 206 | - // dans ce cas, il faut chercher un 'siteon0.ext' |
|
| 207 | - if (!$objet) { |
|
| 208 | - $objet = 'site'; |
|
| 209 | - } |
|
| 205 | + // pas dans une boucle ? formulaire pour le logo du site |
|
| 206 | + // dans ce cas, il faut chercher un 'siteon0.ext' |
|
| 207 | + if (!$objet) { |
|
| 208 | + $objet = 'site'; |
|
| 209 | + } |
|
| 210 | 210 | |
| 211 | - include_spip('action/editer_logo'); |
|
| 211 | + include_spip('action/editer_logo'); |
|
| 212 | 212 | |
| 213 | - // effectuer la suppression si demandee d'un logo |
|
| 214 | - $on = _request('supprimer_logo_on'); |
|
| 215 | - if ($on or _request('supprimer_logo_off')) { |
|
| 216 | - logo_supprimer($objet, $id_objet, $on ? 'on' : 'off'); |
|
| 217 | - $res['message_ok'] = ''; // pas besoin de message : la validation est visuelle |
|
| 218 | - set_request('logo_up', ' '); |
|
| 219 | - } // sinon supprimer ancien logo puis copier le nouveau |
|
| 220 | - else { |
|
| 221 | - $sources = formulaire_editer_logo_get_sources(); |
|
| 222 | - foreach ($sources as $etat => $file) { |
|
| 223 | - if ($file and $file['error'] == 0) { |
|
| 224 | - if ($err = logo_modifier($objet, $id_objet, $etat, $file)) { |
|
| 225 | - $res['message_erreur'] = $err; |
|
| 226 | - } else { |
|
| 227 | - $res['message_ok'] = ''; |
|
| 228 | - } // pas besoin de message : la validation est visuelle |
|
| 229 | - set_request('logo_up', ' '); |
|
| 230 | - } |
|
| 231 | - } |
|
| 232 | - } |
|
| 213 | + // effectuer la suppression si demandee d'un logo |
|
| 214 | + $on = _request('supprimer_logo_on'); |
|
| 215 | + if ($on or _request('supprimer_logo_off')) { |
|
| 216 | + logo_supprimer($objet, $id_objet, $on ? 'on' : 'off'); |
|
| 217 | + $res['message_ok'] = ''; // pas besoin de message : la validation est visuelle |
|
| 218 | + set_request('logo_up', ' '); |
|
| 219 | + } // sinon supprimer ancien logo puis copier le nouveau |
|
| 220 | + else { |
|
| 221 | + $sources = formulaire_editer_logo_get_sources(); |
|
| 222 | + foreach ($sources as $etat => $file) { |
|
| 223 | + if ($file and $file['error'] == 0) { |
|
| 224 | + if ($err = logo_modifier($objet, $id_objet, $etat, $file)) { |
|
| 225 | + $res['message_erreur'] = $err; |
|
| 226 | + } else { |
|
| 227 | + $res['message_ok'] = ''; |
|
| 228 | + } // pas besoin de message : la validation est visuelle |
|
| 229 | + set_request('logo_up', ' '); |
|
| 230 | + } |
|
| 231 | + } |
|
| 232 | + } |
|
| 233 | 233 | |
| 234 | - // Invalider les caches de l'objet |
|
| 235 | - include_spip('inc/invalideur'); |
|
| 236 | - suivre_invalideur("id='$objet/$id_objet'"); |
|
| 234 | + // Invalider les caches de l'objet |
|
| 235 | + include_spip('inc/invalideur'); |
|
| 236 | + suivre_invalideur("id='$objet/$id_objet'"); |
|
| 237 | 237 | |
| 238 | 238 | |
| 239 | - if ($retour) { |
|
| 240 | - $res['redirect'] = $retour; |
|
| 241 | - } |
|
| 239 | + if ($retour) { |
|
| 240 | + $res['redirect'] = $retour; |
|
| 241 | + } |
|
| 242 | 242 | |
| 243 | - return $res; |
|
| 243 | + return $res; |
|
| 244 | 244 | } |
| 245 | 245 | |
| 246 | 246 | |
@@ -252,29 +252,29 @@ discard block |
||
| 252 | 252 | * Sources des fichiers dans les clés `on` ou `off` |
| 253 | 253 | */ |
| 254 | 254 | function formulaire_editer_logo_get_sources() { |
| 255 | - if (!$_FILES) { |
|
| 256 | - $_FILES = isset($GLOBALS['HTTP_POST_FILES']) ? $GLOBALS['HTTP_POST_FILES'] : array(); |
|
| 257 | - } |
|
| 258 | - if (!is_array($_FILES)) { |
|
| 259 | - return array(); |
|
| 260 | - } |
|
| 255 | + if (!$_FILES) { |
|
| 256 | + $_FILES = isset($GLOBALS['HTTP_POST_FILES']) ? $GLOBALS['HTTP_POST_FILES'] : array(); |
|
| 257 | + } |
|
| 258 | + if (!is_array($_FILES)) { |
|
| 259 | + return array(); |
|
| 260 | + } |
|
| 261 | 261 | |
| 262 | - include_spip('inc/documents'); |
|
| 263 | - $sources = array(); |
|
| 264 | - foreach (array('on', 'off') as $etat) { |
|
| 265 | - $logo = 'logo_' . $etat; |
|
| 266 | - if (isset($_FILES[$logo])) { |
|
| 267 | - if ($_FILES[$logo]['error'] == 0) { |
|
| 268 | - $sources[$etat] = $_FILES[$logo]; |
|
| 269 | - } elseif ($_FILES[$logo]['error'] != 0) { |
|
| 270 | - $msg = check_upload_error($_FILES[$logo]['error'], false, true); |
|
| 271 | - if ($msg and is_string($msg)) { |
|
| 272 | - $sources[$etat] = $_FILES[$logo]; |
|
| 273 | - $sources[$etat]['msg'] = $msg; |
|
| 274 | - } |
|
| 275 | - } |
|
| 276 | - } |
|
| 277 | - } |
|
| 262 | + include_spip('inc/documents'); |
|
| 263 | + $sources = array(); |
|
| 264 | + foreach (array('on', 'off') as $etat) { |
|
| 265 | + $logo = 'logo_' . $etat; |
|
| 266 | + if (isset($_FILES[$logo])) { |
|
| 267 | + if ($_FILES[$logo]['error'] == 0) { |
|
| 268 | + $sources[$etat] = $_FILES[$logo]; |
|
| 269 | + } elseif ($_FILES[$logo]['error'] != 0) { |
|
| 270 | + $msg = check_upload_error($_FILES[$logo]['error'], false, true); |
|
| 271 | + if ($msg and is_string($msg)) { |
|
| 272 | + $sources[$etat] = $_FILES[$logo]; |
|
| 273 | + $sources[$etat]['msg'] = $msg; |
|
| 274 | + } |
|
| 275 | + } |
|
| 276 | + } |
|
| 277 | + } |
|
| 278 | 278 | |
| 279 | - return $sources; |
|
| 279 | + return $sources; |
|
| 280 | 280 | } |
@@ -15,7 +15,7 @@ discard block |
||
| 15 | 15 | * @package SPIP\Core\Formulaires |
| 16 | 16 | **/ |
| 17 | 17 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 18 | - return; |
|
| 18 | + return; |
|
| 19 | 19 | } |
| 20 | 20 | |
| 21 | 21 | |
@@ -35,25 +35,25 @@ discard block |
||
| 35 | 35 | * ($table_source,$objet,$id_objet,$objet_lien) |
| 36 | 36 | */ |
| 37 | 37 | function determine_source_lien_objet($a, $b, $c) { |
| 38 | - $table_source = $objet_lien = $objet = $id_objet = null; |
|
| 39 | - // auteurs, article, 23 : |
|
| 40 | - // associer des auteurs à l'article 23, sur la table pivot spip_auteurs_liens |
|
| 41 | - if (is_numeric($c) and !is_numeric($b)) { |
|
| 42 | - $table_source = table_objet($a); |
|
| 43 | - $objet_lien = objet_type($a); |
|
| 44 | - $objet = objet_type($b); |
|
| 45 | - $id_objet = $c; |
|
| 46 | - } |
|
| 47 | - // article, 23, auteurs |
|
| 48 | - // associer des auteurs à l'article 23, sur la table pivot spip_articles_liens |
|
| 49 | - if (is_numeric($b) and !is_numeric($c)) { |
|
| 50 | - $table_source = table_objet($c); |
|
| 51 | - $objet_lien = objet_type($a); |
|
| 52 | - $objet = objet_type($a); |
|
| 53 | - $id_objet = $b; |
|
| 54 | - } |
|
| 55 | - |
|
| 56 | - return array($table_source, $objet, $id_objet, $objet_lien); |
|
| 38 | + $table_source = $objet_lien = $objet = $id_objet = null; |
|
| 39 | + // auteurs, article, 23 : |
|
| 40 | + // associer des auteurs à l'article 23, sur la table pivot spip_auteurs_liens |
|
| 41 | + if (is_numeric($c) and !is_numeric($b)) { |
|
| 42 | + $table_source = table_objet($a); |
|
| 43 | + $objet_lien = objet_type($a); |
|
| 44 | + $objet = objet_type($b); |
|
| 45 | + $id_objet = $c; |
|
| 46 | + } |
|
| 47 | + // article, 23, auteurs |
|
| 48 | + // associer des auteurs à l'article 23, sur la table pivot spip_articles_liens |
|
| 49 | + if (is_numeric($b) and !is_numeric($c)) { |
|
| 50 | + $table_source = table_objet($c); |
|
| 51 | + $objet_lien = objet_type($a); |
|
| 52 | + $objet = objet_type($a); |
|
| 53 | + $id_objet = $b; |
|
| 54 | + } |
|
| 55 | + |
|
| 56 | + return array($table_source, $objet, $id_objet, $objet_lien); |
|
| 57 | 57 | } |
| 58 | 58 | |
| 59 | 59 | /** |
@@ -79,91 +79,91 @@ discard block |
||
| 79 | 79 | */ |
| 80 | 80 | function formulaires_editer_liens_charger_dist($a, $b, $c, $options = array()) { |
| 81 | 81 | |
| 82 | - // compat avec ancienne signature ou le 4eme argument est $editable |
|
| 83 | - if (!is_array($options)) { |
|
| 84 | - $options = array('editable' => $options); |
|
| 85 | - } elseif (!isset($options['editable'])) { |
|
| 86 | - $options['editable'] = true; |
|
| 87 | - } |
|
| 88 | - |
|
| 89 | - $editable = $options['editable']; |
|
| 90 | - |
|
| 91 | - list($table_source, $objet, $id_objet, $objet_lien) = determine_source_lien_objet($a, $b, $c); |
|
| 92 | - if (!$table_source or !$objet or !$objet_lien or !$id_objet) { |
|
| 93 | - return false; |
|
| 94 | - } |
|
| 95 | - |
|
| 96 | - $objet_source = objet_type($table_source); |
|
| 97 | - $table_sql_source = table_objet_sql($objet_source); |
|
| 98 | - |
|
| 99 | - // verifier existence de la table xxx_liens |
|
| 100 | - include_spip('action/editer_liens'); |
|
| 101 | - if (!objet_associable($objet_lien)) { |
|
| 102 | - return false; |
|
| 103 | - } |
|
| 104 | - |
|
| 105 | - // L'éditabilité :) est définie par un test permanent (par exemple "associermots") ET le 4ème argument |
|
| 106 | - include_spip('inc/autoriser'); |
|
| 107 | - $editable = ($editable and autoriser('associer' . $table_source, $objet, $id_objet) |
|
| 108 | - and autoriser('modifier', $objet, $id_objet)); |
|
| 109 | - |
|
| 110 | - if (!$editable and !count(objet_trouver_liens( |
|
| 111 | - array($objet_lien => '*'), |
|
| 112 | - array(($objet_lien == $objet_source ? $objet : $objet_source) => $id_objet) |
|
| 113 | - ))) { |
|
| 114 | - return false; |
|
| 115 | - } |
|
| 116 | - |
|
| 117 | - // squelettes de vue et de d'association |
|
| 118 | - // ils sont différents si des rôles sont définis. |
|
| 119 | - $skel_vue = $table_source . '_lies'; |
|
| 120 | - $skel_ajout = $table_source . '_associer'; |
|
| 121 | - |
|
| 122 | - // description des roles |
|
| 123 | - include_spip('inc/roles'); |
|
| 124 | - if ($roles = roles_presents($objet_source, $objet)) { |
|
| 125 | - // on demande de nouveaux squelettes en conséquence |
|
| 126 | - $skel_vue = $table_source . '_roles_lies'; |
|
| 127 | - $skel_ajout = $table_source . '_roles_associer'; |
|
| 128 | - } |
|
| 129 | - |
|
| 130 | - $oups = _request('_oups'); |
|
| 131 | - if (unserialize(base64_decode($oups))) { |
|
| 132 | - // on est bon, rien a faire |
|
| 133 | - } |
|
| 134 | - elseif(unserialize($oups)) { |
|
| 135 | - // il faut encoder |
|
| 136 | - $oups = base64_encode($oups); |
|
| 137 | - } |
|
| 138 | - else { |
|
| 139 | - $oups = ''; |
|
| 140 | - } |
|
| 141 | - $valeurs = array( |
|
| 142 | - 'id' => "$table_source-$objet-$id_objet-$objet_lien", // identifiant unique pour les id du form |
|
| 143 | - '_vue_liee' => $skel_vue, |
|
| 144 | - '_vue_ajout' => $skel_ajout, |
|
| 145 | - '_objet_lien' => $objet_lien, |
|
| 146 | - 'id_lien_ajoute' => _request('id_lien_ajoute'), |
|
| 147 | - 'objet' => $objet, |
|
| 148 | - 'id_objet' => $id_objet, |
|
| 149 | - 'objet_source' => $objet_source, |
|
| 150 | - 'table_source' => $table_source, |
|
| 151 | - 'recherche' => '', |
|
| 152 | - 'visible' => 0, |
|
| 153 | - 'ajouter_lien' => '', |
|
| 154 | - 'supprimer_lien' => '', |
|
| 155 | - 'qualifier_lien' => '', |
|
| 156 | - 'ordonner_lien' => '', |
|
| 157 | - 'desordonner_liens' => '', |
|
| 158 | - '_roles' => $roles, # description des roles |
|
| 159 | - '_oups' => $oups, |
|
| 160 | - 'editable' => $editable, |
|
| 161 | - ); |
|
| 162 | - |
|
| 163 | - // les options non definies dans $valeurs sont passees telles quelles au formulaire html |
|
| 164 | - $valeurs = array_merge($options, $valeurs); |
|
| 165 | - |
|
| 166 | - return $valeurs; |
|
| 82 | + // compat avec ancienne signature ou le 4eme argument est $editable |
|
| 83 | + if (!is_array($options)) { |
|
| 84 | + $options = array('editable' => $options); |
|
| 85 | + } elseif (!isset($options['editable'])) { |
|
| 86 | + $options['editable'] = true; |
|
| 87 | + } |
|
| 88 | + |
|
| 89 | + $editable = $options['editable']; |
|
| 90 | + |
|
| 91 | + list($table_source, $objet, $id_objet, $objet_lien) = determine_source_lien_objet($a, $b, $c); |
|
| 92 | + if (!$table_source or !$objet or !$objet_lien or !$id_objet) { |
|
| 93 | + return false; |
|
| 94 | + } |
|
| 95 | + |
|
| 96 | + $objet_source = objet_type($table_source); |
|
| 97 | + $table_sql_source = table_objet_sql($objet_source); |
|
| 98 | + |
|
| 99 | + // verifier existence de la table xxx_liens |
|
| 100 | + include_spip('action/editer_liens'); |
|
| 101 | + if (!objet_associable($objet_lien)) { |
|
| 102 | + return false; |
|
| 103 | + } |
|
| 104 | + |
|
| 105 | + // L'éditabilité :) est définie par un test permanent (par exemple "associermots") ET le 4ème argument |
|
| 106 | + include_spip('inc/autoriser'); |
|
| 107 | + $editable = ($editable and autoriser('associer' . $table_source, $objet, $id_objet) |
|
| 108 | + and autoriser('modifier', $objet, $id_objet)); |
|
| 109 | + |
|
| 110 | + if (!$editable and !count(objet_trouver_liens( |
|
| 111 | + array($objet_lien => '*'), |
|
| 112 | + array(($objet_lien == $objet_source ? $objet : $objet_source) => $id_objet) |
|
| 113 | + ))) { |
|
| 114 | + return false; |
|
| 115 | + } |
|
| 116 | + |
|
| 117 | + // squelettes de vue et de d'association |
|
| 118 | + // ils sont différents si des rôles sont définis. |
|
| 119 | + $skel_vue = $table_source . '_lies'; |
|
| 120 | + $skel_ajout = $table_source . '_associer'; |
|
| 121 | + |
|
| 122 | + // description des roles |
|
| 123 | + include_spip('inc/roles'); |
|
| 124 | + if ($roles = roles_presents($objet_source, $objet)) { |
|
| 125 | + // on demande de nouveaux squelettes en conséquence |
|
| 126 | + $skel_vue = $table_source . '_roles_lies'; |
|
| 127 | + $skel_ajout = $table_source . '_roles_associer'; |
|
| 128 | + } |
|
| 129 | + |
|
| 130 | + $oups = _request('_oups'); |
|
| 131 | + if (unserialize(base64_decode($oups))) { |
|
| 132 | + // on est bon, rien a faire |
|
| 133 | + } |
|
| 134 | + elseif(unserialize($oups)) { |
|
| 135 | + // il faut encoder |
|
| 136 | + $oups = base64_encode($oups); |
|
| 137 | + } |
|
| 138 | + else { |
|
| 139 | + $oups = ''; |
|
| 140 | + } |
|
| 141 | + $valeurs = array( |
|
| 142 | + 'id' => "$table_source-$objet-$id_objet-$objet_lien", // identifiant unique pour les id du form |
|
| 143 | + '_vue_liee' => $skel_vue, |
|
| 144 | + '_vue_ajout' => $skel_ajout, |
|
| 145 | + '_objet_lien' => $objet_lien, |
|
| 146 | + 'id_lien_ajoute' => _request('id_lien_ajoute'), |
|
| 147 | + 'objet' => $objet, |
|
| 148 | + 'id_objet' => $id_objet, |
|
| 149 | + 'objet_source' => $objet_source, |
|
| 150 | + 'table_source' => $table_source, |
|
| 151 | + 'recherche' => '', |
|
| 152 | + 'visible' => 0, |
|
| 153 | + 'ajouter_lien' => '', |
|
| 154 | + 'supprimer_lien' => '', |
|
| 155 | + 'qualifier_lien' => '', |
|
| 156 | + 'ordonner_lien' => '', |
|
| 157 | + 'desordonner_liens' => '', |
|
| 158 | + '_roles' => $roles, # description des roles |
|
| 159 | + '_oups' => $oups, |
|
| 160 | + 'editable' => $editable, |
|
| 161 | + ); |
|
| 162 | + |
|
| 163 | + // les options non definies dans $valeurs sont passees telles quelles au formulaire html |
|
| 164 | + $valeurs = array_merge($options, $valeurs); |
|
| 165 | + |
|
| 166 | + return $valeurs; |
|
| 167 | 167 | } |
| 168 | 168 | |
| 169 | 169 | /** |
@@ -207,161 +207,161 @@ discard block |
||
| 207 | 207 | * @return array |
| 208 | 208 | */ |
| 209 | 209 | function formulaires_editer_liens_traiter_dist($a, $b, $c, $options = array()) { |
| 210 | - // compat avec ancienne signature ou le 4eme argument est $editable |
|
| 211 | - if (!is_array($options)) { |
|
| 212 | - $options = array('editable' => $options); |
|
| 213 | - } elseif (!isset($options['editable'])) { |
|
| 214 | - $options['editable'] = true; |
|
| 215 | - } |
|
| 216 | - |
|
| 217 | - $editable = $options['editable']; |
|
| 218 | - |
|
| 219 | - $res = array('editable' => $editable ? true : false); |
|
| 220 | - list($table_source, $objet, $id_objet, $objet_lien) = determine_source_lien_objet($a, $b, $c); |
|
| 221 | - if (!$table_source or !$objet or !$objet_lien) { |
|
| 222 | - return $res; |
|
| 223 | - } |
|
| 224 | - |
|
| 225 | - |
|
| 226 | - if (_request('tout_voir')) { |
|
| 227 | - set_request('recherche', ''); |
|
| 228 | - } |
|
| 229 | - |
|
| 230 | - include_spip('inc/autoriser'); |
|
| 231 | - if (autoriser('modifier', $objet, $id_objet)) { |
|
| 232 | - // annuler les suppressions du coup d'avant ! |
|
| 233 | - if (_request('annuler_oups') |
|
| 234 | - and $oups = _request('_oups') |
|
| 235 | - and $oups = base64_decode($oups) |
|
| 236 | - and $oups = unserialize($oups) |
|
| 237 | - ) { |
|
| 238 | - if ($oups_objets = charger_fonction("editer_liens_oups_{$table_source}_{$objet}_{$objet_lien}", 'action', true)) { |
|
| 239 | - $oups_objets($oups); |
|
| 240 | - } else { |
|
| 241 | - $objet_source = objet_type($table_source); |
|
| 242 | - include_spip('action/editer_liens'); |
|
| 243 | - foreach ($oups as $oup) { |
|
| 244 | - if ($objet_lien == $objet_source) { |
|
| 245 | - objet_associer(array($objet_source => $oup[$objet_source]), array($objet => $oup[$objet]), $oup); |
|
| 246 | - } else { |
|
| 247 | - objet_associer(array($objet => $oup[$objet]), array($objet_source => $oup[$objet_source]), $oup); |
|
| 248 | - } |
|
| 249 | - } |
|
| 250 | - } |
|
| 251 | - # oups ne persiste que pour la derniere action, si suppression |
|
| 252 | - set_request('_oups'); |
|
| 253 | - } |
|
| 254 | - |
|
| 255 | - $supprimer = _request('supprimer_lien'); |
|
| 256 | - $ajouter = _request('ajouter_lien'); |
|
| 257 | - $ordonner = _request('ordonner_lien'); |
|
| 258 | - |
|
| 259 | - if (_request('desordonner_liens')) { |
|
| 260 | - include_spip('action/editer_liens'); |
|
| 261 | - objet_qualifier_liens(array($objet_lien => '*'), array($objet => $id_objet), array('rang_lien' => 0)); |
|
| 262 | - } |
|
| 263 | - |
|
| 264 | - // il est possible de preciser dans une seule variable un remplacement : |
|
| 265 | - // remplacer_lien[old][new] |
|
| 266 | - if ($remplacer = _request('remplacer_lien')) { |
|
| 267 | - foreach ($remplacer as $k => $v) { |
|
| 268 | - if ($old = lien_verifier_action($k, '')) { |
|
| 269 | - foreach (is_array($v) ? $v : array($v) as $kn => $vn) { |
|
| 270 | - if ($new = lien_verifier_action($kn, $vn)) { |
|
| 271 | - $supprimer[$old] = 'x'; |
|
| 272 | - $ajouter[$new] = '+'; |
|
| 273 | - } |
|
| 274 | - } |
|
| 275 | - } |
|
| 276 | - } |
|
| 277 | - } |
|
| 278 | - |
|
| 279 | - if ($supprimer) { |
|
| 280 | - if ($supprimer_objets = charger_fonction( |
|
| 281 | - "editer_liens_supprimer_{$table_source}_{$objet}_{$objet_lien}", |
|
| 282 | - 'action', |
|
| 283 | - true |
|
| 284 | - )) { |
|
| 285 | - $oups = $supprimer_objets($supprimer); |
|
| 286 | - } else { |
|
| 287 | - include_spip('action/editer_liens'); |
|
| 288 | - $oups = array(); |
|
| 289 | - |
|
| 290 | - foreach ($supprimer as $k => $v) { |
|
| 291 | - if ($lien = lien_verifier_action($k, $v)) { |
|
| 292 | - $lien = explode('-', $lien); |
|
| 293 | - list($objet_source, $ids, $objet_lie, $idl, $role) = array_pad($lien, 5, null); |
|
| 294 | - // appliquer une condition sur le rôle si défini ('*' pour tous les roles) |
|
| 295 | - $cond = (!is_null($role) ? array('role' => $role) : array()); |
|
| 296 | - if ($objet_lien == $objet_source) { |
|
| 297 | - $oups = array_merge( |
|
| 298 | - $oups, |
|
| 299 | - objet_trouver_liens(array($objet_source => $ids), array($objet_lie => $idl), $cond) |
|
| 300 | - ); |
|
| 301 | - objet_dissocier(array($objet_source => $ids), array($objet_lie => $idl), $cond); |
|
| 302 | - } else { |
|
| 303 | - $oups = array_merge( |
|
| 304 | - $oups, |
|
| 305 | - objet_trouver_liens(array($objet_lie => $idl), array($objet_source => $ids), $cond) |
|
| 306 | - ); |
|
| 307 | - objet_dissocier(array($objet_lie => $idl), array($objet_source => $ids), $cond); |
|
| 308 | - } |
|
| 309 | - } |
|
| 310 | - } |
|
| 311 | - } |
|
| 312 | - set_request('_oups', $oups ? base64_encode(serialize($oups)) : null); |
|
| 313 | - } |
|
| 314 | - |
|
| 315 | - if ($ajouter) { |
|
| 316 | - if ($ajouter_objets = charger_fonction("editer_liens_ajouter_{$table_source}_{$objet}_{$objet_lien}", 'action', true) |
|
| 317 | - ) { |
|
| 318 | - $ajout_ok = $ajouter_objets($ajouter); |
|
| 319 | - } else { |
|
| 320 | - $ajout_ok = false; |
|
| 321 | - include_spip('action/editer_liens'); |
|
| 322 | - foreach ($ajouter as $k => $v) { |
|
| 323 | - if ($lien = lien_verifier_action($k, $v)) { |
|
| 324 | - $ajout_ok = true; |
|
| 325 | - list($objet1, $ids, $objet2, $idl) = explode('-', $lien); |
|
| 326 | - $qualifs = lien_retrouver_qualif($objet_lien, $lien); |
|
| 327 | - if ($objet_lien == $objet1) { |
|
| 328 | - lien_ajouter_liaisons($objet1, $ids, $objet2, $idl, $qualifs); |
|
| 329 | - } else { |
|
| 330 | - lien_ajouter_liaisons($objet2, $idl, $objet1, $ids, $qualifs); |
|
| 331 | - } |
|
| 332 | - set_request('id_lien_ajoute', $ids); |
|
| 333 | - } |
|
| 334 | - } |
|
| 335 | - } |
|
| 336 | - # oups ne persiste que pour la derniere action, si suppression |
|
| 337 | - # une suppression suivie d'un ajout dans le meme hit est un remplacement |
|
| 338 | - # non annulable ! |
|
| 339 | - if ($ajout_ok) { |
|
| 340 | - set_request('_oups'); |
|
| 341 | - } |
|
| 342 | - } |
|
| 343 | - |
|
| 344 | - if ($ordonner) { |
|
| 345 | - include_spip('action/editer_liens'); |
|
| 346 | - foreach ($ordonner as $k => $rang_lien) { |
|
| 347 | - if ($lien = lien_verifier_action($k, '')) { |
|
| 348 | - list($objet1, $ids, $objet2, $idl) = explode('-', $lien); |
|
| 349 | - $qualif = array('rang_lien' => $rang_lien); |
|
| 350 | - |
|
| 351 | - if ($objet_lien == $objet1) { |
|
| 352 | - objet_qualifier_liens(array($objet1 => $ids), array($objet2 => $idl), $qualif); |
|
| 353 | - } else { |
|
| 354 | - objet_qualifier_liens(array($objet2 => $idl), array($objet1 => $ids), $qualif); |
|
| 355 | - } |
|
| 356 | - set_request('id_lien_ajoute', $ids); |
|
| 357 | - set_request('_oups'); |
|
| 358 | - } |
|
| 359 | - } |
|
| 360 | - } |
|
| 361 | - } |
|
| 362 | - |
|
| 363 | - |
|
| 364 | - return $res; |
|
| 210 | + // compat avec ancienne signature ou le 4eme argument est $editable |
|
| 211 | + if (!is_array($options)) { |
|
| 212 | + $options = array('editable' => $options); |
|
| 213 | + } elseif (!isset($options['editable'])) { |
|
| 214 | + $options['editable'] = true; |
|
| 215 | + } |
|
| 216 | + |
|
| 217 | + $editable = $options['editable']; |
|
| 218 | + |
|
| 219 | + $res = array('editable' => $editable ? true : false); |
|
| 220 | + list($table_source, $objet, $id_objet, $objet_lien) = determine_source_lien_objet($a, $b, $c); |
|
| 221 | + if (!$table_source or !$objet or !$objet_lien) { |
|
| 222 | + return $res; |
|
| 223 | + } |
|
| 224 | + |
|
| 225 | + |
|
| 226 | + if (_request('tout_voir')) { |
|
| 227 | + set_request('recherche', ''); |
|
| 228 | + } |
|
| 229 | + |
|
| 230 | + include_spip('inc/autoriser'); |
|
| 231 | + if (autoriser('modifier', $objet, $id_objet)) { |
|
| 232 | + // annuler les suppressions du coup d'avant ! |
|
| 233 | + if (_request('annuler_oups') |
|
| 234 | + and $oups = _request('_oups') |
|
| 235 | + and $oups = base64_decode($oups) |
|
| 236 | + and $oups = unserialize($oups) |
|
| 237 | + ) { |
|
| 238 | + if ($oups_objets = charger_fonction("editer_liens_oups_{$table_source}_{$objet}_{$objet_lien}", 'action', true)) { |
|
| 239 | + $oups_objets($oups); |
|
| 240 | + } else { |
|
| 241 | + $objet_source = objet_type($table_source); |
|
| 242 | + include_spip('action/editer_liens'); |
|
| 243 | + foreach ($oups as $oup) { |
|
| 244 | + if ($objet_lien == $objet_source) { |
|
| 245 | + objet_associer(array($objet_source => $oup[$objet_source]), array($objet => $oup[$objet]), $oup); |
|
| 246 | + } else { |
|
| 247 | + objet_associer(array($objet => $oup[$objet]), array($objet_source => $oup[$objet_source]), $oup); |
|
| 248 | + } |
|
| 249 | + } |
|
| 250 | + } |
|
| 251 | + # oups ne persiste que pour la derniere action, si suppression |
|
| 252 | + set_request('_oups'); |
|
| 253 | + } |
|
| 254 | + |
|
| 255 | + $supprimer = _request('supprimer_lien'); |
|
| 256 | + $ajouter = _request('ajouter_lien'); |
|
| 257 | + $ordonner = _request('ordonner_lien'); |
|
| 258 | + |
|
| 259 | + if (_request('desordonner_liens')) { |
|
| 260 | + include_spip('action/editer_liens'); |
|
| 261 | + objet_qualifier_liens(array($objet_lien => '*'), array($objet => $id_objet), array('rang_lien' => 0)); |
|
| 262 | + } |
|
| 263 | + |
|
| 264 | + // il est possible de preciser dans une seule variable un remplacement : |
|
| 265 | + // remplacer_lien[old][new] |
|
| 266 | + if ($remplacer = _request('remplacer_lien')) { |
|
| 267 | + foreach ($remplacer as $k => $v) { |
|
| 268 | + if ($old = lien_verifier_action($k, '')) { |
|
| 269 | + foreach (is_array($v) ? $v : array($v) as $kn => $vn) { |
|
| 270 | + if ($new = lien_verifier_action($kn, $vn)) { |
|
| 271 | + $supprimer[$old] = 'x'; |
|
| 272 | + $ajouter[$new] = '+'; |
|
| 273 | + } |
|
| 274 | + } |
|
| 275 | + } |
|
| 276 | + } |
|
| 277 | + } |
|
| 278 | + |
|
| 279 | + if ($supprimer) { |
|
| 280 | + if ($supprimer_objets = charger_fonction( |
|
| 281 | + "editer_liens_supprimer_{$table_source}_{$objet}_{$objet_lien}", |
|
| 282 | + 'action', |
|
| 283 | + true |
|
| 284 | + )) { |
|
| 285 | + $oups = $supprimer_objets($supprimer); |
|
| 286 | + } else { |
|
| 287 | + include_spip('action/editer_liens'); |
|
| 288 | + $oups = array(); |
|
| 289 | + |
|
| 290 | + foreach ($supprimer as $k => $v) { |
|
| 291 | + if ($lien = lien_verifier_action($k, $v)) { |
|
| 292 | + $lien = explode('-', $lien); |
|
| 293 | + list($objet_source, $ids, $objet_lie, $idl, $role) = array_pad($lien, 5, null); |
|
| 294 | + // appliquer une condition sur le rôle si défini ('*' pour tous les roles) |
|
| 295 | + $cond = (!is_null($role) ? array('role' => $role) : array()); |
|
| 296 | + if ($objet_lien == $objet_source) { |
|
| 297 | + $oups = array_merge( |
|
| 298 | + $oups, |
|
| 299 | + objet_trouver_liens(array($objet_source => $ids), array($objet_lie => $idl), $cond) |
|
| 300 | + ); |
|
| 301 | + objet_dissocier(array($objet_source => $ids), array($objet_lie => $idl), $cond); |
|
| 302 | + } else { |
|
| 303 | + $oups = array_merge( |
|
| 304 | + $oups, |
|
| 305 | + objet_trouver_liens(array($objet_lie => $idl), array($objet_source => $ids), $cond) |
|
| 306 | + ); |
|
| 307 | + objet_dissocier(array($objet_lie => $idl), array($objet_source => $ids), $cond); |
|
| 308 | + } |
|
| 309 | + } |
|
| 310 | + } |
|
| 311 | + } |
|
| 312 | + set_request('_oups', $oups ? base64_encode(serialize($oups)) : null); |
|
| 313 | + } |
|
| 314 | + |
|
| 315 | + if ($ajouter) { |
|
| 316 | + if ($ajouter_objets = charger_fonction("editer_liens_ajouter_{$table_source}_{$objet}_{$objet_lien}", 'action', true) |
|
| 317 | + ) { |
|
| 318 | + $ajout_ok = $ajouter_objets($ajouter); |
|
| 319 | + } else { |
|
| 320 | + $ajout_ok = false; |
|
| 321 | + include_spip('action/editer_liens'); |
|
| 322 | + foreach ($ajouter as $k => $v) { |
|
| 323 | + if ($lien = lien_verifier_action($k, $v)) { |
|
| 324 | + $ajout_ok = true; |
|
| 325 | + list($objet1, $ids, $objet2, $idl) = explode('-', $lien); |
|
| 326 | + $qualifs = lien_retrouver_qualif($objet_lien, $lien); |
|
| 327 | + if ($objet_lien == $objet1) { |
|
| 328 | + lien_ajouter_liaisons($objet1, $ids, $objet2, $idl, $qualifs); |
|
| 329 | + } else { |
|
| 330 | + lien_ajouter_liaisons($objet2, $idl, $objet1, $ids, $qualifs); |
|
| 331 | + } |
|
| 332 | + set_request('id_lien_ajoute', $ids); |
|
| 333 | + } |
|
| 334 | + } |
|
| 335 | + } |
|
| 336 | + # oups ne persiste que pour la derniere action, si suppression |
|
| 337 | + # une suppression suivie d'un ajout dans le meme hit est un remplacement |
|
| 338 | + # non annulable ! |
|
| 339 | + if ($ajout_ok) { |
|
| 340 | + set_request('_oups'); |
|
| 341 | + } |
|
| 342 | + } |
|
| 343 | + |
|
| 344 | + if ($ordonner) { |
|
| 345 | + include_spip('action/editer_liens'); |
|
| 346 | + foreach ($ordonner as $k => $rang_lien) { |
|
| 347 | + if ($lien = lien_verifier_action($k, '')) { |
|
| 348 | + list($objet1, $ids, $objet2, $idl) = explode('-', $lien); |
|
| 349 | + $qualif = array('rang_lien' => $rang_lien); |
|
| 350 | + |
|
| 351 | + if ($objet_lien == $objet1) { |
|
| 352 | + objet_qualifier_liens(array($objet1 => $ids), array($objet2 => $idl), $qualif); |
|
| 353 | + } else { |
|
| 354 | + objet_qualifier_liens(array($objet2 => $idl), array($objet1 => $ids), $qualif); |
|
| 355 | + } |
|
| 356 | + set_request('id_lien_ajoute', $ids); |
|
| 357 | + set_request('_oups'); |
|
| 358 | + } |
|
| 359 | + } |
|
| 360 | + } |
|
| 361 | + } |
|
| 362 | + |
|
| 363 | + |
|
| 364 | + return $res; |
|
| 365 | 365 | } |
| 366 | 366 | |
| 367 | 367 | |
@@ -384,24 +384,24 @@ discard block |
||
| 384 | 384 | * @return string Action demandée si trouvée, sinon '' |
| 385 | 385 | */ |
| 386 | 386 | function lien_verifier_action($k, $v) { |
| 387 | - $action = ''; |
|
| 388 | - if (preg_match(',^\w+-[\w*]+-[\w*]+-[\w*]+(-[\w*])?,', $k)) { |
|
| 389 | - $action = $k; |
|
| 390 | - } |
|
| 391 | - if (preg_match(',^\w+-[\w*]+-[\w*]+-[\w*]+(-[\w*])?,', $v)) { |
|
| 392 | - if (is_numeric($k)) { |
|
| 393 | - $action = $v; |
|
| 394 | - } |
|
| 395 | - if (_request($k)) { |
|
| 396 | - $action = $v; |
|
| 397 | - } |
|
| 398 | - } |
|
| 399 | - // ajout un role null fictif (plus pratique) si pas défini |
|
| 400 | - if ($action and count(explode('-', $action)) == 4) { |
|
| 401 | - $action .= '-'; |
|
| 402 | - } |
|
| 403 | - |
|
| 404 | - return $action; |
|
| 387 | + $action = ''; |
|
| 388 | + if (preg_match(',^\w+-[\w*]+-[\w*]+-[\w*]+(-[\w*])?,', $k)) { |
|
| 389 | + $action = $k; |
|
| 390 | + } |
|
| 391 | + if (preg_match(',^\w+-[\w*]+-[\w*]+-[\w*]+(-[\w*])?,', $v)) { |
|
| 392 | + if (is_numeric($k)) { |
|
| 393 | + $action = $v; |
|
| 394 | + } |
|
| 395 | + if (_request($k)) { |
|
| 396 | + $action = $v; |
|
| 397 | + } |
|
| 398 | + } |
|
| 399 | + // ajout un role null fictif (plus pratique) si pas défini |
|
| 400 | + if ($action and count(explode('-', $action)) == 4) { |
|
| 401 | + $action .= '-'; |
|
| 402 | + } |
|
| 403 | + |
|
| 404 | + return $action; |
|
| 405 | 405 | } |
| 406 | 406 | |
| 407 | 407 | |
@@ -417,65 +417,65 @@ discard block |
||
| 417 | 417 | * Liste des qualifs pour chaque lien. Tableau vide s'il n'y en a pas. |
| 418 | 418 | **/ |
| 419 | 419 | function lien_retrouver_qualif($objet_lien, $lien) { |
| 420 | - // un role est défini dans la liaison |
|
| 421 | - $defs = explode('-', $lien); |
|
| 422 | - list($objet1, , $objet2, , $role) = array_pad($defs, 5, null); |
|
| 423 | - if ($objet_lien == $objet1) { |
|
| 424 | - $colonne_role = roles_colonne($objet1, $objet2); |
|
| 425 | - } else { |
|
| 426 | - $colonne_role = roles_colonne($objet2, $objet1); |
|
| 427 | - } |
|
| 428 | - |
|
| 429 | - // cas ou le role est defini en 5e argument de l'action sur le lien (suppression, ajout rapide sans autre attribut) |
|
| 430 | - if ($role) { |
|
| 431 | - return array( |
|
| 432 | - // un seul lien avec ce role |
|
| 433 | - array($colonne_role => $role) |
|
| 434 | - ); |
|
| 435 | - } |
|
| 436 | - |
|
| 437 | - // retrouver les rôles postés pour cette liaison, s'il y en a. |
|
| 438 | - $qualifier_lien = _request('qualifier_lien'); |
|
| 439 | - if (!$qualifier_lien or !is_array($qualifier_lien)) { |
|
| 440 | - return array(); |
|
| 441 | - } |
|
| 442 | - |
|
| 443 | - // pas avec l'action complete (incluant le role) |
|
| 444 | - $qualif = array(); |
|
| 445 | - if ((!isset($qualifier_lien[$lien]) or !$qualif = $qualifier_lien[$lien]) |
|
| 446 | - and count($defs) == 5 |
|
| 447 | - ) { |
|
| 448 | - // on tente avec l'action sans le role |
|
| 449 | - array_pop($defs); |
|
| 450 | - $lien = implode('-', $defs); |
|
| 451 | - if (!isset($qualifier_lien[$lien]) or !$qualif = $qualifier_lien[$lien]) { |
|
| 452 | - $qualif = array(); |
|
| 453 | - } |
|
| 454 | - } |
|
| 455 | - |
|
| 456 | - // $qualif de la forme array(role=>array(...),valeur=>array(...),....) |
|
| 457 | - // on le reforme en array(array(role=>..,valeur=>..,..),array(role=>..,valeur=>..,..),...) |
|
| 458 | - $qualifs = array(); |
|
| 459 | - while (count($qualif)) { |
|
| 460 | - $q = array(); |
|
| 461 | - foreach ($qualif as $att => $values) { |
|
| 462 | - if (is_array($values)) { |
|
| 463 | - $q[$att] = array_shift($qualif[$att]); |
|
| 464 | - if (!count($qualif[$att])) { |
|
| 465 | - unset($qualif[$att]); |
|
| 466 | - } |
|
| 467 | - } else { |
|
| 468 | - $q[$att] = $values; |
|
| 469 | - unset($qualif[$att]); |
|
| 470 | - } |
|
| 471 | - } |
|
| 472 | - // pas de rôle vide |
|
| 473 | - if (!$colonne_role or !isset($q[$colonne_role]) or $q[$colonne_role]) { |
|
| 474 | - $qualifs[] = $q; |
|
| 475 | - } |
|
| 476 | - } |
|
| 477 | - |
|
| 478 | - return $qualifs; |
|
| 420 | + // un role est défini dans la liaison |
|
| 421 | + $defs = explode('-', $lien); |
|
| 422 | + list($objet1, , $objet2, , $role) = array_pad($defs, 5, null); |
|
| 423 | + if ($objet_lien == $objet1) { |
|
| 424 | + $colonne_role = roles_colonne($objet1, $objet2); |
|
| 425 | + } else { |
|
| 426 | + $colonne_role = roles_colonne($objet2, $objet1); |
|
| 427 | + } |
|
| 428 | + |
|
| 429 | + // cas ou le role est defini en 5e argument de l'action sur le lien (suppression, ajout rapide sans autre attribut) |
|
| 430 | + if ($role) { |
|
| 431 | + return array( |
|
| 432 | + // un seul lien avec ce role |
|
| 433 | + array($colonne_role => $role) |
|
| 434 | + ); |
|
| 435 | + } |
|
| 436 | + |
|
| 437 | + // retrouver les rôles postés pour cette liaison, s'il y en a. |
|
| 438 | + $qualifier_lien = _request('qualifier_lien'); |
|
| 439 | + if (!$qualifier_lien or !is_array($qualifier_lien)) { |
|
| 440 | + return array(); |
|
| 441 | + } |
|
| 442 | + |
|
| 443 | + // pas avec l'action complete (incluant le role) |
|
| 444 | + $qualif = array(); |
|
| 445 | + if ((!isset($qualifier_lien[$lien]) or !$qualif = $qualifier_lien[$lien]) |
|
| 446 | + and count($defs) == 5 |
|
| 447 | + ) { |
|
| 448 | + // on tente avec l'action sans le role |
|
| 449 | + array_pop($defs); |
|
| 450 | + $lien = implode('-', $defs); |
|
| 451 | + if (!isset($qualifier_lien[$lien]) or !$qualif = $qualifier_lien[$lien]) { |
|
| 452 | + $qualif = array(); |
|
| 453 | + } |
|
| 454 | + } |
|
| 455 | + |
|
| 456 | + // $qualif de la forme array(role=>array(...),valeur=>array(...),....) |
|
| 457 | + // on le reforme en array(array(role=>..,valeur=>..,..),array(role=>..,valeur=>..,..),...) |
|
| 458 | + $qualifs = array(); |
|
| 459 | + while (count($qualif)) { |
|
| 460 | + $q = array(); |
|
| 461 | + foreach ($qualif as $att => $values) { |
|
| 462 | + if (is_array($values)) { |
|
| 463 | + $q[$att] = array_shift($qualif[$att]); |
|
| 464 | + if (!count($qualif[$att])) { |
|
| 465 | + unset($qualif[$att]); |
|
| 466 | + } |
|
| 467 | + } else { |
|
| 468 | + $q[$att] = $values; |
|
| 469 | + unset($qualif[$att]); |
|
| 470 | + } |
|
| 471 | + } |
|
| 472 | + // pas de rôle vide |
|
| 473 | + if (!$colonne_role or !isset($q[$colonne_role]) or $q[$colonne_role]) { |
|
| 474 | + $qualifs[] = $q; |
|
| 475 | + } |
|
| 476 | + } |
|
| 477 | + |
|
| 478 | + return $qualifs; |
|
| 479 | 479 | } |
| 480 | 480 | |
| 481 | 481 | /** |
@@ -494,12 +494,12 @@ discard block |
||
| 494 | 494 | **/ |
| 495 | 495 | function lien_ajouter_liaisons($objet_source, $ids, $objet_lien, $idl, $qualifs) { |
| 496 | 496 | |
| 497 | - // retrouver la colonne de roles s'il y en a a lier |
|
| 498 | - if (is_array($qualifs) and count($qualifs)) { |
|
| 499 | - foreach ($qualifs as $qualif) { |
|
| 500 | - objet_associer(array($objet_source => $ids), array($objet_lien => $idl), $qualif); |
|
| 501 | - } |
|
| 502 | - } else { |
|
| 503 | - objet_associer(array($objet_source => $ids), array($objet_lien => $idl)); |
|
| 504 | - } |
|
| 497 | + // retrouver la colonne de roles s'il y en a a lier |
|
| 498 | + if (is_array($qualifs) and count($qualifs)) { |
|
| 499 | + foreach ($qualifs as $qualif) { |
|
| 500 | + objet_associer(array($objet_source => $ids), array($objet_lien => $idl), $qualif); |
|
| 501 | + } |
|
| 502 | + } else { |
|
| 503 | + objet_associer(array($objet_source => $ids), array($objet_lien => $idl)); |
|
| 504 | + } |
|
| 505 | 505 | } |
@@ -17,7 +17,7 @@ discard block |
||
| 17 | 17 | **/ |
| 18 | 18 | |
| 19 | 19 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 20 | - return; |
|
| 20 | + return; |
|
| 21 | 21 | } |
| 22 | 22 | |
| 23 | 23 | include_spip('inc/actions'); |
@@ -39,64 +39,64 @@ discard block |
||
| 39 | 39 | * Contexte à transmettre au squelette du formulaire sinon |
| 40 | 40 | */ |
| 41 | 41 | function formulaires_traduire_charger_dist($objet, $id_objet, $retour = '', $traduire = true) { |
| 42 | - if (!intval($id_objet)) { |
|
| 43 | - return false; |
|
| 44 | - } |
|
| 45 | - $valeurs = formulaires_editer_objet_charger($objet, $id_objet, null, 0, $retour, ''); |
|
| 46 | - // verifier que l'objet indique possede bien des champs id_trad et lang |
|
| 47 | - // attention, charger renomme lang => langue pour ne pas perturber la langue d'affichage du squelette |
|
| 48 | - if (!isset($valeurs['langue'])) { |
|
| 49 | - return false; |
|
| 50 | - } |
|
| 51 | - |
|
| 52 | - $valeurs['editable'] = autoriser('changerlangue', $objet, $id_objet); |
|
| 53 | - $valeurs['_langue'] = ''; |
|
| 54 | - $langue_parent = ''; |
|
| 55 | - $id_parent = ''; |
|
| 56 | - if (isset($valeurs['id_rubrique'])) { |
|
| 57 | - $id_parent = $valeurs['id_rubrique']; |
|
| 58 | - } |
|
| 59 | - if (isset($valeurs['id_parent'])) { |
|
| 60 | - $id_parent = $valeurs['id_parent']; |
|
| 61 | - } |
|
| 62 | - if ($id_parent) { |
|
| 63 | - $langue_parent = sql_getfetsel('lang', 'spip_rubriques', 'id_rubrique=' . intval($id_parent)); |
|
| 64 | - } |
|
| 65 | - |
|
| 66 | - if (!$langue_parent) { |
|
| 67 | - $langue_parent = $GLOBALS['meta']['langue_site']; |
|
| 68 | - } |
|
| 69 | - if ($valeurs['editable'] |
|
| 70 | - and in_array(table_objet_sql($objet), explode(',', $GLOBALS['meta']['multi_objets'])) |
|
| 71 | - ) { |
|
| 72 | - $valeurs['_langue'] = $valeurs['langue']; |
|
| 73 | - } |
|
| 74 | - $valeurs['langue_parent'] = $langue_parent; |
|
| 75 | - |
|
| 76 | - $valeurs['_objet'] = $objet; |
|
| 77 | - $valeurs['_id_objet'] = $id_objet; |
|
| 78 | - $valeurs['changer_lang'] = ''; |
|
| 79 | - |
|
| 80 | - |
|
| 81 | - $valeurs['_traduisible'] = autoriser('changertraduction', $objet, $id_objet); |
|
| 82 | - $valeurs['_traduire'] = ''; |
|
| 83 | - if (isset($valeurs['id_trad'])) { |
|
| 84 | - $valeurs['_traduire'] = ($traduire ? ' ' : ''); |
|
| 85 | - $valeurs['_vue_traductions'] = 'prive/objets/liste/' . (trouver_fond( |
|
| 86 | - $f = table_objet($objet) . '-trad', |
|
| 87 | - 'prive/objets/liste' |
|
| 88 | - ) ? $f : 'objets-trad'); |
|
| 89 | - // pour afficher la liste des trad sur la base de l'id_trad en base |
|
| 90 | - // independamment d'une saisie en cours sur id_trad |
|
| 91 | - $valeurs['_lister_id_trad'] = $valeurs['id_trad']; |
|
| 92 | - $valeurs['_id_parent'] = $id_parent; |
|
| 93 | - } |
|
| 94 | - |
|
| 95 | - $valeurs['_saisie_en_cours'] = (!_request('annuler') and (_request('changer_lang') !== null |
|
| 96 | - or _request('changer_id_trad') !== null)); |
|
| 97 | - $valeurs['_pipeline'] = array('traduire', array('type' => $objet, 'id' => $id_objet)); |
|
| 98 | - |
|
| 99 | - return $valeurs; |
|
| 42 | + if (!intval($id_objet)) { |
|
| 43 | + return false; |
|
| 44 | + } |
|
| 45 | + $valeurs = formulaires_editer_objet_charger($objet, $id_objet, null, 0, $retour, ''); |
|
| 46 | + // verifier que l'objet indique possede bien des champs id_trad et lang |
|
| 47 | + // attention, charger renomme lang => langue pour ne pas perturber la langue d'affichage du squelette |
|
| 48 | + if (!isset($valeurs['langue'])) { |
|
| 49 | + return false; |
|
| 50 | + } |
|
| 51 | + |
|
| 52 | + $valeurs['editable'] = autoriser('changerlangue', $objet, $id_objet); |
|
| 53 | + $valeurs['_langue'] = ''; |
|
| 54 | + $langue_parent = ''; |
|
| 55 | + $id_parent = ''; |
|
| 56 | + if (isset($valeurs['id_rubrique'])) { |
|
| 57 | + $id_parent = $valeurs['id_rubrique']; |
|
| 58 | + } |
|
| 59 | + if (isset($valeurs['id_parent'])) { |
|
| 60 | + $id_parent = $valeurs['id_parent']; |
|
| 61 | + } |
|
| 62 | + if ($id_parent) { |
|
| 63 | + $langue_parent = sql_getfetsel('lang', 'spip_rubriques', 'id_rubrique=' . intval($id_parent)); |
|
| 64 | + } |
|
| 65 | + |
|
| 66 | + if (!$langue_parent) { |
|
| 67 | + $langue_parent = $GLOBALS['meta']['langue_site']; |
|
| 68 | + } |
|
| 69 | + if ($valeurs['editable'] |
|
| 70 | + and in_array(table_objet_sql($objet), explode(',', $GLOBALS['meta']['multi_objets'])) |
|
| 71 | + ) { |
|
| 72 | + $valeurs['_langue'] = $valeurs['langue']; |
|
| 73 | + } |
|
| 74 | + $valeurs['langue_parent'] = $langue_parent; |
|
| 75 | + |
|
| 76 | + $valeurs['_objet'] = $objet; |
|
| 77 | + $valeurs['_id_objet'] = $id_objet; |
|
| 78 | + $valeurs['changer_lang'] = ''; |
|
| 79 | + |
|
| 80 | + |
|
| 81 | + $valeurs['_traduisible'] = autoriser('changertraduction', $objet, $id_objet); |
|
| 82 | + $valeurs['_traduire'] = ''; |
|
| 83 | + if (isset($valeurs['id_trad'])) { |
|
| 84 | + $valeurs['_traduire'] = ($traduire ? ' ' : ''); |
|
| 85 | + $valeurs['_vue_traductions'] = 'prive/objets/liste/' . (trouver_fond( |
|
| 86 | + $f = table_objet($objet) . '-trad', |
|
| 87 | + 'prive/objets/liste' |
|
| 88 | + ) ? $f : 'objets-trad'); |
|
| 89 | + // pour afficher la liste des trad sur la base de l'id_trad en base |
|
| 90 | + // independamment d'une saisie en cours sur id_trad |
|
| 91 | + $valeurs['_lister_id_trad'] = $valeurs['id_trad']; |
|
| 92 | + $valeurs['_id_parent'] = $id_parent; |
|
| 93 | + } |
|
| 94 | + |
|
| 95 | + $valeurs['_saisie_en_cours'] = (!_request('annuler') and (_request('changer_lang') !== null |
|
| 96 | + or _request('changer_id_trad') !== null)); |
|
| 97 | + $valeurs['_pipeline'] = array('traduire', array('type' => $objet, 'id' => $id_objet)); |
|
| 98 | + |
|
| 99 | + return $valeurs; |
|
| 100 | 100 | } |
| 101 | 101 | |
| 102 | 102 | /** |
@@ -114,30 +114,30 @@ discard block |
||
| 114 | 114 | * Erreurs des saisies |
| 115 | 115 | */ |
| 116 | 116 | function formulaires_traduire_verifier_dist($objet, $id_objet, $retour = '', $traduire = true) { |
| 117 | - $erreurs = array(); |
|
| 118 | - |
|
| 119 | - if (null !== _request('changer_lang')) { |
|
| 120 | - $erreurs = formulaires_editer_objet_verifier($objet, $id_objet, array('changer_lang')); |
|
| 121 | - } |
|
| 122 | - |
|
| 123 | - // si id_trad fourni, verifier que cela ne conflicte pas avec un id_trad existant |
|
| 124 | - // et que ca reference bien un objet existant |
|
| 125 | - if ($id_trad = _request('id_trad')) { |
|
| 126 | - $table_objet_sql = table_objet_sql($objet); |
|
| 127 | - $_id_table_objet = id_table_objet($objet); |
|
| 128 | - if (sql_getfetsel( |
|
| 129 | - 'id_trad', |
|
| 130 | - $table_objet_sql, |
|
| 131 | - "$_id_table_objet=" . intval($id_objet) |
|
| 132 | - )) { |
|
| 133 | - // ne devrait jamais arriver sauf concurence de saisie |
|
| 134 | - $erreurs['id_trad'] = _L('Une traduction est deja referencee'); |
|
| 135 | - } elseif (!sql_getfetsel($_id_table_objet, $table_objet_sql, "$_id_table_objet=" . intval($id_trad))) { |
|
| 136 | - $erreurs['id_trad'] = _L('Indiquez un contenu existant'); |
|
| 137 | - } |
|
| 138 | - } |
|
| 139 | - |
|
| 140 | - return $erreurs; |
|
| 117 | + $erreurs = array(); |
|
| 118 | + |
|
| 119 | + if (null !== _request('changer_lang')) { |
|
| 120 | + $erreurs = formulaires_editer_objet_verifier($objet, $id_objet, array('changer_lang')); |
|
| 121 | + } |
|
| 122 | + |
|
| 123 | + // si id_trad fourni, verifier que cela ne conflicte pas avec un id_trad existant |
|
| 124 | + // et que ca reference bien un objet existant |
|
| 125 | + if ($id_trad = _request('id_trad')) { |
|
| 126 | + $table_objet_sql = table_objet_sql($objet); |
|
| 127 | + $_id_table_objet = id_table_objet($objet); |
|
| 128 | + if (sql_getfetsel( |
|
| 129 | + 'id_trad', |
|
| 130 | + $table_objet_sql, |
|
| 131 | + "$_id_table_objet=" . intval($id_objet) |
|
| 132 | + )) { |
|
| 133 | + // ne devrait jamais arriver sauf concurence de saisie |
|
| 134 | + $erreurs['id_trad'] = _L('Une traduction est deja referencee'); |
|
| 135 | + } elseif (!sql_getfetsel($_id_table_objet, $table_objet_sql, "$_id_table_objet=" . intval($id_trad))) { |
|
| 136 | + $erreurs['id_trad'] = _L('Indiquez un contenu existant'); |
|
| 137 | + } |
|
| 138 | + } |
|
| 139 | + |
|
| 140 | + return $erreurs; |
|
| 141 | 141 | } |
| 142 | 142 | |
| 143 | 143 | |
@@ -156,31 +156,31 @@ discard block |
||
| 156 | 156 | * Retour des traitements |
| 157 | 157 | */ |
| 158 | 158 | function formulaires_traduire_traiter_dist($objet, $id_objet, $retour = '', $traduire = true) { |
| 159 | - $res = array(); |
|
| 160 | - if (!_request('annuler') and autoriser('changerlangue', $objet, $id_objet)) { |
|
| 161 | - // action/editer_xxx doit traiter la modif de changer_lang |
|
| 162 | - $res = formulaires_editer_objet_traiter($objet, $id_objet, 0, 0, $retour); |
|
| 163 | - } |
|
| 164 | - if (!_request('annuler') and autoriser('changertraduction', $objet, $id_objet)) { |
|
| 165 | - if ($id_trad = _request('id_trad') or _request('supprimer_trad')) { |
|
| 166 | - $referencer_traduction = charger_fonction('referencer_traduction', 'action'); |
|
| 167 | - $referencer_traduction($objet, $id_objet, intval($id_trad)); // 0 si supprimer_trad |
|
| 168 | - } elseif ($new_id_trad = _request('changer_reference_trad') |
|
| 169 | - and $new_id_trad = array_keys($new_id_trad) |
|
| 170 | - and $new_id_trad = reset($new_id_trad) |
|
| 171 | - ) { |
|
| 172 | - $table_objet_sql = table_objet_sql($objet); |
|
| 173 | - $_id_table_objet = id_table_objet($objet); |
|
| 174 | - if ($id_trad = sql_getfetsel('id_trad', $table_objet_sql, "$_id_table_objet=" . intval($id_objet))) { |
|
| 175 | - $referencer_traduction = charger_fonction('referencer_traduction', 'action'); |
|
| 176 | - $referencer_traduction($objet, $id_trad, $new_id_trad); |
|
| 177 | - } |
|
| 178 | - } |
|
| 179 | - } |
|
| 180 | - $res['editable'] = true; |
|
| 181 | - if (!isset($res['message_erreur'])) { |
|
| 182 | - set_request('annuler', 'annuler'); |
|
| 183 | - } // provoquer la fermeture du forumlaire |
|
| 184 | - |
|
| 185 | - return $res; |
|
| 159 | + $res = array(); |
|
| 160 | + if (!_request('annuler') and autoriser('changerlangue', $objet, $id_objet)) { |
|
| 161 | + // action/editer_xxx doit traiter la modif de changer_lang |
|
| 162 | + $res = formulaires_editer_objet_traiter($objet, $id_objet, 0, 0, $retour); |
|
| 163 | + } |
|
| 164 | + if (!_request('annuler') and autoriser('changertraduction', $objet, $id_objet)) { |
|
| 165 | + if ($id_trad = _request('id_trad') or _request('supprimer_trad')) { |
|
| 166 | + $referencer_traduction = charger_fonction('referencer_traduction', 'action'); |
|
| 167 | + $referencer_traduction($objet, $id_objet, intval($id_trad)); // 0 si supprimer_trad |
|
| 168 | + } elseif ($new_id_trad = _request('changer_reference_trad') |
|
| 169 | + and $new_id_trad = array_keys($new_id_trad) |
|
| 170 | + and $new_id_trad = reset($new_id_trad) |
|
| 171 | + ) { |
|
| 172 | + $table_objet_sql = table_objet_sql($objet); |
|
| 173 | + $_id_table_objet = id_table_objet($objet); |
|
| 174 | + if ($id_trad = sql_getfetsel('id_trad', $table_objet_sql, "$_id_table_objet=" . intval($id_objet))) { |
|
| 175 | + $referencer_traduction = charger_fonction('referencer_traduction', 'action'); |
|
| 176 | + $referencer_traduction($objet, $id_trad, $new_id_trad); |
|
| 177 | + } |
|
| 178 | + } |
|
| 179 | + } |
|
| 180 | + $res['editable'] = true; |
|
| 181 | + if (!isset($res['message_erreur'])) { |
|
| 182 | + set_request('annuler', 'annuler'); |
|
| 183 | + } // provoquer la fermeture du forumlaire |
|
| 184 | + |
|
| 185 | + return $res; |
|
| 186 | 186 | } |
@@ -19,14 +19,14 @@ discard block |
||
| 19 | 19 | /** Drapeau indiquant que l'on est dans l'espace privé */ |
| 20 | 20 | define('_ESPACE_PRIVE', true); |
| 21 | 21 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 22 | - include 'inc_version.php'; |
|
| 22 | + include 'inc_version.php'; |
|
| 23 | 23 | } |
| 24 | 24 | |
| 25 | 25 | // Verification anti magic_quotes_sybase, pour qui addslashes("'") = "''" |
| 26 | 26 | // On prefere la faire ici plutot que dans inc_version, c'est moins souvent et |
| 27 | 27 | // si le reglage est modifie sur un site en prod, ca fait moins mal |
| 28 | 28 | if (addslashes("'") !== "\\'") { |
| 29 | - die('SPIP incompatible magic_quotes_sybase'); |
|
| 29 | + die('SPIP incompatible magic_quotes_sybase'); |
|
| 30 | 30 | } |
| 31 | 31 | |
| 32 | 32 | include_spip('inc/cookie'); |
@@ -42,18 +42,18 @@ discard block |
||
| 42 | 42 | // alors il faut blinder les variables d'URL |
| 43 | 43 | // |
| 44 | 44 | if (autoriser_sans_cookie($exec, false)) { |
| 45 | - if (!isset($reinstall)) { |
|
| 46 | - $reinstall = 'non'; |
|
| 47 | - } |
|
| 48 | - $var_auth = true; |
|
| 45 | + if (!isset($reinstall)) { |
|
| 46 | + $reinstall = 'non'; |
|
| 47 | + } |
|
| 48 | + $var_auth = true; |
|
| 49 | 49 | } else { |
| 50 | - // Authentification, redefinissable |
|
| 51 | - $auth = charger_fonction('auth', 'inc'); |
|
| 52 | - $var_auth = $auth(); |
|
| 53 | - if ($var_auth) { |
|
| 54 | - echo auth_echec($var_auth); |
|
| 55 | - exit; |
|
| 56 | - } |
|
| 50 | + // Authentification, redefinissable |
|
| 51 | + $auth = charger_fonction('auth', 'inc'); |
|
| 52 | + $var_auth = $auth(); |
|
| 53 | + if ($var_auth) { |
|
| 54 | + echo auth_echec($var_auth); |
|
| 55 | + exit; |
|
| 56 | + } |
|
| 57 | 57 | } |
| 58 | 58 | |
| 59 | 59 | // initialiser a la langue par defaut |
@@ -64,29 +64,29 @@ discard block |
||
| 64 | 64 | |
| 65 | 65 | |
| 66 | 66 | if (_request('action') or _request('var_ajax') or _request('formulaire_action')) { |
| 67 | - if (!autoriser_sans_cookie($exec)){ |
|
| 68 | - // Charger l'aiguilleur qui va mettre sur la bonne voie les traitements derogatoires |
|
| 69 | - include_spip('public/aiguiller'); |
|
| 70 | - if ( |
|
| 71 | - // cas des appels actions ?action=xxx |
|
| 72 | - traiter_appels_actions() |
|
| 73 | - or |
|
| 74 | - // cas des hits ajax sur les inclusions ajax |
|
| 75 | - traiter_appels_inclusions_ajax() |
|
| 76 | - or |
|
| 77 | - // cas des formulaires charger/verifier/traiter |
|
| 78 | - traiter_formulaires_dynamiques() |
|
| 79 | - ){ |
|
| 80 | - exit; |
|
| 81 | - } // le hit est fini ! |
|
| 82 | - } |
|
| 67 | + if (!autoriser_sans_cookie($exec)){ |
|
| 68 | + // Charger l'aiguilleur qui va mettre sur la bonne voie les traitements derogatoires |
|
| 69 | + include_spip('public/aiguiller'); |
|
| 70 | + if ( |
|
| 71 | + // cas des appels actions ?action=xxx |
|
| 72 | + traiter_appels_actions() |
|
| 73 | + or |
|
| 74 | + // cas des hits ajax sur les inclusions ajax |
|
| 75 | + traiter_appels_inclusions_ajax() |
|
| 76 | + or |
|
| 77 | + // cas des formulaires charger/verifier/traiter |
|
| 78 | + traiter_formulaires_dynamiques() |
|
| 79 | + ){ |
|
| 80 | + exit; |
|
| 81 | + } // le hit est fini ! |
|
| 82 | + } |
|
| 83 | 83 | } |
| 84 | 84 | // securiser les redirect du back-office |
| 85 | 85 | if (_request('redirect')) { |
| 86 | - if (!function_exists('securiser_redirect_action')){ |
|
| 87 | - include_spip('public/aiguiller'); |
|
| 88 | - } |
|
| 89 | - set_request('redirect',securiser_redirect_action(_request('redirect'))); |
|
| 86 | + if (!function_exists('securiser_redirect_action')){ |
|
| 87 | + include_spip('public/aiguiller'); |
|
| 88 | + } |
|
| 89 | + set_request('redirect',securiser_redirect_action(_request('redirect'))); |
|
| 90 | 90 | } |
| 91 | 91 | |
| 92 | 92 | |
@@ -96,11 +96,11 @@ discard block |
||
| 96 | 96 | |
| 97 | 97 | // Controle de la version, sauf si on est deja en train de s'en occuper |
| 98 | 98 | if (!$reinstall == 'oui' |
| 99 | - and !_AJAX |
|
| 100 | - and isset($GLOBALS['meta']['version_installee']) |
|
| 101 | - and ($GLOBALS['spip_version_base'] != (str_replace(',', '.', $GLOBALS['meta']['version_installee']))) |
|
| 99 | + and !_AJAX |
|
| 100 | + and isset($GLOBALS['meta']['version_installee']) |
|
| 101 | + and ($GLOBALS['spip_version_base'] != (str_replace(',', '.', $GLOBALS['meta']['version_installee']))) |
|
| 102 | 102 | ) { |
| 103 | - $exec = 'demande_mise_a_jour'; |
|
| 103 | + $exec = 'demande_mise_a_jour'; |
|
| 104 | 104 | } |
| 105 | 105 | |
| 106 | 106 | // Quand une action d'administration est en cours (meta "admin"), |
@@ -110,44 +110,44 @@ discard block |
||
| 110 | 110 | // sinon c'est qu'elle a ete interrompue et il faut la reprendre |
| 111 | 111 | |
| 112 | 112 | elseif (isset($GLOBALS['meta']["admin"])) { |
| 113 | - if (preg_match('/^(.*)_(\d+)_/', $GLOBALS['meta']["admin"], $l)) { |
|
| 114 | - list(, $var_f, $n) = $l; |
|
| 115 | - } |
|
| 116 | - if (_AJAX |
|
| 117 | - or !( |
|
| 118 | - isset($_COOKIE['spip_admin']) |
|
| 119 | - or (isset($GLOBALS['visiteur_session']) and $GLOBALS['visiteur_session']['statut'] == '0minirezo') |
|
| 120 | - ) |
|
| 121 | - ) { |
|
| 122 | - spip_log("Quand la meta admin vaut " . |
|
| 123 | - $GLOBALS['meta']["admin"] . |
|
| 124 | - " seul un admin peut se connecter et sans AJAX." . |
|
| 125 | - " En cas de probleme, detruire cette meta."); |
|
| 126 | - die(_T('info_travaux_texte')); |
|
| 127 | - } |
|
| 128 | - if ($n) { |
|
| 129 | - list(, $var_f, $n) = $l; |
|
| 130 | - if (tester_url_ecrire("base_$var_f")) { |
|
| 131 | - $var_f = "base_$var_f"; |
|
| 132 | - } |
|
| 133 | - if ($var_f != $exec) { |
|
| 134 | - spip_log("Le script $var_f lance par auteur$n se substitue a l'exec $exec"); |
|
| 135 | - $exec = $var_f; |
|
| 136 | - set_request('exec', $exec); |
|
| 137 | - } |
|
| 138 | - } |
|
| 113 | + if (preg_match('/^(.*)_(\d+)_/', $GLOBALS['meta']["admin"], $l)) { |
|
| 114 | + list(, $var_f, $n) = $l; |
|
| 115 | + } |
|
| 116 | + if (_AJAX |
|
| 117 | + or !( |
|
| 118 | + isset($_COOKIE['spip_admin']) |
|
| 119 | + or (isset($GLOBALS['visiteur_session']) and $GLOBALS['visiteur_session']['statut'] == '0minirezo') |
|
| 120 | + ) |
|
| 121 | + ) { |
|
| 122 | + spip_log("Quand la meta admin vaut " . |
|
| 123 | + $GLOBALS['meta']["admin"] . |
|
| 124 | + " seul un admin peut se connecter et sans AJAX." . |
|
| 125 | + " En cas de probleme, detruire cette meta."); |
|
| 126 | + die(_T('info_travaux_texte')); |
|
| 127 | + } |
|
| 128 | + if ($n) { |
|
| 129 | + list(, $var_f, $n) = $l; |
|
| 130 | + if (tester_url_ecrire("base_$var_f")) { |
|
| 131 | + $var_f = "base_$var_f"; |
|
| 132 | + } |
|
| 133 | + if ($var_f != $exec) { |
|
| 134 | + spip_log("Le script $var_f lance par auteur$n se substitue a l'exec $exec"); |
|
| 135 | + $exec = $var_f; |
|
| 136 | + set_request('exec', $exec); |
|
| 137 | + } |
|
| 138 | + } |
|
| 139 | 139 | } |
| 140 | 140 | // si nom pas plausible, prendre le script par defaut |
| 141 | 141 | // attention aux deux cas 404/403 qui commencent par un 4 ! |
| 142 | 142 | elseif (!preg_match(',^[a-z4_][0-9a-z_-]*$,i', $exec)) { |
| 143 | - $exec = "accueil"; |
|
| 144 | - set_request('exec', $exec); |
|
| 143 | + $exec = "accueil"; |
|
| 144 | + set_request('exec', $exec); |
|
| 145 | 145 | } |
| 146 | 146 | |
| 147 | 147 | // compatibilite ascendante : obsolete, ne plus utiliser |
| 148 | 148 | $GLOBALS['spip_display'] = isset($GLOBALS['visiteur_session']['prefs']['display']) |
| 149 | - ? (int) $GLOBALS['visiteur_session']['prefs']['display'] |
|
| 150 | - : 0; |
|
| 149 | + ? (int) $GLOBALS['visiteur_session']['prefs']['display'] |
|
| 150 | + : 0; |
|
| 151 | 151 | $GLOBALS['spip_ecran'] = isset($_COOKIE['spip_ecran']) ? preg_replace('/[^a-z0-9]/i', '', $_COOKIE['spip_ecran']) : "etroit"; |
| 152 | 152 | |
| 153 | 153 | // si la langue est specifiee par cookie et ne correspond pas |
@@ -155,18 +155,18 @@ discard block |
||
| 155 | 155 | // on appelle directement la fonction, car un appel d'action peut conduire a une boucle infinie |
| 156 | 156 | // si le cookie n'est pas pose correctement dans l'action |
| 157 | 157 | if (!$var_auth and isset($_COOKIE['spip_lang_ecrire']) |
| 158 | - and $_COOKIE['spip_lang_ecrire'] <> $GLOBALS['visiteur_session']['lang'] |
|
| 158 | + and $_COOKIE['spip_lang_ecrire'] <> $GLOBALS['visiteur_session']['lang'] |
|
| 159 | 159 | ) { |
| 160 | - include_spip('action/converser'); |
|
| 161 | - action_converser_post($GLOBALS['visiteur_session']['lang'], true); |
|
| 160 | + include_spip('action/converser'); |
|
| 161 | + action_converser_post($GLOBALS['visiteur_session']['lang'], true); |
|
| 162 | 162 | } |
| 163 | 163 | |
| 164 | 164 | if ($var_f = tester_url_ecrire($exec)) { |
| 165 | - $var_f = charger_fonction($var_f); |
|
| 166 | - $var_f(); // at last |
|
| 165 | + $var_f = charger_fonction($var_f); |
|
| 166 | + $var_f(); // at last |
|
| 167 | 167 | } else { |
| 168 | - // Rien de connu: rerouter vers exec=404 au lieu d'echouer |
|
| 169 | - // ce qui permet de laisser la main a un plugin |
|
| 170 | - $var_f = charger_fonction('404'); |
|
| 171 | - $var_f($exec); |
|
| 168 | + // Rien de connu: rerouter vers exec=404 au lieu d'echouer |
|
| 169 | + // ce qui permet de laisser la main a un plugin |
|
| 170 | + $var_f = charger_fonction('404'); |
|
| 171 | + $var_f($exec); |
|
| 172 | 172 | } |