Changeset 109820 in spip-zone for _plugins_/info_sites


Ignore:
Timestamp:
Apr 6, 2018, 8:10:20 AM (8 months ago)
Author:
teddy.spip@…
Message:

Merge avec le trunk. Il était temps…

Location:
_plugins_/info_sites/branches/v1
Files:
26 edited
50 copied

Legend:

Unmodified
Added
Removed
  • _plugins_/info_sites/branches/v1

  • _plugins_/info_sites/branches/v1/base/info_sites.php

    r96128 r109820  
    1212if (!defined("_ECRIRE_INC_VERSION")) {
    1313        return;
     14}
     15
     16/**
     17 * Déclaration des alias de tables et filtres automatiques de champs
     18 *
     19 * @pipeline declarer_tables_interfaces
     20 * @param array $interfaces
     21 *     Déclarations d'interface pour le compilateur
     22 * @return array
     23 *     Déclarations d'interface pour le compilateur
     24 */
     25function info_sites_declarer_tables_interfaces($interfaces) {
     26
     27        $interfaces['table_des_tables']['projets_references'] = 'projets_references';
     28
     29        return $interfaces;
    1430}
    1531
     
    4965                'defaut' => 'chef_projets',
    5066        );
     67        $tables['spip_projets_references'] = array(
     68                'type' => 'projets_reference',
     69                'principale' => 'oui',
     70                'page' => 'projets_reference',
     71                'table_objet_surnoms' => array('projetsreference'), // table_objet('projets_reference') => 'projets_references'
     72                'field'=> array(
     73                        'id_projets_reference' => 'bigint(21) NOT NULL',
     74                        'nom'                => 'text NOT NULL DEFAULT ""',
     75                        'url_site'           => 'varchar(255) NOT NULL DEFAULT ""',
     76                        'organisation'       => 'text NOT NULL DEFAULT ""',
     77                        'maj'                => 'TIMESTAMP'
     78                ),
     79                'key' => array(
     80                        'PRIMARY KEY'        => 'id_projets_reference',
     81                ),
     82                'titre' => 'nom AS titre, "" AS lang',
     83                #'date' => '',
     84                'champs_editables'  => array('nom', 'url_site', 'organisation'),
     85                'champs_versionnes' => array('nom', 'url_site', 'organisation'),
     86                'rechercher_champs' => array(),
     87                'tables_jointures'  => array('spip_projets_references_liens'),
     88        );
    5189
    5290        return $tables;
    5391}
    5492
     93/**
     94 * Déclaration des tables secondaires (liaisons)
     95 *
     96 * @pipeline declarer_tables_auxiliaires
     97 * @param array $tables
     98 *     Description des tables
     99 * @return array
     100 *     Description complétée des tables
     101 */
     102function info_sites_declarer_tables_auxiliaires($tables) {
     103
     104        $tables['spip_projets_references_liens'] = array(
     105                'field' => array(
     106                        'id_projets_reference' => 'bigint(21) DEFAULT "0" NOT NULL',
     107                        'id_objet'           => 'bigint(21) DEFAULT "0" NOT NULL',
     108                        'objet'              => 'VARCHAR(25) DEFAULT "" NOT NULL',
     109                        'vu'                 => 'VARCHAR(6) DEFAULT "non" NOT NULL',
     110                ),
     111                'key' => array(
     112                        'PRIMARY KEY'        => 'id_projets_reference,id_objet,objet',
     113                        'KEY id_projets_reference' => 'id_projets_reference',
     114                )
     115        );
     116
     117        return $tables;
     118}
  • _plugins_/info_sites/branches/v1/info_sites_administrations.php

    r101505 r109820  
    4343        cextras_api_upgrade(info_sites_declarer_champs_extras(), $maj['1.1.0']);
    4444        $maj['1.2.0'][] = array('info_sites_maj_120');
     45        $maj['1.3.0'][] = array('maj_tables', array('spip_projets_references', 'spip_projets_references_liens'));
     46        $maj['1.3.1'][] = array('info_sites_menu_pages');
    4547
    4648        include_spip('base/upgrade');
     
    5860function info_sites_vider_tables($nom_meta_base_version) {
    5961        include_spip('inc/meta');
     62        include_spip('base/abstract_sql');
    6063        include_spip('inc/cextras');
    6164        include_spip('base/info_sites_extras');
    6265        cextras_api_vider_tables(info_sites_declarer_champs_extras());
     66
     67        sql_drop_table('spip_projets_references');
     68        sql_drop_table('spip_projets_references_liens');
     69
     70        # Nettoyer les liens courants (le génie optimiser_base_disparus se chargera de nettoyer toutes les tables de liens)
     71        sql_delete('spip_documents_liens', sql_in('objet', array('projets_reference')));
     72        sql_delete('spip_mots_liens', sql_in('objet', array('projets_reference')));
     73        sql_delete('spip_auteurs_liens', sql_in('objet', array('projets_reference')));
     74        # Nettoyer les versionnages et forums
     75        sql_delete('spip_versions', sql_in('objet', array('projets_reference')));
     76        sql_delete('spip_versions_fragments', sql_in('objet', array('projets_reference')));
     77        sql_delete('spip_forum', sql_in('objet', array('projets_reference')));
     78
    6379        // On efface la meta de menu du plugin
    6480        effacer_meta('info_sites_menu');
     
    104120                        'icone' => 'fa fa-bar-chart-o fa-lg',
    105121                ),
     122                'projets_dashboard' => array(
     123                        'nom' => 'info_sites:titre_page_projets_dashboard',
     124                        'icone' => 'fa fa-dashboard fa-lg',
     125                ),
    106126        );
    107         $meta = lire_meta('info_sites_menu');
     127        $meta = lire_config('info_sites_menu');
    108128        if ($meta and $meta = @serialize($meta) and is_array($meta)) {
    109 
    110                 if (!array_key_exists(array_keys($liste_pages), $meta)) {
    111                         // ici il faudrait vérifier que `organisations`,
    112                         // `projets` et `sites` soient bien dans la meta
    113                         // pour permettre son utilisation standard à l'installation
    114                         foreach ($liste_pages as $key => $value) {
    115                                 $meta[$key] = $liste_pages[$key];
    116                         }
    117                 } else {
    118                         foreach ($meta as $key => $value) {
    119                                 if ($meta[$key] != $liste_pages[$key]) {
    120                                         $meta[$key] = $liste_pages[$key];
    121                                 }
    122                         }
    123                 }
    124                 // maintenant qu'on a vérifié les valeurs de la meta selon nos besoins de base,
     129                $meta = array_merge($liste_pages, $meta);
    125130                // on stocke sa nouvelle valeur dans `spip_meta`
    126                 ecrire_meta('info_sites_menu', @serialize($meta));
     131                ecrire_config('info_sites_menu', @serialize($meta));
    127132        } else {
    128                 ecrire_meta('info_sites_menu', @serialize($liste_pages));
     133                ecrire_config('info_sites_menu', @serialize($liste_pages));
    129134        }
    130135}
  • _plugins_/info_sites/branches/v1/info_sites_autorisations.php

    r101505 r109820  
    224224 **/
    225225function autoriser_infositesassocier_dist($faire, $type, $id, $qui, $opt) {
     226        if (is_array($opt) and isset($opt['projet'])) {
     227                $confirm = confirmer_roles_auteurs_projets($qui, $opt['projet']);
     228
     229                return $confirm;
     230        }
     231
    226232        return in_array($qui['statut'], array(
    227233                '0minirezo',
     
    486492
    487493/**
     494 * Surcharge d'autorisation de modifier (projet)
     495 *
     496 * @param  string $faire Action demandée
     497 * @param  string $type  Type d'objet sur lequel appliquer l'action
     498 * @param  int $id       Identifiant de l'objet
     499 * @param  array $qui    Description de l'auteur demandant l'autorisation
     500 * @param  array $opt    Options de cette autorisation
     501 *
     502 * @return bool          true s'il a le droit, false sinon
     503 **/
     504function autoriser_projet_modifier($faire, $type, $id, $qui, $opt) {
     505        return autoriser('infositesmodifier', 'projet', $id, $qui, $opt);
     506}
     507
     508/**
    488509 * Autorisation de créer (projet)
    489510 *
     
    530551 **/
    531552function autoriser_projet_infositesmodifier_dist($faire, $type, $id, $qui, $opt) {
    532         return in_array($qui['statut'], array(
    533                 '0minirezo',
    534                 '1comite',
    535         ));
     553
     554        if (in_array($qui['statut'], array('0minirezo',))) {
     555                return true;
     556        }
     557
     558        return confirmer_roles_auteurs_projets($qui, $id);
    536559}
    537560
     
    11651188                // Pas de séparateur/serialize prévu pour le moment.
    11661189                $role_creation = array($role_creation);
    1167         } elseif (is_array($role_creation) and count($role_creation) == 0) {
     1190        }
     1191        // On revoit le contenu du tableau $role_creation par sécu
     1192        if (is_array($role_creation) and count($role_creation) == 0) {
    11681193                // par défaut
    11691194                $role_creation = array(
     
    11761201                );
    11771202        }
     1203        // Si on est administrateur, pas de soucis.
     1204        if (in_array($qui['statut'], array('0minirezo'))) {
     1205                return true;
     1206        }
    11781207        $roles_autorises = array_intersect($roles, $role_creation);
    11791208        // roles_autorises est toujours un array et s'il est vide,
     
    11841213
    11851214        // On prend les statuts par défaut
    1186         return in_array($qui['statut'], array(
    1187                 '0minirezo',
    1188                 '1comite',
    1189         ));
    1190 }
     1215        return false;
     1216}
     1217
     1218
     1219// -----------------
     1220// Objet projets_references
     1221
     1222/**
     1223 * Autorisation de créer (projetsreference)
     1224 *
     1225 * @param  string $faire Action demandée
     1226 * @param  string $type  Type d'objet sur lequel appliquer l'action
     1227 * @param  int    $id    Identifiant de l'objet
     1228 * @param  array  $qui   Description de l'auteur demandant l'autorisation
     1229 * @param  array  $opt   Options de cette autorisation
     1230 * @return bool          true s'il a le droit, false sinon
     1231 **/
     1232function autoriser_projetsreference_creer_dist($faire, $type, $id, $qui, $opt) {
     1233        return autoriser('infositescreer', 'projetsreference', $id, $qui, $opt);
     1234}
     1235
     1236/**
     1237 * Autorisation de voir (projetsreference)
     1238 *
     1239 * @param  string $faire Action demandée
     1240 * @param  string $type  Type d'objet sur lequel appliquer l'action
     1241 * @param  int    $id    Identifiant de l'objet
     1242 * @param  array  $qui   Description de l'auteur demandant l'autorisation
     1243 * @param  array  $opt   Options de cette autorisation
     1244 * @return bool          true s'il a le droit, false sinon
     1245 **/
     1246function autoriser_projetsreference_voir_dist($faire, $type, $id, $qui, $opt) {
     1247        return autoriser('infositesvoir', 'projetsreference', $id, $qui, $opt);
     1248}
     1249
     1250/**
     1251 * Autorisation de modifier (projetsreference)
     1252 *
     1253 * @param  string $faire Action demandée
     1254 * @param  string $type  Type d'objet sur lequel appliquer l'action
     1255 * @param  int    $id    Identifiant de l'objet
     1256 * @param  array  $qui   Description de l'auteur demandant l'autorisation
     1257 * @param  array  $opt   Options de cette autorisation
     1258 * @return bool          true s'il a le droit, false sinon
     1259 **/
     1260function autoriser_projetsreference_modifier_dist($faire, $type, $id, $qui, $opt) {
     1261        return autoriser('infositesmodifier', 'projetsreference', $id, $qui, $opt);
     1262}
     1263
     1264/**
     1265 * Autorisation de supprimer (projetsreference)
     1266 *
     1267 * @param  string $faire Action demandée
     1268 * @param  string $type  Type d'objet sur lequel appliquer l'action
     1269 * @param  int    $id    Identifiant de l'objet
     1270 * @param  array  $qui   Description de l'auteur demandant l'autorisation
     1271 * @param  array  $opt   Options de cette autorisation
     1272 * @return bool          true s'il a le droit, false sinon
     1273 **/
     1274function autoriser_projetsreference_supprimer_dist($faire, $type, $id, $qui, $opt) {
     1275        return autoriser('infositessupprimer', 'projetsreference', $id, $qui, $opt);
     1276}
     1277
     1278
     1279
     1280/**
     1281 * Autorisation de lier/délier l'élément (projetsreferences)
     1282 *
     1283 * @param  string $faire Action demandée
     1284 * @param  string $type  Type d'objet sur lequel appliquer l'action
     1285 * @param  int    $id    Identifiant de l'objet
     1286 * @param  array  $qui   Description de l'auteur demandant l'autorisation
     1287 * @param  array  $opt   Options de cette autorisation
     1288 * @return bool          true s'il a le droit, false sinon
     1289 **/
     1290function autoriser_associerprojetsreferences_dist($faire, $type, $id, $qui, $opt) {
     1291        return autoriser('infositesassocier', 'projetsreferences', $id, $qui, $opt);
     1292
     1293}
     1294
     1295
     1296/**
     1297 * Autorisation d'iconifier un auteur (mettre un logo)
     1298 *
     1299 * Il faut un administrateur ou que l'auteur soit celui qui demande l'autorisation
     1300 *
     1301 * @param  string $faire Action demandée
     1302 * @param  string $type Type d'objet sur lequel appliquer l'action
     1303 * @param  int $id Identifiant de l'objet
     1304 * @param  array $qui Description de l'auteur demandant l'autorisation
     1305 * @param  array $opt Options de cette autorisation
     1306 * @return bool          true s'il a le droit, false sinon
     1307 **/
     1308function autoriser_projetsreference_iconifier_dist($faire, $type, $id, $qui, $opt) {
     1309        return false;
     1310}
  • _plugins_/info_sites/branches/v1/info_sites_fonctions.php

    r101505 r109820  
    4949         */
    5050        function lister_tables_objets() {
    51                 include_spip('bas/objets');
     51                include_spip('base/objets');
    5252                /* récupérer les tables principales */
    5353                $tables_principales = lister_tables_principales();
     
    7171 * Compter les éléments enregistrés dans une table.
    7272 *
    73  * @param       $table Le nom de la table à compter.
     73 * @param string $table Le nom de la table à compter.
    7474 * @param string $where Cibler des éléments en particulier
    7575 *
     
    193193                                $liste_plugins[$site_projet['id_projets_site']] = array();
    194194                                $liste_plugins_tmp = formater_tableau($site_projet['logiciel_plugins'], 'plugins');
    195                                 foreach ($liste_plugins_tmp as $key => $plugin) {
     195                                foreach ($liste_plugins_tmp as $index => $plugin) {
    196196                                        $logiciel = strtolower($site_projet['logiciel_nom']);
    197197                                        $info_plugin = charger_fonction('plugins_' . $logiciel, 'inc');
     
    206206                                                 */
    207207                                                if ($a_mettre_jour === false) {
    208                                                         unset($liste_plugins_tmp[$key]);
     208                                                        unset($liste_plugins_tmp[$index]);
    209209                                                } else {
    210210                                                        /**
     
    213213                                                         * qui contient le numéro de version de la maj
    214214                                                         */
    215                                                         $liste_plugins_tmp[$key] = $a_mettre_jour;
     215                                                        $liste_plugins_tmp[$index] = $a_mettre_jour;
    216216                                                }
    217217                                        }
     
    432432        }
    433433        $projets_roles = array();
    434         $projets_base = sql_allfetsel('id_auteur, role', 'spip_auteurs_liens', "objet='projet' AND id_objet=$id_projet");
     434        $projets_base = sql_allfetsel('id_auteur, role', 'spip_auteurs_liens', "objet='projet' AND id_objet=$id_projet AND id_auteur NOT IN (SELECT id_auteur FROM spip_auteurs WHERE statut='5poubelle')");
    435435
    436436        if (is_array($projets_base) and count($projets_base) > 0) {
     
    536536        $doublons = sql_allfetsel("COUNT(versioning_rss) as nbr_doublon, versioning_rss", 'spip_projets', "versioning_rss!=''", 'versioning_rss', '', '', "nbr_doublon > 1");
    537537
    538         var_dump($doublons);
     538        return $doublons;
    539539}
    540540
     
    543543        $doublons = sql_allfetsel("COUNT(guid) as nbr_doublon, guid", 'spip_commits', "guid!=''", 'guid', '', '', "nbr_doublon > 1");
    544544
    545         var_dump($doublons);
     545        return $doublons;
    546546}
    547547
     
    553553        return $f;
    554554}
     555
     556/**
     557 * Lister les releases d'un logiciel
     558 *
     559 * @param string $logiciel Nom du logiciel
     560 *
     561 * @return bool|mixed
     562 *          false : il n'y a pas de fichier listant les releases du logiciel
     563 *          array : tableau contenant toutes les releases du logiciel
     564 */
     565function releases($logiciel = 'spip') {
     566        /* par sécurité, on passe en minuscules */
     567        $logiciel = strtolower($logiciel);
     568        if (lire_fichier(_DIR_TMP . 'releases_' . $logiciel . '.txt', $contenu)) {
     569                $releases = unserialize($contenu);
     570
     571                return $releases;
     572        }
     573
     574        return false;
     575}
     576
     577/**
     578 * Récupérer le numéro de la dernière release du logiciel
     579 *
     580 * @param string $logiciel Nom du logiciel
     581 *
     582 * @return bool|mixed
     583 */
     584function last_release($logiciel = 'spip') {
     585        if ($releases = releases($logiciel) and $releases != false and is_array($releases)) {
     586
     587                return end($releases);
     588        }
     589
     590        return false;
     591}
     592
     593/**
     594 * Récupérer la dernière branche d'un logiciel
     595 *
     596 * @param string $logiciel Nom du logiciel
     597 * @param string $version
     598 *
     599 * @return bool|mixed
     600 */
     601function last_branch_release($logiciel = 'spip', $version = '') {
     602
     603        $calcul_branches = charger_fonction('branches', 'calcul');
     604        $branches = $calcul_branches($logiciel);
     605
     606        if ($branches != false and is_array($branches)) {
     607                if (empty($version) or is_null($version)) {
     608                        return end($branches);
     609                } else {
     610                        if ($releases = releases($logiciel) and $releases != false and is_array($releases)) {
     611                                $branches = preg_grep(",^" . version2branche($version) . ",", $releases);
     612                                $branches = array_values($branches);
     613
     614                                return end($branches);
     615                        }
     616
     617                        return false;
     618                }
     619        }
     620
     621        return false;
     622}
     623
     624/**
     625 * Calculer les branches d'un logiciel
     626 *
     627 * @param string $logiciel Nom du logiciel
     628 *
     629 * @return array|bool|mixed
     630 */
     631function calcul_branches_dist($logiciel) {
     632
     633        $logiciel = trim($logiciel);
     634        if (empty($logiciel) or is_null($logiciel)) {
     635                return false;
     636        }
     637        $releases = releases($logiciel);
     638        if (is_array($releases) and count($releases)) {
     639                foreach ($releases as $index => $release) {
     640                        $releases[$index] = version2branche($release);
     641                }
     642                $releases = array_unique($releases);
     643                $releases = array_values($releases);
     644
     645                return $releases;
     646        } else {
     647                return false;
     648        }
     649
     650}
     651
     652function info_sites_lister_projets($champ = 'nom') {
     653        if (empty($champ) or strlen($champ) == 0) {
     654                $champ = 'nom';
     655        }
     656        $results = array();
     657        include_spip('base/objets');
     658        /* récupérer les tables principales */
     659        $tables_principales = lister_tables_principales();
     660        $projets_tables = $tables_principales['spip_projets'];
     661        $projets_champs = array_keys($projets_tables['field']);
     662
     663        if (!in_array($champ, $projets_champs)) {
     664                return $results;
     665        }
     666
     667        include_spip('base/abstract_sql');
     668
     669        $all_projects = sql_allfetsel('DISTINCT(' . $champ . ')', 'spip_projets');
     670        if (is_array($all_projects) and count($all_projects) > 0) {
     671                foreach ($all_projects as $projet) {
     672                        $results[] = trim($projet[$champ]);
     673                }
     674        }
     675        $results = array_unique($results);
     676        $results = array_filter($results);
     677        natsort($results);
     678
     679        return $results;
     680
     681}
     682
     683
     684function info_sites_lister_organisations($champ = 'nom') {
     685        if (empty($champ) or strlen($champ) == 0) {
     686                $champ = 'nom';
     687        }
     688        $results = array();
     689        include_spip('base/objets');
     690        /* récupérer les tables principales */
     691        $tables_principales = lister_tables_principales();
     692        $organisations_tables = $tables_principales['spip_organisations'];
     693        $organisations_champs = array_keys($organisations_tables['field']);
     694
     695        if (!in_array($champ, $organisations_champs)) {
     696                return $results;
     697        }
     698
     699        include_spip('base/abstract_sql');
     700
     701        $all_organisations = sql_allfetsel('DISTINCT(' . $champ . ')', 'spip_organisations');
     702        if (is_array($all_organisations) and count($all_organisations) > 0) {
     703                foreach ($all_organisations as $organisation) {
     704                        $results[] = trim($organisation[$champ]);
     705                }
     706        }
     707        $results = array_unique($results);
     708        $results = array_filter($results);
     709        natsort($results);
     710
     711        return $results;
     712
     713}
  • _plugins_/info_sites/branches/v1/info_sites_options.php

    r98661 r109820  
    3232
    3333if (!defined('_FICHIER_MAJ_PLUGINS')) {
    34         define('_FICHIER_MAJ_PLUGINS', _DIR_TMP.'maj_sites_plugins.txt');
     34        define('_FICHIER_MAJ_PLUGINS', _DIR_TMP . 'maj_sites_plugins.txt');
    3535}
    3636
  • _plugins_/info_sites/branches/v1/info_sites_pipelines.php

    r101505 r109820  
    1616function info_sites_affiche_milieu($flux) {
    1717        include_spip('inc/utils');
     18        $texte = '';
     19        $e = trouver_objet_exec($flux['args']['exec']);
    1820        $liste_objets = array(
    1921                'organisations',
     
    2224                'projets_sites',
    2325        );
     26        // projets_references sur les projets
     27        if (!$e['edition'] and in_array($e['type'], array('projet'))) {
     28                $texte .= recuperer_fond('prive/objets/editer/liens', array(
     29                        'table_source' => 'projets_references',
     30                        'objet' => $e['type'],
     31                        'id_objet' => $flux['args'][$e['id_table_objet']],
     32                ));
     33        }
     34
    2435
    2536        $liste_plugins = isset($GLOBALS['meta']['plugin']) ? unserialize($GLOBALS['meta']['plugin']) : array();
     
    2940                $liste_objets[] = 'commits';
    3041        }
    31         if ($flux["args"]["exec"] == "accueil") {
     42        if ($e == "accueil") {
    3243                foreach ($liste_objets as $objet) {
    33                         $flux["data"] .= recuperer_fond('prive/objets/liste/' . $objet);
     44                        $texte .= recuperer_fond('prive/objets/liste/' . $objet);
     45                }
     46        }
     47
     48        if ($texte) {
     49                if ($p = strpos($flux['data'], '<!--affiche_milieu-->')) {
     50                        $flux['data'] = substr_replace($flux['data'], $texte, $p, 0);
     51                } else {
     52                        $flux['data'] .= $texte;
    3453                }
    3554        }
     
    86105        return $flux;
    87106}
     107
     108
     109/**
     110 * Optimiser la base de données
     111 *
     112 * Supprime les liens orphelins de l'objet vers quelqu'un et de quelqu'un vers l'objet.
     113 *
     114 * @pipeline optimiser_base_disparus
     115 *
     116 * @param  array $flux Données du pipeline
     117 *
     118 * @return array       Données du pipeline
     119 */
     120function info_sites_optimiser_base_disparus($flux) {
     121
     122        include_spip('action/editer_liens');
     123        $flux['data'] += objet_optimiser_liens(array('projets_reference' => '*'), '*');
     124
     125        return $flux;
     126}
  • _plugins_/info_sites/branches/v1/lang/info_sites_fr.php

    r101505 r109820  
    8181        'controle_projets_auteurs_orphelins' => 'Projets sans utilisateurs',
    8282        'controle_projets_auteurs_orphelins_explication' => 'Les projets qui seraient listés ci-dessous sont sans utilisateurs associés.',
     83        'controle_projets_references_menu' => 'Références de projets',
    8384        'controle_projets_date_debut_vide' => 'Date de démarrage non-saisie',
    8485        'controle_projets_date_livraison_prevue_vide' => 'Date de livraison prévue, non-saisie',
     
    9091        'controle_projets_orphelins' => 'Projets sans organisation',
    9192        'controle_projets_orphelins_sites' => 'Projets sans sites liés',
     93        'controle_projets_projets_sites_menu' => 'Les projets et leurs sites',
    9294        'controle_projets_sites_logiciel_nom_vide' => 'Nom du logiciel non-renseigné',
    9395        'controle_projets_sites_logiciel_version_vide' => 'Version du logiciel non-renseigné',
     
    214216        'titre_page_controle_info_sites' => 'Contrôler le contenu d’Info Sites',
    215217        'titre_page_lister_projets_sites' => 'Lister les sites de projets',
     218        'titre_page_projets_dashboard' => 'Tableau de bord des projets',
    216219
    217220        // V
  • _plugins_/info_sites/branches/v1/paquet.xml

    r101505 r109820  
    22        prefix="info_sites"
    33        categorie="outil"
    4         version="1.16.1"
     4        version="1.19.1"
    55        etat="test"
    6         compatibilite="[3.0.8;3.1.*]"
     6        compatibilite="[3.0.8;3.2.*]"
    77        logo="prive/themes/spip/images/info_sites-64.png"
    88        documentation="http://info-sites.readthedocs.io/"
    9         schema="1.2.0"
     9        schema="1.3.1"
    1010>
    1111        <nom>Info Sites</nom>
     
    1717
    1818        <!-- On indique les plugins minimum du core en cas de distribution dédiée d'InfoSites -->
    19         <necessite nom="svp" compatibilite="[0.80.0;]"/>
    20         <necessite nom="revisions" compatibilite="[1.7.0;]"/>
    21         <necessite nom="vertebres" compatibilite="[1.2.0;]"/>
    2219        <necessite nom="jqueryui" compatibilite="[1.8.0;]"/>
    2320        <necessite nom="medias" compatibilite="[2.7.0;]"/>
     21        <necessite nom="revisions" compatibilite="[1.7.0;]"/>
     22        <necessite nom="svp" compatibilite="[0.80.0;]"/>
     23        <necessite nom="vertebres" compatibilite="[1.2.0;]"/>
    2424
    25         <necessite nom="saisies" compatibilite="[2.2.3;]"/>
    26         <necessite nom="Zcore" compatibilite="[2.4.0;]"/>
     25        <necessite nom="cextras" compatibilite="[3.0.5;[" />
    2726        <necessite nom="contacts" compatibilite="[3.0.0;]"/>
    2827        <necessite nom="coordonnees" compatibilite="[2.2.4;]"/>
     28        <necessite nom="lesscss" compatibilite="[0.7.11;]"/>
    2929        <necessite nom="projets" compatibilite="[1.0.9;]"/>
    30         <necessite nom="lesscss" compatibilite="[0.7.11;]"/>
    3130        <necessite nom="projets_sites" compatibilite="[1.7.8;]"/>
    3231        <necessite nom="roles_auteurs" compatibilite="[1.0.0;]"/>
    3332        <necessite nom="rss_commits" compatibilite="[0.6.0;]"/>
     33        <necessite nom="saisies" compatibilite="[2.2.3;]"/>
    3434        <necessite nom="selecteurgenerique" compatibilite="[1.0.0;]"/>
    35         <necessite nom="cextras" compatibilite="[3.0.5;[" />
     35        <necessite nom="Zcore" compatibilite="[2.4.0;]"/>
    3636
    3737        <utilise nom="info_spip" compatibilite="[0.8.0;]"/>
    3838
    3939        <menu nom="controle_info_sites" parent="menu_publication" icone="images/info_sites-16.png" action="controle_info_sites" titre="info_sites:titre_controle_info_sites" />
     40        <menu nom="projets_references" titre="projets_reference:titre_projets_references" parent="menu_edition" icone="images/projets_reference-16.png" action="projets_references"/>
    4041
    4142        <lib nom="bootstrap-3.3.7" lien="https://github.com/twbs/bootstrap/releases/download/v3.3.7/bootstrap-3.3.7-dist.zip" />
     
    4647        <pipeline nom="compiler_branches_logiciel" action=''/>
    4748
     49        <pipeline nom="affiche_milieu" inclure="info_sites_pipelines.php"/>
     50        <pipeline nom="autoriser" inclure="info_sites_autorisations.php"/>
     51        <pipeline nom="compiler_branches_logiciel" inclure="info_sites_pipelines.php" />
     52        <pipeline nom="declarer_champs_extras" inclure="base/info_sites_extras.php" />
     53        <pipeline nom="declarer_tables_auxiliaires" inclure="base/info_sites.php" />
     54        <pipeline nom="declarer_tables_interfaces" inclure="base/info_sites.php" />
    4855        <pipeline nom="declarer_tables_objets_sql" inclure="base/info_sites.php" />
    49         <pipeline nom="declarer_champs_extras" inclure="base/info_sites_extras.php" />
    50 
    51         <pipeline nom="affiche_milieu" inclure="info_sites_pipelines.php"/>
    5256        <pipeline nom="header_prive" inclure="info_sites_pipelines.php"/>
     57        <pipeline nom="optimiser_base_disparus" inclure="info_sites_pipelines.php" />
    5358        <pipeline nom="taches_generales_cron" inclure="info_sites_pipelines.php" />
    54         <pipeline nom="compiler_branches_logiciel" inclure="info_sites_pipelines.php" />
    55 
    56         <pipeline nom="autoriser" inclure="info_sites_autorisations.php"/>
    5759
    5860        <chemin path="./" />
  • _plugins_/info_sites/branches/v1/prive/squelettes/inclure/controle/contacts.html

    r97978 r109820  
    33[(#BOITE_OUVRIR{<h3 class="legend" id="contacts_orphelins_organisations_bloc"><:info_sites:controle_contacts_orphelins_organisations:></h3>, 'info'})]
    44<div class="contacts_orphelins_organisations">
    5         [(#SET{where,"contacts.id_contact NOT IN (SELECT id_contact FROM spip_organisations_contacts)"})]
     5        [(#SET{where,"contacts.id_contact NOT IN (SELECT id_objet FROM spip_organisations_liens WHERE objet='contact')"})]
    66        <INCLURE{fond=objets/liste/contacts,where=#GET{where},pagination_id=_contacts_orphelins_organisations,sinon=<:info_sites:controle_ok:>,env}/>
    77        <div class="nettoyeur"></div>
  • _plugins_/info_sites/branches/v1/prive/squelettes/inclure/controle/organisations.html

    r97978 r109820  
    33[(#BOITE_OUVRIR{<h3 class="legend" id="organisations_orphelins_contacts_bloc"><:info_sites:controle_organisations_orphelins_contacts:></h3>, 'info'})]
    44<div class="organisations_orphelins_contacts">
    5         [(#SET{where,"organisations.id_organisation NOT IN (SELECT id_organisation FROM spip_organisations_contacts)"})]
     5        [(#SET{where,"organisations.id_organisation NOT IN (SELECT id_organisation FROM spip_organisations_liens WHERE objet='contact')"})]
    66        <INCLURE{fond=objets/liste/organisations,where=#GET{where},pagination_id=_organisations_orphelins_contacts,sinon=<:info_sites:controle_ok:>,env}/>
    77        <div class="nettoyeur"></div>
  • _plugins_/info_sites/branches/v1/prive/style_prive_plugin_info_sites.html

    r98661 r109820  
    8383        text-align: left;
    8484}
     85
     86.projets_reference #wysiwyg .champ {
     87    margin-bottom: 1em;
     88    overflow: hidden;
     89    padding-top: 0.5em;
     90    border-top: 1px solid #GET{claire};
     91}
     92.projets_reference #wysiwyg .champ.fieldset {
     93    margin: 2em -15px 0;
     94    padding-top: 0;
     95    border-top: 1px solid #cccccc;
     96    background-color: #GET{background-color};
     97}
     98
     99.projets_reference #wysiwyg .champ.fieldset h2,
     100.projets_reference #wysiwyg .champ.fieldset h3 {
     101    padding: 0.5em 15px;
     102    margin-bottom: 0;
     103    font-weight: normal;
     104}
     105.projets_reference #wysiwyg .champ .label.visible {
     106    display: block;
     107    width: 30%;
     108    margin-top:0;
     109    float: left;
     110    font-weight: bold;
     111    color: #GET{color};
     112    white-space: normal;
     113}
     114.projets_reference #wysiwyg .champ .span {
     115    display:block;
     116    width: 69%;
     117    float: right;
     118}
     119.projets_reference #wysiwyg .fieldset + .liste-objets {
     120    margin-top: 1em;
     121}
     122.projets_reference #wysiwyg .fieldset .titrem {
     123    display: block;
     124    font-weight: bold;
     125    padding: 7px 5px 7px 10px;
     126    border-top: 1px solid #GET{claire};
     127        background-color: #GET{background-color};
     128    color: #GET{foncee};
     129}
  • _plugins_/info_sites/branches/v1/squelettes/aside/controle_info_sites.html

    r98661 r109820  
    22        <div class="list-group menu">
    33                <BOUCLE_controle_fichiers (DATA) {source tableau, (#VAL{prive/squelettes/inclure/controle/}|find_all_in_path{'.html$'})}>[(#SET{controle,[(#CLE|replace{.html,''})]})]
    4                 <a href="[(#SELF|parametre_url{controle,#GET{controle}})]" class="list-group-item bouton voir bando2_[(#GET{controle})][(#ENV{controle}|=={#GET{controle}}|oui)active]">[(#VAL{info_sites:}|concat{'controle_',#GET{controle},'_menu'}|_T)]</a>
     4                <a href="[(#SELF|parametre_url{controle,#GET{controle}})]" class="list-group-item bouton voir bando2_[(#GET{controle})][(#GET{controle}|=={#ENV{controle,projets_projets_sites}|trim}|oui)active]">[(#VAL{info_sites:}|concat{'controle_',#GET{controle},'_menu'}|_T)]</a>
    55                </BOUCLE_controle_fichiers>
    66        </div>
  • _plugins_/info_sites/branches/v1/squelettes/aside/projet.html

    r101505 r109820  
    1414                ][(#AUTORISER{infositesassocier,auteurs,'',[(#SESSION|unserialize)],#ARRAY{projet,#ID_PROJET}}|oui)
    1515                <a role="menuitem" tabindex="-1" href="[(#URL_PAGE{editer_liens}|parametre_url{table_source,auteurs}|parametre_url{objet,projet}|parametre_url{id_objet,#ID_PROJET})]" class="list-group-item bouton editer_liens" rel="nofollow"><span class="fa-stack text-muted"><i class="fa fa-square fa-stack-2x"></i><i class="fa fa-link fa-stack-1x fa-inverse"></i></span> <:info_sites:editer_liens_auteur:></a>
    16                 ]<BOUCLE_site_secu (PROJETS_SITES) {id_projet} {tout} {1,2}> </BOUCLE_site_secu>[(#AUTORISER{infositesvoir,projessite,'',[(#SESSION|unserialize)],#ARRAY{projet,#ID_PROJET}}|oui)<a role="menuitem" tabindex="-1" href="[(#URL_PAGE{diagnostic_iso}|parametre_url{id_projet,#ID_PROJET})]" class="list-group-item bouton diagnostic"><span class="fa-stack text-primary"><i class="fa fa-square fa-stack-2x"></i><i class="fa fa-list fa-stack-1x fa-inverse"></i></span> <:info_sites:btn_diagnostic_iso:></a>]</B_site_secu>[
     16                ]<BOUCLE_site_secu (PROJETS_SITES) {id_projet} {tout} {1,2}> </BOUCLE_site_secu>[(#AUTORISER{infositesmodifier,projetssite,'',[(#SESSION|unserialize)],#ARRAY{projet,#ID_PROJET}}|oui)<a role="menuitem" tabindex="-1" href="[(#URL_PAGE{diagnostic_iso}|parametre_url{id_projet,#ID_PROJET})]" class="list-group-item bouton diagnostic"><span class="fa-stack text-primary"><i class="fa fa-square fa-stack-2x"></i><i class="fa fa-list fa-stack-1x fa-inverse"></i></span> <:info_sites:btn_diagnostic_iso:></a>]</B_site_secu>[
    1717                (#AUTORISER{infositessupprimer, projet, #ID_PROJET}|oui)
    1818                <a role="menuitem" tabindex="-1" href="[(#URL_ACTION_AUTEUR{supprimer_projet,#ID_PROJET,#URL_PAGE{projets}})]" class="list-group-item bouton website" onclick='return confirm("<:projet:confirmer_supprimer_projet:>\n\n<:projet:explication_supprimer_projet:>")'><span class="fa-stack text-danger"><i class="fa fa-square fa-stack-2x"></i><i class="fa fa-trash fa-stack-1x fa-inverse"></i></span>
  • _plugins_/info_sites/branches/v1/squelettes/aside/projets.html

    r96637 r109820  
    11<div class="block boutons">
    22        <div class="list-group menu" role="menu">
    3         [(#AUTORISER{infositescreer,projet})
     3                [(#AUTORISER{infositesmaj,projet})
     4                <a role="menuitem" tabindex="-1" href="[(#URL_PAGE{projets_dashboard}|parametre_url{controle,projets_references})]" class="list-group-item bouton voir" rel="nofollow"><span class="fa-stack text-info"><i class="fa fa-square fa-stack-2x"></i><i class="fa fa-eye fa-stack-1x fa-inverse"></i></span> <:info_sites:controle_projets_references_menu:></a>
     5                ][(#AUTORISER{infositescreer,projet})
    46                <a role="menuitem" tabindex="-1" href="[(#URL_PAGE{projet_edit,new=oui}|parametre_url{redirect,#URL_SITE_SPIP/#SELF})]" class="list-group-item bouton creer" rel="nofollow"><span class="fa-stack text-success"><i class="fa fa-square fa-stack-2x"></i><i class="fa fa-plus-circle fa-stack-1x fa-inverse"></i></span> <:projet:icone_creer_projet:></a>
    5         ]</div>
     7                ]
     8        </div>
    69</div>
  • _plugins_/info_sites/branches/v1/squelettes/content/controle.html

    r96106 r109820  
    11<h1>Contrôle</h1>
    22[(#SET{contacts_liens,#ARRAY})]
    3 <BOUCLE_contacts_liens (spip_organisations_contacts) {tout} {fusion id_contact}>[(#SET{contacts_liens,[(#GET{contacts_liens}|push{#ID_CONTACT})]})] </BOUCLE_contacts_liens>
     3<BOUCLE_contacts_liens (spip_organisations_liens) {objet="contact"} {fusion id_objet}>[(#SET{contacts_liens,[(#GET{contacts_liens}|push{#ID_OBJET})]})] </BOUCLE_contacts_liens>
    44<B_contacts>
    55        <div class="liste-objets contacts">
  • _plugins_/info_sites/branches/v1/squelettes/content/diagnostic_iso.html

    r97729 r109820  
    11<BOUCLE_principal (PROJETS) {id_projet}>
    2         [(#AUTORISER{infositesvoir,projet,#ID_PROJET}|sinon_interdire_acces{'',401,<:info_sites:zone_restreinte:>})]
     2        [(#AUTORISER{infositesmodifier,projet,#ID_PROJET}|sinon_interdire_acces{'',401,<:info_sites:zone_restreinte:>})]
    33[(#BOITE_OUVRIR{[
    44    <h1 class="titre">[(#RANG). ](#NOM|sinon{<:info_sans_titre:>})</h1>
  • _plugins_/info_sites/branches/v1/squelettes/content/projet_edit.html

    r96584 r109820  
    1 [(#AUTORISER{infositesmodifier,projet,#ID_PROJET}|sinon_interdire_acces{'',401,<:info_sites:zone_restreinte:>})]
     1[(#ID_PROJET|oui)
     2        [(#AUTORISER{infositesmodifier,projet,#ID_PROJET}|sinon_interdire_acces{'',401,<:info_sites:zone_restreinte:>})]
     3][(#ID_PROJET|non)
     4        [(#AUTORISER{infositescreer,projet}|sinon_interdire_acces{'',401,<:info_sites:zone_restreinte:>})]
     5]
    26[(#INCLURE{fond=prive/squelettes/contenu/#ENV{page},exec=#ENV{page},env})]
  • _plugins_/info_sites/branches/v1/squelettes/css/info_sites.less

    r100283 r109820  
    841841                        margin-top: 10px;
    842842                        font-size: 28px;
    843 
     843                        overflow: hidden;
    844844                        a {
    845845                                color: @bg-dark;
     846                        }
     847                        img {
     848                                float: left;
     849                                margin-right: 15px;
    846850                        }
    847851                }
  • _plugins_/info_sites/branches/v1/squelettes/css/variables.less

    r96402 r109820  
    77//
    88//## Gray and brand colors for use across Bootstrap.
    9 
    10 @gray-darker:           lighten(#000, 13.5%); // #222
    11 @gray-dark:             lighten(#000, 20%);   // #333
    12 @gray:                  lighten(#000, 33.5%); // #555
    13 @gray-light:            lighten(#000, 46.7%); // #777
    14 @gray-lighter:          lighten(#000, 93.5%); // #eee
     9@gray-base:                                             #000;
     10@gray-darker:           lighten(@gray-base, 13.5%); // #222
     11@gray-dark:             lighten(@gray-base, 20%);   // #333
     12@gray:                  lighten(@gray-base, 33.5%); // #555
     13@gray-light:            lighten(@gray-base, 46.7%); // #777
     14@gray-lighter:          lighten(@gray-base, 93.5%); // #eee
    1515
    1616@gray-second:           #a8a8a8;
     
    3030@brand-danger:          #d9534f;
    3131
    32 @bg-primary:            #906021;
    33 @bg-primary-light:      #449dd5;
    34 @bg-success:            #49A8DD;
    35 @bg-info:               #2ec1cc;
    36 @bg-warning:            #ffb61c;
    37 @bg-danger:             #e94b3b;
     32@bg-primary:            @brand-primary;
     33@bg-primary-light:      lighten(@bg-primary, 13.5%);
     34@bg-success:            @brand-success;
     35@bg-info:               @brand-info;
     36@bg-warning:            @brand-warning;
     37@bg-danger:             @brand-danger;
    3838@bg-orange:             #f98e33;
    3939@bg-violet:             #4A5171;
    4040@bg-dark:               #666666;
    4141@bg-bright:             #fafafa;
    42 @bg-reverse:            white;
     42@bg-reverse:            @white;
    4343@bg-site:               #F0F0F0;
    4444
  • _plugins_/info_sites/branches/v1/squelettes/extra/diagnostic.html

    r96465 r109820  
    33Le filtre sinon_interdire_access est à utiliser uniquement dans content/objet.html
    44]
    5 <BOUCLE_autorisation (CONDITION) {si #AUTORISER{infositesvoir,projessite}|oui}>
     5<BOUCLE_autorisation (CONDITION) {si #AUTORISER{infositesvoir,projetssite}|oui}>
    66        <B_sites>
    77                <div id="extra">
  • _plugins_/info_sites/branches/v1/squelettes/extra/projets_site.html

    r96470 r109820  
    44        Le filtre sinon_interdire_access est à utiliser uniquement dans content/objet.html
    55        ]
    6         <BOUCLE_autorisation (CONDITION) {si #AUTORISER{infositesvoir,projes_site,#ID_PROJETS_SITE}|oui}>
     6        <BOUCLE_autorisation (CONDITION) {si #AUTORISER{infositesvoir,projetssite,#ID_PROJETS_SITE}|oui}>
    77                <div id="extra">
    88                        <h2 id="<:info_sites:titre_informations_annexes|trim|translitteration_rapide|replace{' ','_'}|strtolower:>" class="legend"><:info_sites:titre_informations_annexes:></h2>
  • _plugins_/info_sites/branches/v1/squelettes/formulaires/login.html

    r96690 r109820  
    3131                                ]<input type='password' class='text password form-control' name='password' id='password' value="" placeholder="<:login_pass2|attribut_html:>"  size='40' autocapitalize="off" autocorrect="off" />
    3232                                <p class='details'><a href="[(#URL_PAGE{spip_pass}|parametre_url{lang,#LANG})]" id='spip_pass'><:login_motpasseoublie:></a></p>
     33                                [(#AUTORISER{inscrireauteur,6forum}|oui)<p class="details"><a href="[(#URL_PAGE{inscription}|parametre_url{lang,#LANG})]"><:pass_vousinscrire:></a> </p>]
    3334                        </div>
    3435                        [(#ENV{rester_connecte})
  • _plugins_/info_sites/branches/v1/squelettes/formulaires/mot_de_passe.html

    r96690 r109820  
    1 <div class="formulaire_spip formulaire_mot_de_passe">
     1<div class="formulaire_spip formulaire_#FORM">
    22        [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
    33        [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
     
    2222                </fieldset>
    2323                [(#REM) Piege a robots spammeurs ]
    24                 <div class="hidden">
     24                <div class="hidden invisible">
    2525                        <label for="nobot"><:antispam_champ_vide:></label>
    2626                        <input type="text" class="text" name="nobot" id="nobot" value="#ENV{nobot}" size="10" />
  • _plugins_/info_sites/branches/v1/squelettes/header/dist.html

    r96200 r109820  
    22        <header class="accueil clearfix col-md-7 col-sm-5">
    33                <h1 id="logo_site_spip">[(#SI_PAGE{sommaire}|non)<a rel="start home" href="#URL_SITE_SPIP/" title="<:accueil_site:>"
    4                 >][(#LOGO_SITE_SPIP|image_reduire{300,100}) ]#NOM_SITE_SPIP<br>
     4                >][(#LOGO_SITE_SPIP|image_reduire{*,75}) ]#NOM_SITE_SPIP<br>
    55                [<small id="slogan_site_spfgbfgbip">(#SLOGAN_SITE_SPIP)</small>]
    66                [(#SI_PAGE{sommaire}|non)</a>]</h1>
  • _plugins_/info_sites/branches/v1/squelettes/inclure/head.html

    r100283 r109820  
    2828[<link rel="stylesheet" href="(#CSS{css/info_sites.css})" type="text/css" />]
    2929[
    30 (#ENV{type-page}|in_array{#LISTE{login,spip_pass}}|oui)
     30(#ENV{type-page}|in_array{#LISTE{login,spip_pass,inscription}}|oui)
    3131[<link rel="stylesheet" href="(#CSS{css/signin.css})" type="text/css" />]
    3232][
Note: See TracChangeset for help on using the changeset viewer.