--- /dev/null
+<?php
+#---------------------------------------------------#
+# Plugin : Pages #
+# Auteur : RastaPopoulos #
+# Licence : GPL #
+#--------------------------------------------------------------- -#
+# Documentation : http://www.spip-contrib.net/Plugin-Pages #
+#-----------------------------------------------------------------#
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+function pages_declarer_tables_objets_sql($tables){
+
+ $tables['spip_articles']['field']['page'] = "VARCHAR(255) DEFAULT '' NOT NULL";
+ return $tables;
+
+}
+
+?>
--- /dev/null
+<B_articles>
+<div class="liste resume articles">
+ #ANCRE_PAGINATION
+ <h2 class="h2">[(#ENV{titre,<:derniers_articles:>})]</h2>
+ <ul class="liste-items">
+ <BOUCLE_articles(ARTICLES){id_rubrique?} {id_rubrique >= 0} {!par date} {pagination #ENV{nb,5}}>
+ #INCLURE{fond=inclure/article-resume,id_article}
+ </BOUCLE_articles>
+ </ul>
+ [<p class="pagination">(#PAGINATION)</p>]
+</div>
+</B_articles>
--- /dev/null
+<div class="formulaire_spip formulaire_dater formulaire_#FORM formulaire_#FORM-#ENV{objet}-#ENV{id,nouveau}">
+ [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
+ [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
+ [(#ENV{editable})
+ <form method='post' action='#ENV{action}'><div>
+ [(#REM) declarer les hidden qui declencheront le service du formulaire
+ parametre : url d'action ]
+ #ACTION_FORMULAIRE{#ENV{action}}
+ ]
+ <ul>
+ #SET{name,champ_page} #SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} #SET{obli,''}
+ <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
+ <label for="champ_#GET{name}"><:pages:label_champ_page:></label>
+ [<span class="erreur_message">(#GET{erreurs})</span>]
+ <span[ (#ENV{#GET{name}}|oui)class="affiche"][(#ENV{_saisie_en_cours}|oui)style="display:none;"]>
+ [(#ENV{#GET{name}}|sinon{<em><:pagesbis:info_aucun_champ_page:></em>})]
+ </span>
+ [(#ENV{editable})
+ <span class="toggle_box_link"[(#ENV{_saisie_en_cours}|oui)style="display:none;"]>
+ [<a href="#"
+ onclick="var f=jQuery(this).parents('form').eq(0);f.find('li .input').show('fast').siblings('span').hide('fast');f.find('.boutons').show('fast');f.find('input.page').eq(0).focus();return false;"><:bouton_changer:></a>]
+ </span>
+ <span class="input"[(#ENV{_saisie_en_cours}|non)style="display:none;"]>
+ <input type="text" class="text page" name="#GET{name}" id="champ_#GET{name}" value="#ENV{#GET{name}}" size="40"/>
+ </span>
+ ]
+ </li>
+ </ul>
+ [(#ENV{editable})
+ [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
+ <!--extra-->
+ <p class='boutons'[(#ENV{_saisie_en_cours}|non)style="display:none;"]>
+ <span class='image_loading'> </span>
+ <input type='submit' class='over' name='changer' value='<:bouton_changer:>' />
+ <input type='submit' class='submit' name='annuler' value='<:bouton_annuler:>' />
+ <input type='submit' class='submit' name='changer' value='<:bouton_changer:>' />
+ </p>
+ </div></form>
+ ]
+</div>
--- /dev/null
+<?php
+/**
+ * Editer l'identifiant page d'un article
+ *
+ * @plugin Pages Uniques
+ * @copyright 2013
+ * @author RastaPopoulos
+ * @licence GNU/GPL
+ * @package SPIP\Pages\Formulaires
+ */
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+function formulaires_editer_identifiant_page_charger($id_article, $retour=''){
+ $valeurs['champ_page'] = generer_info_entite($id_article,'article','page');
+ $valeurs['_saisie_en_cours'] = (_request('champ_page')!==null);
+ return $valeurs;
+}
+
+/**
+ * Identifier le formulaire en faisant abstraction des parametres qui
+ * ne representent pas l'objet edite
+ */
+function formulaires_editer_identifiant_page_identifier_dist($id_article, $retour=''){
+ return serialize(array('article', $id_article));
+}
+
+/**
+ * Verification avant traitement
+ *
+ * @param integer $id_article
+ * @param string $retour
+ * @return Array Tableau des erreurs
+ */
+function formulaires_editer_identifiant_page_verifier_dist($id_article, $retour=''){
+ $erreurs = array();
+/*
+ if ($page = _request('champ_page')) {
+ // nombre de charactères : 40 max
+ if (strlen($page) > 40)
+ $erreurs['champ_page'] = _T('pages:erreur_champ_page_taille');
+ // format : charactères alphanumériques en minuscules ou "_"
+ elseif (!preg_match('/^[a-z0-9_]+$/', $page))
+ $erreurs['champ_page'] = _T('pages:erreur_champ_page_format');
+ // doublon
+ elseif (sql_countsel(table_objet_sql('article'), "page=".sql_quote($page) . " AND id_article!=".intval($id_article)))
+ $erreurs['champ_page'] = _T('pages:erreur_champ_page_doublon');
+ }
+*/
+ return $erreurs;
+}
+
+/**
+ * Traitement
+ *
+ * @param integer $id_article
+ * @param string $retour
+ * @return Array
+ */
+function formulaires_editer_identifiant_page_traiter_dist($id_article, $retour=''){
+
+ if (
+ _request('changer')
+ and $page = _request('champ_page')
+ ) {
+ include_spip('action/editer_objet');
+ objet_modifier('article',$id_article,array('page'=>$page));
+ }
+
+ set_request('champ_page');
+ $res['editable'] = true;
+ if ($retour)
+ $res['redirect'] = $retour;
+
+ return $res;
+}
+
+?>
--- /dev/null
+<traduction module="pages" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/pages/trunk/lang/" reference="fr">
+ <langue code="ar" url="http://trad.spip.net/tradlang_module/pages?lang_cible=ar" total="12" traduits="6" relire="0" modifs="2" nouveaux="4" pourcent="50.00">
+ <traducteur nom="George" lien="http://trad.spip.net/auteur/جورج-قندلفت" />
+ </langue>
+ <langue code="en" url="http://trad.spip.net/tradlang_module/pages?lang_cible=en" total="12" traduits="12" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="drBouvierLeduc" lien="http://trad.spip.net/auteur/drbouvierleduc" />
+ <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
+ </langue>
+ <langue code="es" url="http://trad.spip.net/tradlang_module/pages?lang_cible=es" total="12" traduits="12" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel-s-bujaldon" />
+ </langue>
+ <langue code="fa" url="http://trad.spip.net/tradlang_module/pages?lang_cible=fa" total="12" traduits="6" relire="0" modifs="2" nouveaux="4" pourcent="50.00">
+ <traducteur nom="Davood Hossein" lien="http://trad.spip.net/auteur/davood-hossein" />
+ </langue>
+ <langue code="fr" url="http://trad.spip.net/tradlang_module/pages?lang_cible=fr" total="12" traduits="12" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ </langue>
+ <langue code="nl" url="http://trad.spip.net/tradlang_module/pages?lang_cible=nl" total="12" traduits="12" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
+ </langue>
+ <langue code="ru" url="http://trad.spip.net/tradlang_module/pages?lang_cible=ru" total="12" traduits="6" relire="0" modifs="2" nouveaux="4" pourcent="50.00">
+ <traducteur nom="Serge Markitanenko" lien="http://trad.spip.net/auteur/serge-markitanenko" />
+ </langue>
+ <langue code="sk" url="http://trad.spip.net/tradlang_module/pages?lang_cible=sk" total="12" traduits="12" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
+ </langue>
+</traduction>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/pages?lang_cible=ar
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // A
+ 'aucune_page' => 'لا توجد صفحات في هذه اللحظة.', # MODIF
+
+ // C
+ 'convertir_article' => 'تحويل الى مقال',
+ 'convertir_page' => 'تحويل الى صفحة',
+ 'creer_page' => 'إنشاء صفحة جديدة',
+
+ // M
+ 'modifier_page' => 'تغيير الصفحة :', # MODIF
+
+ // P
+ 'pages_uniques' => 'صفحات فريدة',
+
+ // T
+ 'titre_page' => 'صفحة',
+ 'toutes_les_pages' => 'كل الصفحات'
+);
+
+?>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/pages?lang_cible=en
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // A
+ 'aucune_page' => 'There are no pages at the moment.',
+
+ // C
+ 'convertir_article' => 'Convert to an article',
+ 'convertir_page' => 'Convert to a page',
+ 'creer_page' => 'Create a new page',
+
+ // E
+ 'erreur_champ_page_doublon' => 'That ID is already in use',
+ 'erreur_champ_page_format' => 'Lowercase alphanumerical characters or "_" only',
+ 'erreur_champ_page_taille' => 'Up to 255 characters max',
+
+ // L
+ 'label_champ_page' => 'Page :',
+
+ // M
+ 'modifier_page' => 'Edit page:',
+
+ // P
+ 'pages_uniques' => 'Unique pages',
+
+ // T
+ 'titre_page' => 'Page',
+ 'toutes_les_pages' => 'All pages'
+);
+
+?>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/pages?lang_cible=es
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // A
+ 'aucune_page' => 'No hay ninguna página por el momento.',
+
+ // C
+ 'convertir_article' => 'Convertir en artículo',
+ 'convertir_page' => 'Convertir en página',
+ 'creer_page' => 'Crear una nueva página',
+
+ // E
+ 'erreur_champ_page_doublon' => 'Este identificador ya existe',
+ 'erreur_champ_page_format' => 'Caracteres alfanuméricos en minúsculas o "_" únicamente',
+ 'erreur_champ_page_taille' => '255 caracteres máximo',
+
+ // L
+ 'label_champ_page' => 'Página:',
+
+ // M
+ 'modifier_page' => 'Modificar la página:',
+
+ // P
+ 'pages_uniques' => 'Páginas únicas',
+
+ // T
+ 'titre_page' => 'Página',
+ 'toutes_les_pages' => 'Todas las páginas'
+);
+
+?>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/pages?lang_cible=fa
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // A
+ 'aucune_page' => ' براي الأن هيچ صفحهي نيست', # MODIF
+
+ // C
+ 'convertir_article' => 'تبديل به يك مقاله',
+ 'convertir_page' => 'تبديل به يك صفحه',
+ 'creer_page' => 'آفرينش يك صفحهي نو',
+
+ // M
+ 'modifier_page' => 'اصلاح صفحه: ', # MODIF
+
+ // P
+ 'pages_uniques' => 'صفحههاي تك',
+
+ // T
+ 'titre_page' => 'صفحه',
+ 'toutes_les_pages' => 'تمام صفهها'
+);
+
+?>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// Fichier source, a modifier dans svn://zone.spip.org/spip-zone/_plugins_/pages/trunk/lang/
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // A
+ 'aucune_page' => 'Il n’y a aucune page pour l’instant.',
+
+ // C
+ 'convertir_article' => 'Convertir en article',
+ 'convertir_page' => 'Convertir en page',
+ 'creer_page' => 'Créer une nouvelle page',
+
+ // E
+ 'erreur_champ_page_doublon' => 'Cet identifiant existe déjà',
+ 'erreur_champ_page_format' => 'Charactères alphanumériques en minuscules ou "_" uniquement',
+ 'erreur_champ_page_taille' => '255 charactères maximum',
+
+ // L
+ 'label_champ_page' => 'Page :',
+
+ // M
+ 'modifier_page' => 'Modifier la page :',
+
+ // P
+ 'pages_uniques' => 'Pages uniques',
+
+ // T
+ 'titre_page' => 'Page',
+ 'toutes_les_pages' => 'Toutes les pages'
+);
+
+?>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/pages?lang_cible=nl
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // A
+ 'aucune_page' => 'Er is momenteel geen enkele bladzijde.',
+
+ // C
+ 'convertir_article' => 'In een artikel omzetten',
+ 'convertir_page' => 'In een bladzijde omzetten',
+ 'creer_page' => 'Een nieuwe bladzijde maken',
+
+ // E
+ 'erreur_champ_page_doublon' => 'Deze identificatie bestaat al',
+ 'erreur_champ_page_format' => 'Uitsluitend kleine letters, cijfers of "_"',
+ 'erreur_champ_page_taille' => 'maximaal 255 tekens',
+
+ // L
+ 'label_champ_page' => 'Bladzijde:',
+
+ // M
+ 'modifier_page' => 'Aanpassen van bladzijde:',
+
+ // P
+ 'pages_uniques' => 'Unieke bladzijdes',
+
+ // T
+ 'titre_page' => 'Bladzijde',
+ 'toutes_les_pages' => 'Alle bladzijdes'
+);
+
+?>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/pages?lang_cible=ru
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // A
+ 'aucune_page' => 'Пока нет страниц.', # MODIF
+
+ // C
+ 'convertir_article' => 'Преобразовать в статью',
+ 'convertir_page' => 'Преобразовать в страницу',
+ 'creer_page' => 'Новая страница',
+
+ // M
+ 'modifier_page' => 'Изменить страницу:', # MODIF
+
+ // P
+ 'pages_uniques' => 'Отдельные страницы',
+
+ // T
+ 'titre_page' => 'Страница',
+ 'toutes_les_pages' => 'Все страницы'
+);
+
+?>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/pages?lang_cible=sk
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // A
+ 'aucune_page' => 'Momentálne tu nie je žiadna stránka.',
+
+ // C
+ 'convertir_article' => 'Zmeniť na článok',
+ 'convertir_page' => 'Zmeniť na stránku',
+ 'creer_page' => 'Vytvoriť novú stránku',
+
+ // E
+ 'erreur_champ_page_doublon' => 'Tento identifikátor už existuje',
+ 'erreur_champ_page_format' => 'Malé písmená alebo jeden "_"',
+ 'erreur_champ_page_taille' => 'Maximum je 255 znakov',
+
+ // L
+ 'label_champ_page' => 'Stránka:',
+
+ // M
+ 'modifier_page' => 'Upraviť stránku:',
+
+ // P
+ 'pages_uniques' => 'Jedinečné stránky',
+
+ // T
+ 'titre_page' => 'Stránka',
+ 'toutes_les_pages' => 'Všetky stránky'
+);
+
+?>
--- /dev/null
+<traduction module="paquet-pages" gestionnaire="salvatore" url="http://trad.spip.net" source="svn://zone.spip.org/spip-zone/_plugins_/pages/trunk/lang/" reference="fr">
+ <langue code="ar" url="http://trad.spip.net/tradlang_module/paquet-pages?lang_cible=ar" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ </langue>
+ <langue code="en" url="http://trad.spip.net/tradlang_module/paquet-pages?lang_cible=en" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ </langue>
+ <langue code="es" url="http://trad.spip.net/tradlang_module/paquet-pages?lang_cible=es" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="Raquel S. Bujaldón" lien="http://trad.spip.net/auteur/raquel-s-bujaldon" />
+ </langue>
+ <langue code="fa" url="http://trad.spip.net/tradlang_module/paquet-pages?lang_cible=fa" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="Davood Hossein" lien="http://trad.spip.net/auteur/davood-hossein" />
+ </langue>
+ <langue code="fr" url="http://trad.spip.net/tradlang_module/paquet-pages?lang_cible=fr" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ </langue>
+ <langue code="nl" url="http://trad.spip.net/tradlang_module/paquet-pages?lang_cible=nl" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="Hanjo" lien="http://trad.spip.net/auteur/hanjo" />
+ </langue>
+ <langue code="ru" url="http://trad.spip.net/tradlang_module/paquet-pages?lang_cible=ru" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="Serge Markitanenko" lien="http://trad.spip.net/auteur/serge-markitanenko" />
+ </langue>
+ <langue code="sk" url="http://trad.spip.net/tradlang_module/paquet-pages?lang_cible=sk" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
+ <traducteur nom="jaro" lien="http://trad.spip.net/auteur/jaro" />
+ </langue>
+</traduction>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-pages?lang_cible=ar
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // P
+ 'pages_description' => 'هذا البرنامج المساعد يسمح لك إنشاء صفحات من البنود التي لا ترتبط بأي تسلسل معين. بيد أنها قد تترافق مع اسم القالب
+يأذن للإنشاء صفحة من المعلومات القانونية ، من نحن ، اتصال ، وما إلى ذلك.
+',
+ 'pages_slogan' => ' '
+);
+
+?>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-pages?lang_cible=en
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // P
+ 'pages_description' => 'This plugin allows you to create pages of articles that are not linked to any particular hierarchy.
+However they may be associated with a name template.
+This allows the creation of pages of legal information, about, contact, etc..
+',
+ 'pages_slogan' => 'Unlinked pages'
+);
+
+?>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-pages?lang_cible=es
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // P
+ 'pages_description' => 'Este plugin permite crear páginas de artículos que no están asociadas a ninguna jerarquía particular.
+Por contra, pueden asociarse a un nombre de esqueleto. Ello permite crear páginas de aviso legal, acerca de, contacto, etc.',
+ 'pages_slogan' => 'Páginas sin sección'
+);
+
+?>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-pages?lang_cible=fa
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // P
+ 'pages_description' => 'اين پلاگين اجازهي ايجاد صفحههاي مقالههايي را ميدهد كه به هيچ سلسله مراتبي متكي نيستند.
+در عضو ميتوانند به نام يك اسلكت مرتبط شوند.
+اين پلاگين اجازهي ايجاد صفحههايي مانند اطلاعات حقوقي، در بارهي ما، تماس با ما و غيره را خواهد داد.',
+ 'pages_slogan' => 'صفحههاي بدون بخش'
+);
+
+?>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// Fichier source, a modifier dans svn://zone.spip.org/spip-zone/_plugins_/pages/trunk/lang/
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // P
+ 'pages_description' => 'Ce plugin permet de créer des pages d’articles qui ne sont reliées à aucune hiérarchie particulière.
+En revanche elles peuvent être associées à un nom de squelette.
+Cela permet notamment de créer des pages de notice légale, d’à-propos, de contact, etc.',
+ 'pages_slogan' => 'Des pages sans rubrique'
+);
+
+?>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-pages?lang_cible=nl
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // P
+ 'pages_description' => 'Met deze plugin kun je bladzijdes met artikelen maken die niet in de hiërarchie van de site zijn opgenomen.
+Ze kunnen worden gekoppeld aan de naam van een skelet.
+Op deze manier kunnen bladzijdes zoals wettelijke vermeldingen, contactinformatie, disclaimers, enz. worden gemaakt.',
+ 'pages_slogan' => 'Bladzijdes zonder rubriek'
+);
+
+?>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-pages?lang_cible=ru
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // P
+ 'pages_description' => 'Данный плагин позволяет создавать отдельные страницы вне любых разделов сайта. Это отличное решения для размещения контактной информации, условий и правил использования, а так же для любой информации, которая логически не встраивается в структуру сайта.
+Cela permet notamment de créer des pages de notice légale, d’à-propos, de contact, etc.',
+ 'pages_slogan' => 'Отдельные страницы'
+);
+
+?>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+// extrait automatiquement de http://trad.spip.net/tradlang_module/paquet-pages?lang_cible=sk
+// ** ne pas modifier le fichier **
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // P
+ 'pages_description' => 'Tento zásuvný modul vám umožňuje vytvárať stránky s článkami, ktoré nemajú žiadnu konkrétnu hierarchickú štruktúru.
+Môžete ich však prepojiť s názvom šablóny.
+To vám umožňuje vytvárať stránky s informáciami právneho charakteru, časové osi, zmluvy, a i.',
+ 'pages_slogan' => 'Stránky bez rubriky'
+);
+
+?>
--- /dev/null
+<?php
+/**
+ * Fichier gérant l'installation et désinstallation du plugin Pages Uniques
+ *
+ * @plugin Pages
+ * @copyright 2013
+ * @author RastaPopoulos
+ * @licence GNU/GPL
+ * @package SPIP\Pages\Installation
+ * @link http://www.spip-contrib.net/Plugin-Pages
+ */
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+
+/**
+ * Fonction d'installation et de mise à jour du plugin
+ *
+ * @param string $nom_meta_base_version
+ * Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
+ * @param string $version_cible
+ * Version du schéma de données dans ce plugin (déclaré dans paquet.xml)
+ * @return void
+**/
+function pages_upgrade($nom_meta_base_version, $version_cible) {
+ $maj = array();
+
+ $maj['create'] = array(
+ array('maj_tables', 'spip_articles')
+ );
+ $maj['1.0.1'] = array(
+ array('sql_alter', "TABLE spip_articles CHANGE page page VARCHAR(255) DEFAULT '' NOT NULL"),
+ );
+
+ include_spip('base/upgrade');
+ maj_plugin($nom_meta_base_version, $version_cible, $maj);
+}
+
+
+/**
+ * Fonction de désinstallation du plugin
+ * Supprimer la colonne 'page' du plugin
+ *
+ * @param string $nom_meta_base_version
+ * Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
+ * @return void
+**/
+function pages_vider_tables($nom_meta_base_version) {
+ sql_alter("TABLE spip_articles DROP page");
+ effacer_meta($nom_meta_base_version);
+}
+
+
+?>
--- /dev/null
+<?php
+/**
+ * Plugin Pages
+ *
+ * @author Rastapopoulos
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @link http://www.spip-contrib.net/Plugin-Pages Documentation
+ * @package SPIP\Pages\Pipelines
+ */
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+// Change l'entête du formulaire des articles pour montrer que c'est une page
+function pages_affiche_milieu_ajouter_page($flux){
+
+ if ($flux['args']['exec'] == 'article_edit'){
+ include_spip('base/abstract_sql');
+ if (
+ _request('modele') == 'page'
+ or
+ (
+ ($id_article = $flux['args']['id_article']) > 0
+ and
+ (sql_getfetsel('page', 'spip_articles', 'id_article='.sql_quote($id_article)))
+ )
+ )
+ {
+
+ // On cherche et remplace l'entete de la page : "modifier la page"
+ $cherche = "/(<div[^>]*class=('|\")entete-formulaire.*?<\/span>).*?(<h1>.*?<\/h1>.*?<\/div>)/is";
+ $surtitre = _T('pages:modifier_page');
+ $remplace = "$1$surtitre$3";
+ $flux['data'] = preg_replace($cherche, $remplace, $flux['data']);
+
+ // Si c'est une nouvelle page, on remplace le lien de retour dans l'entete
+ if (_request('new') == 'oui'){
+ $cherche = "/(<span[^>]*class=(?:'|\")icone[^'\"]*retour[^'\"]*(?:'|\")>"
+ . "<a[^>]*href=(?:'|\"))[^'\"]*('|\")/is";
+ $retour = generer_url_ecrire("pages_tous");
+ $remplace = "$1$retour$2";
+ $flux['data'] = preg_replace($cherche, $remplace, $flux['data']);
+
+ }
+
+ }
+
+ }
+
+ return $flux;
+
+}
+
+
+/**
+ * Saisie de l'identifiant de la page sur la fiche d'une page
+ *
+ * @param array $flux
+ * Le contexte du pipeline
+ * @return array $flux
+ * Le contexte du pipeline modifié
+ */
+function pages_affiche_milieu_identifiant($flux){
+ $texte = "";
+ $e = trouver_objet_exec($flux['args']['exec']);
+
+ // Si on est sur la fiche d'un article...
+ if (!$e['edition'] and $e['type']=='article' ) {
+ include_spip('base/abstract_sql');
+ $id_article = isset($flux['args'][$e['id_table_objet']]) ? $flux['args'][$e['id_table_objet']] : false;
+ // ... et s'il s'agit d'une page
+ if (
+ _request('modele') == 'page'
+ or
+ (
+ $id_article > 0
+ and
+ (sql_getfetsel('page', 'spip_articles', 'id_article='.sql_quote($id_article)))
+ )
+ ) {
+ $texte .= recuperer_fond('prive/objets/editer/identifiant_page',
+ array('id_article' => $id_article),
+ array('ajax'=>true)
+ );
+ }
+ }
+
+ if ($texte) {
+ if ($p=strpos($flux['data'],"<!--affiche_milieu-->"))
+ $flux['data'] = substr_replace($flux['data'],$texte,$p,0);
+ else
+ $flux['data'] .= $texte;
+ }
+
+ return $flux;
+}
+
+
+// Vérifier que la page n'est pas vide
+function pages_formulaire_charger($flux){
+
+ // Si on est dans l'édition d'un article
+ if (is_array($flux) and $flux['args']['form'] == 'editer_article'){
+
+ // Si on est dans un article de modele page
+ if (_request('modele') == 'page' or ($flux['data']['page'] and _request('modele') != 'article')){
+ $flux['data']['modele'] = 'page';
+ $flux['data']['champ_page'] = $flux['data']['page'];
+ }
+ unset($flux['data']['page']);
+ }
+
+ return $flux;
+
+}
+
+
+/**
+ * Vérifications de l'identifiant d'une page
+ *
+ * @param array $flux
+ * Le contexte du pipeline
+ * @return array $flux
+ * Le contexte du pipeline modifié
+ */
+function pages_formulaire_verifier($flux){
+
+ // Si on est dans l'édition d'un article/page ou dans le formulaire d'édition d'un identifiant page
+ if (
+ is_array($flux)
+ and (
+ ( $flux['args']['form'] == 'editer_article' and _request('modele') == 'page' )
+ or $flux['args']['form'] == 'editer_identifiant_page'
+ )
+ ){
+ $erreur = '';
+ $page = _request('champ_page');
+ $id_page = $flux['args']['args'][0];
+
+ // champ vide
+ if (!$page)
+ $erreur .= _T('info_obligatoire');
+ // nombre de charactères : 40 max
+ elseif (strlen($page) > 255)
+ $erreur = _T('pages:erreur_champ_page_taille');
+ // format : charactères alphanumériques en minuscules ou "_"
+ elseif (!preg_match('/^[a-z0-9_]+$/', $page))
+ $erreur = _T('pages:erreur_champ_page_format');
+ // doublon
+ elseif (sql_countsel(table_objet_sql('article'), "page=".sql_quote($page) . " AND id_article!=".intval($id_page)))
+ $erreur = _T('pages:erreur_champ_page_doublon');
+
+ if ($erreur)
+ $flux['data']['champ_page'] .= $erreur;
+ }
+ return $flux;
+
+}
+
+
+/**
+ * Insertion dans le pipeline editer_contenu_objet (SPIP)
+ *
+ * Sur les articles considérés comme pages uniques, on remplace l'élément de choix de rubriques par :
+ * -* un input hidden id_rubrique et id_parent avec pour valeur -1
+ * -* un input hidden modele avec comme valeur "page"
+ * -* un champ d'édition de l'identifiant de la page unique
+ *
+ * @param array $flux
+ * Le contexte du pipeline
+ * @return array $flux
+ * Le contexte du pipeline modifié
+ */
+function pages_editer_contenu_objet($flux){
+ $args = $flux['args'];
+ if ($args['type'] == 'article' && isset($args['contexte']['modele']) && $args['contexte']['modele'] == 'page'){
+ $erreurs = $args['contexte']['erreurs'];
+ // On cherche et remplace l'édition de la rubrique
+ $cherche = "/<li[^>]*class=('|\")editer editer_parent.*?<\/li>/is";
+ $remplace = '<li class="editer editer_page obligatoire'.($erreurs['champ_page'] ? ' erreur' : '').'">';
+ $remplace .= '<input type="hidden" name="id_parent" value="-1" />';
+ $remplace .= '<input type="hidden" name="id_rubrique" value="-1" />';
+ $remplace .= '<input type="hidden" name="modele" value="page" />';
+ $remplace .= '<label for="id_page">'._T('pages:titre_page').'</label>';
+ if ($erreurs['champ_page'])
+ $remplace .= '<span class="erreur_message">'.$erreurs['champ_page'].'</span>';
+ $value = $args['contexte']['champ_page'] ? $args['contexte']['champ_page'] : $args['contexte']['page'];
+ $remplace .= '<input type="text" class="text" name="champ_page" id="id_page" value="'.$value.'" />';
+ $remplace .= '</li>';
+ $flux['data'] = preg_replace($cherche, $remplace, $flux['data'],1);
+ $flux['data'] = preg_replace($cherche, '', $flux['data']);
+ }
+ return $flux;
+}
+
+/**
+ * Insertion dans le pipeline pre_edition (SPIP)
+ *
+ * Si on édite un article :
+ * - Si on récupère un champ "champ_page" dans les _request() et qu'il est différent de "article",
+ * on transforme l'article en page unique, id_rubrique devient -1
+ * - Si on ne récupère pas de champ_page et que id_parent est supérieur à 0, on le passe en article et on vide
+ * son champ page pour pouvoir réaliser le processus inverse dans le futur
+ *
+ * @param array $flux Le contexte du pipeline
+ * @return array $flux Le contexte modifié
+ */
+function pages_pre_edition_ajouter_page($flux){
+ if (is_array($flux) and isset($flux['args']['type']) && $flux['args']['type'] == 'article'){
+ if ((($page = _request('champ_page')) != '') AND ($page != 'article')){
+ /**
+ * On ajoute le "champ_page" du formulaire qui deviendra "page" dans la table
+ * On force l'id_rubrique à -1
+ */
+ $flux['data']['page'] = $page;
+ $flux['data']['id_rubrique'] = '-1';
+ $flux['data']['id_secteur'] = '0';
+ }
+ /**
+ * si l'id_parent est supérieur à 0 on que l'on ne récupère pas de champ_page,
+ * on pense à vider le champ "page", pour pouvoir revenir après coup en page
+ */
+ if (!_request('champ_page') && (_request('id_parent') > 0)){
+ $flux['data']['page'] = '';
+ }
+ }
+ return $flux;
+}
+
+/**
+ * Insertion dans le pipeline boite_infos (SPIP)
+ *
+ * Ajouter un lien pour transformer une article normal en page inversement
+ *
+ * @param array $flux
+ * Le contexte du pipeline
+ * @return array $flux
+ * Le contexte modifié
+ */
+function pages_boite_infos($flux){
+ if ($flux['args']['type'] == 'article' and autoriser('modifier', 'article', $flux['args']['id'])){
+ include_spip('inc/presentation');
+ if (sql_getfetsel('page', 'spip_articles', 'id_article='. $flux['args']['id']) == '')
+ $flux['data'] .= icone_horizontale(_T('pages:convertir_page'), parametre_url(parametre_url(generer_url_ecrire('article_edit'), 'id_article', $flux['args']['id']), 'modele', 'page'), 'page', $fonction="", $dummy="", $javascript="");
+ else
+ $flux['data'] .= icone_horizontale(_T('pages:convertir_article'), parametre_url(parametre_url(generer_url_ecrire('article_edit'), 'id_article', $flux['args']['id']), 'modele', 'article'), 'article', $fonction="", $dummy="", $javascript="");
+ }
+ return $flux;
+}
+
+
+/**
+ * Insertion dans le pipeline affiche_hierarchie (SPIP)
+ * Pour les pages, faire pointer la racine vers la liste des pages au lieux des rubriques
+ * Pour savoir si on se trouve sur une page, on vérifie que le champ "page" existe, faute de mieux
+ *
+ * @param array $flux
+ * Le contexte du pipeline
+ * @return array $flux
+ * Le contexte modifié
+ */
+function pages_affiche_hierarchie($flux){
+
+ $objet = $flux['args']['objet'];
+ $id_article = $flux['args']['id_objet'];
+ if (
+ $objet == 'article'
+ and sql_getfetsel('page', 'spip_articles', 'id_article='.sql_quote($id_article))
+ ){
+ $cherche = "<a href=\"". generer_url_ecrire('rubriques') . "\">" . _T('info_racine_site') . "</a>";
+ $remplace = "<a href=\"". generer_url_ecrire('pages_tous') . "\">" . _T('pages:pages_uniques') . "</a>";
+ $flux['data'] = str_replace($cherche,$remplace,$flux['data']);
+ }
+
+
+ return $flux;
+}
+
+?>
--- /dev/null
+<paquet
+ prefix="pages"
+ categorie="divers"
+ version="1.0.5"
+ etat="stable"
+ compatibilite="[3.0.0;3.0.*]"
+ logo="prive/themes/spip/images/page-32.png"
+ documentation="http://www.spip-contrib.net/Plugin-Pages-uniques"
+ schema="1.0.1"
+>
+
+ <nom>Pages</nom>
+ <!-- Gestion des pages sans rubrique -->
+
+ <auteur>RastaPopoulos</auteur>
+ <auteur lien="http://www.ldd.fr">Les Développements Durables</auteur>
+ <licence>GPL v3</licence>
+
+ <pipeline nom="declarer_tables_objets_sql" inclure="base/pages_tables.php" />
+ <pipeline nom="affiche_milieu" action="affiche_milieu_ajouter_page" inclure="pages_pipelines.php" />
+ <pipeline nom="affiche_milieu" action="affiche_milieu_identifiant" inclure="pages_pipelines.php" />
+ <pipeline nom="boite_infos" inclure="pages_pipelines.php" />
+ <pipeline nom="affiche_hierarchie" inclure="pages_pipelines.php" />
+ <pipeline nom="formulaire_charger" inclure="pages_pipelines.php" />
+ <pipeline nom="formulaire_verifier" inclure="pages_pipelines.php" />
+ <pipeline nom="editer_contenu_objet" inclure="pages_pipelines.php" />
+ <pipeline nom="pre_edition" action="pre_edition_ajouter_page" inclure="pages_pipelines.php" />
+
+ <utilise nom="polyhier" />
+
+ <menu nom="pages_tous" titre="pages:pages_uniques" parent="menu_edition" icone="images/page-16.png" />
+ <menu nom="page_creer" titre="pages:creer_page" parent="outils_rapides" icone="images/page-new-16.png" action="article_edit" parametres="new=oui&modele=page&id_rubrique=-1" />
+</paquet>
--- /dev/null
+<div class="ajax">
+ #FORMULAIRE_EDITER_IDENTIFIANT_PAGE{#ENV{id_article}}
+</div>
--- /dev/null
+<h1 class="grostitre"><:pages:toutes_les_pages:></h1>
+
+#SET{statuts,#SESSION{statut}|statuts_articles_visibles}
+[(#ENV{id_auteur,''}|=={#SESSION{id_auteur}}|oui)
+ #SET{statuts,#GET{statuts}|array_merge{#LISTE{prepa}}}
+]
+<INCLURE{fond=prive/objets/liste/articles,
+ id_rubrique=-1,
+ statut=#GET{statuts},
+ id_auteur=#ENV{id_auteur,''},
+ nb=30,
+ titre=<:pages:toutes_les_pages:>,
+ sinon=<:pages:aucune_page:>,
+ env,
+ ajax}>
--- /dev/null
+
+[(#BOITE_OUVRIR{<:titre_cadre_raccourcis:>,'raccourcis'})]
+
+[(#URL_ECRIRE{article_edit}
+ |parametre_url{modele,page}
+ |parametre_url{new,oui}
+ |parametre_url{id_rubrique,-1}
+ |icone_horizontale{<:pages:creer_page:>,page,new})]
+
+#BOITE_FERMER
--- /dev/null
+<BOUCLE_article(ARTICLES){page=#ENV{valeur}}>\r
+<p>#TITRE (#PAGE)</p>\r
+</BOUCLE_article>\r
+<p><:saisies:vue_sans_reponse:></p>\r
+<//B_article>
\ No newline at end of file
--- /dev/null
+[(#REM) \r
+ Saisie permettant de sélectionner une page unique par son nom de page\r
+ \r
+ Parametres :\r
+ - option_intro : chaine de langue de la premiere ligne vide ? (defaut:"")\r
+ - cacher_option_intro : pas de premier option vide (defaut:"")\r
+ - class : classe(s) css ajoutes au select\r
+ \r
+ Exemple d'appel :\r
+ [(#SAISIE{pages_uniques,nom,\r
+ label=<:plugin:label:>,\r
+ })] \r
+]\r
+<select name="#ENV{nom}" id="champ_#ENV{nom}"[ class="(#ENV{class})"][ disabled="(#ENV{disable})"][ readonly="(#ENV{readonly})"]>\r
+[(#ENV{cacher_option_intro}|non)<option value="">[(#ENV{option_intro})]</option>]\r
+<BOUCLE_selection(ARTICLES){par titre}{id_rubrique<0}>\r
+ <option value="#PAGE" [(#PAGE|=={#ENV{valeur,#ENV{defaut}}}|oui) selected="selected"]>#TITRE (#PAGE)</option>\r
+</BOUCLE_selection>\r
+</select>
\ No newline at end of file
--- /dev/null
+<svn_revision>
+<text_version>
+Origine: file:///home/svn/repository/spip-zone/_plugins_/pages/trunk
+Revision: 80270
+Dernier commit: 2014-01-27 14:00:09 +0100
+</text_version>
+<origine>file:///home/svn/repository/spip-zone/_plugins_/pages/trunk</origine>
+<revision>80270</revision>
+<commit>2014-01-27 14:00:09 +0100 </commit>
+</svn_revision>
\ No newline at end of file
<necessite nom="menus" compatibilite="[0.9;[" />
<necessite nom="mll" compatibilite="[1.1.9;[" />
<necessite nom="multilang" compatibilite="[0.9.2;[" />
+ <necessite nom="pages" compatibilite="[1.0.5;[" />
<necessite nom="piwik" compatibilite= "[0.6.0;]" />
<necessite nom="typoenluminee" compatibilite= "[3.3.2;]" />
</paquet>