Changeset 106343 in spip-zone


Ignore:
Timestamp:
Sep 19, 2017, 10:15:37 AM (3 years ago)
Author:
marcimat@…
Message:

On remplace le formulaire odt2spip par un nouveau 'document2spip',
qui peut prendre en entrée plusieurs types de documents éventuellement
(ie: si un serveur de conversion est indiqué en configuration (mais il faut le faire))

L’idée (à faire) est de pouvoir passer, à terme, des .docx, de les traduire en .odt,
et de les importer ensuite avec odt2spip comme avant.

Location:
_plugins_/odt2spip/trunk
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/odt2spip/trunk/formulaires/odt2spip.php

    r106329 r106343  
    101101                array(
    102102                        'attacher_fichier' => _request('attacher_fichier'),
     103                        'fichier_source' => $fichier,
    103104                )
    104105        );
  • _plugins_/odt2spip/trunk/inc/odt2spip.php

    r106329 r106343  
    44        return;
    55}
     6
     7/**
     8 * Indique si un convertisseur de document est disponible
     9 * @return bool
     10 */
     11function odt2spip_convertisseur_disponible() {
     12        return false; // TODO: Test de configuration
     13}
     14
     15/**
     16 * Retourne la liste des extensions de documents acceptées
     17 * @param bool $accept True pour retourner au format 'accept' d’html5
     18 * @return string|string[]
     19 */
     20function odt2spip_liste_extensions_acceptees($accept = false) {
     21        if (odt2spip_convertisseur_disponible()) {
     22                // TODO: vérifier la liste des extensions possibles
     23                $liste = array('odt', 'doc', 'docx', 'html', 'pdf');
     24        } else {
     25                $liste = array('odt');
     26        }
     27        if ($accept) {
     28                return '.' . implode(',.', $liste);
     29        }
     30        return $liste;
     31}
     32
    633
    734/**
     
    185212        }
    186213
    187         // si nécessaire attacher le fichier odt à l'article
    188         // et lui mettre un titre signifiant
    189         if (!empty($options['attacher_fichier'])) {
    190                 $titre = $set['titre'];
    191                 $ajouter_documents = charger_fonction('ajouter_documents', 'action');
    192                 $id_document = $ajouter_documents(
    193                         'new',
     214        // si nécessaire attacher le fichier source à l'article
     215        if (!empty($options['attacher_fichier']) and !empty($options['fichier_source'])) {
     216                odt2spip_objet_lier_fichier($options['fichier_source'], $objet, $id_objet, $set['titre']);
     217        }
     218
     219        // si nécessaire attacher le fichier odt généré à l'article
     220        if (
     221                !empty($options['attacher_fichier_odt']) and !empty($options['fichier_source'])
     222                and ($fichier != $options['fichier_source'] or !empty($options['attacher_fichier']))
     223        ) {
     224                odt2spip_objet_lier_fichier($fichier, $objet, $id_objet, $set['titre']);
     225        }
     226
     227        return true;
     228}
     229
     230/**
     231 * Lie un fichier en tant que document d’un objet.
     232 *
     233 * @param string $fichier
     234 * @param string $objet
     235 * @param int $id_objet
     236 * @param string $titre
     237 */
     238function odt2spip_objet_lier_fichier($fichier, $objet, $id_objet, $titre) {
     239        $ajouter_documents = charger_fonction('ajouter_documents', 'action');
     240        $id_document = $ajouter_documents(
     241                'new',
     242                array(
    194243                        array(
    195                                 array(
    196                                         'tmp_name' =>  $fichier,
    197                                         'name' => basename($fichier),
    198                                         'titrer' => 0,
    199                                         'distant' => 0,
    200                                         'type' => 'document'
    201                                 ),
     244                                'tmp_name' =>  $fichier,
     245                                'name' => basename($fichier),
     246                                'titrer' => 0,
     247                                'distant' => 0,
     248                                'type' => 'document'
    202249                        ),
    203                         $objet,
    204                         $id_objet,
    205                         'document'
     250                ),
     251                $objet,
     252                $id_objet,
     253                'document'
     254        );
     255        if (
     256                $id_document
     257                and $id_doc_odt = intval($id_document[0])
     258                and $id_doc_odt == $id_document[0]
     259        ) {
     260                $c = array(
     261                        'titre' => $titre,
     262                        'descriptif' => _T('odtspip:cet_article_version_odt'),
     263                        'statut' => 'publie'
    206264                );
    207                 if (
    208                         $id_document
    209                         and $id_doc_odt = intval($id_document[0])
    210                         and $id_doc_odt == $id_document[0]
    211                 ) {
    212                         $c = array(
    213                                 'titre' => $titre,
    214                                 'descriptif' => _T('odtspip:cet_article_version_odt'),
    215                                 'statut' => 'publie'
    216                         );
    217                         document_modifier($id_doc_odt, $c);
    218                 }
    219         }
    220 
    221         return true;
    222 }
     265                document_modifier($id_doc_odt, $c);
     266        }
     267}
     268
     269/**
     270 * Convertir un fichier vers le format odt en utilisant
     271 * un appel à une api de conversion.
     272 *
     273 * @param string $fichier_source
     274 * @return string|bool
     275 */
     276function odt2spip_convertir_fichier($fichier_source) {
     277        if (!odt2spip_convertisseur_disponible()) {
     278                return false;
     279        }
     280        // TODO: Appel à une API en postant le fichier source...
     281        return false;
     282}
  • _plugins_/odt2spip/trunk/odt2spip_pipelines.php

    r106329 r106343  
    3434        ) {
    3535                $out = recuperer_fond(
    36                         'prive/squelettes/inclure/odt2spip',
     36                        'prive/squelettes/inclure/document2spip',
    3737                        array(
    3838                                'objet' => 'rubrique',
     
    4141                        )
    4242                );
    43                 /*$out .= recuperer_fond(
    44                         'prive/squelettes/inclure/document2spip',
    45                         array(
    46                                 'objet' => 'rubrique',
    47                                 'id_objet' => $id_rubrique,
    48                                 'creer_objet' => 'article'
    49                         )
    50                 );*/
    5143                $flux['data'] .= $out;
    5244        } elseif (
     
    5648        ) {
    5749                $out = recuperer_fond(
    58                         'prive/squelettes/inclure/odt2spip',
     50                        'prive/squelettes/inclure/document2spip',
    5951                        array(
    6052                                'objet' => 'article',
     
    6254                        )
    6355                );
    64                 /*$out .= recuperer_fond(
    65                         'prive/squelettes/inclure/document2spip',
    66                         array(
    67                                 'objet' => 'article',
    68                                 'id_objet' => $id_article
    69                         )
    70                 );*/
    7156                $flux['data'] .= $out;
    7257        }
Note: See TracChangeset for help on using the changeset viewer.