Browse Source

formatage

master
rija.propitech 2 weeks ago
parent
commit
77f94d6415
  1. 30
      action/ajouter_imagecci.php
  2. 74
      cci_pipelines.php
  3. 29
      formulaires/configurer_cci.html
  4. 8
      javascript/cci.js

30
action/ajouter_imagecci.php

@ -10,44 +10,44 @@
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
include_spip('inc/getdocument');
include_spip('inc/documents');
function action_ajouter_imagecci_dist($arg = null) {
function action_ajouter_imagecci_dist($arg = null)
{
if(is_null($arg)){
if (is_null($arg)) {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
}
if(is_null($arg) || !is_string($arg) || !isset($_FILES['fichiers']) || !is_array($_FILES['fichiers'])){
if (is_null($arg) || !is_string($arg) || !isset($_FILES['fichiers']) || !is_array($_FILES['fichiers'])) {
return array(
"succes" => false,
"data" => "argument invalide ou action non autorisé ou fichier introuvable"
"data" => "argument invalide ou action non autorisé ou fichier introuvable",
);
}
$arg = explode('-', $arg);
if(count($arg) != 2){
if (count($arg) != 2) {
return array(
"succes" => false,
"data" => "Argument d'objet invalide"
"data" => "Argument d'objet invalide",
);
}
$resultat = array(
'data' => ''
'data' => '',
);
include_spip('action/ajouter_documents');
$ajouter_un_document = charger_fonction('ajouter_un_document', 'action');
$conf = lire_config('conf_modele_cci');
$align = lire_config('conf_alignement_modele_cci', 'left');
$default_conf = !empty($conf['conf_modele_cci'])?$conf['conf_modele_cci']:'doc';
foreach($_FILES['fichiers']['name'] as $index => $name){
$default_conf = !empty($conf['conf_modele_cci']) ? $conf['conf_modele_cci'] : 'doc';
foreach ($_FILES['fichiers']['name'] as $index => $name) {
// reconstruction d'un fichier singulier de type $_FILE
$file = array();
$file['name'] = $name;
@ -60,13 +60,13 @@ function action_ajouter_imagecci_dist($arg = null) {
$file['mode'] = 'image';
// insertion du document
$res = $ajouter_un_document('new', $file, $arg[0], $arg[1], "image");
if(is_numeric($res)){
$res = "<".$default_conf."$res|$align>";
}else{
if (is_numeric($res)) {
$res = "<" . $default_conf . "$res|$align>";
} else {
$res = "[cci] Erreur $res";
}
$resultat['data'] .= $res;
}
echo json_encode($resultat);
}
}

74
cci_pipelines.php

@ -4,7 +4,7 @@
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2020 *
* rija.propitech *
* rija.propitech *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
@ -19,24 +19,26 @@ if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Ajout du script js dans le header de l'espace privé
**/
function cci_header_prive($flux){
* Ajout du script js dans le header de l'espace privé
**/
function cci_header_prive($flux)
{
$js = find_in_path('javascript/cci.js');
$flux .= "\n<script src=\"$js\" type=\"text/javascript\"></script>\n";
return $flux;
return $flux;
}
/**
* Ajouter le script dans l'espace public et tenir compte du plugin crayon s'il est activé
**/
function cci_insert_head($flux) {
if(test_plugin_actif('crayons') == true && isset($GLOBALS['contexte']['type-page'])){
**/
function cci_insert_head($flux)
{
if (test_plugin_actif('crayons') == true && isset($GLOBALS['contexte']['type-page'])) {
$objet = $GLOBALS['contexte']['type-page'];
$id_objet = @$GLOBALS['contexte']['id_'.$objet];
$id_objet = @$GLOBALS['contexte']['id_' . $objet];
// si valide, on ajoute un input hidden contenant le lien pour l'édition de l'objet
if(is_numeric($id_objet) && in_array($objet, ['article','rubrique']) && cci_si_autoriser($objet, $id_objet)){
$flux .= "<input type='hidden' class='cci_data_crayon' lien='".htmlentities(cci_lien_edition($objet, $id_objet))."'/>";
if (is_numeric($id_objet) && in_array($objet, ['article', 'rubrique']) && cci_si_autoriser($objet, $id_objet)) {
$flux .= "<input type='hidden' class='cci_data_crayon' lien='" . htmlentities(cci_lien_edition($objet, $id_objet)) . "'/>";
}
}
@ -47,42 +49,49 @@ function cci_insert_head($flux) {
/**
* Insertion d'attribut de nom 'ccilien' sur les textarea d'édition des objets
**/
function cci_formulaire_fond($fond){
**/
function cci_formulaire_fond($fond)
{
if(isset($fond['args']['form'])
if (isset($fond['args']['form'])
&& in_array($fond['args']['form'], ['forum', 'forum_prive', 'editer_article', 'editer_rubrique', 'editer_breve'])
){
) {
$objets = ['forum', 'forum_prive', 'article', 'rubrique', 'breve'];
$objet = '';
$id_objet = '';
if(in_array($fond['args']['form'], ['forum', 'forum_prive'])){
if (in_array($fond['args']['form'], ['forum', 'forum_prive'])) {
$objet = $fond['args']['form'];
$id_objet = $fond['args']['contexte']['id_forum'];
}else if(strpos($fond['args']['form'], 'editer_') !== false){
} else if (strpos($fond['args']['form'], 'editer_') !== false) {
$objet = explode('_', $fond['args']['form'])[1];
$id_objet = $fond['args']['contexte']["id_$objet"];
}
if(empty($objet) || !is_numeric($id_objet)) return $fond;
if (empty($objet) || !is_numeric($id_objet)) {
return $fond;
}
// détermination de l'autorisation
if(!cci_si_autoriser($objet, $id_objet)) return $fond;
if (!cci_si_autoriser($objet, $id_objet)) {
return $fond;
}
// ajout de l'attribut ccilien aux textarea
$parser = new DOMDocument();
$parser->loadHTML('<?xml encoding="utf-8" ?>'.$fond['data']);
if($parser->getElementsByTagName('textarea')->count() == 0) return $fond;
$parser->loadHTML('<?xml encoding="utf-8" ?>' . $fond['data']);
if ($parser->getElementsByTagName('textarea')->count() == 0) {
return $fond;
}
$lien = cci_lien_edition($objet, $id_objet);
foreach($parser->getElementsByTagName('textarea') as $textarea){
foreach ($parser->getElementsByTagName('textarea') as $textarea) {
$textarea->setAttribute('ccilien', $lien);
}
$html = $parser->saveHTML();
if($html !== false){
if ($html !== false) {
$fond['data'] = $html;
}
}
@ -91,23 +100,23 @@ function cci_formulaire_fond($fond){
}
/**
* Détermine si on est autorisé à joindre un document par cci pour cet objet
*
* @param string $objet
* Type de l'objet
* @param string $id_objet
* @param string $id_objet
* identifiant de l'objet
* @return bool
*
**/
function cci_si_autoriser($objet, $id_objet){
**/
function cci_si_autoriser($objet, $id_objet)
{
include_spip('inc/autoriser');
$autoriser = false;
if(isset($GLOBALS['visiteur_session']['id_auteur']) && in_array($objet, ['forum','forum_prive'])){
if (isset($GLOBALS['visiteur_session']['id_auteur']) && in_array($objet, ['forum', 'forum_prive'])) {
$autoriser = true;
}else {
} else {
$autoriser = autoriser('joindredocument', $objet, $id_objet);
}
return $autoriser;
@ -118,12 +127,13 @@ function cci_si_autoriser($objet, $id_objet){
*
* @param string $objet
* Type de l'objet
* @param string $id_objet
* @param string $id_objet
* identifiant de l'objet
* @return string
* le lien
**/
function cci_lien_edition($objet, $id_objet){
**/
function cci_lien_edition($objet, $id_objet)
{
$securiser_action = charger_fonction('securiser_action', 'inc');
return $securiser_action('ajouter_imagecci', "$objet-$id_objet", "", false);
}

29
formulaires/configurer_cci.html

@ -3,27 +3,32 @@
<div>
#ACTION_FORMULAIRE{#ENV{action}}
<fieldset>
<ul>
<li class="editer" >
<ul>
<li class="editer">
<p class="explication">Pour l'insertion de l'image</p>
<div style="display:flex;flex-direction:column;">
<div><input type="radio" name="conf_modele_cci" id="modele_doc" value="doc" [(#ENV{conf_modele_cci}|=={doc}|?{'checked',''})]> Modèle doc</div>
<div><input type="radio" name="conf_modele_cci" id="modele_img" value="img" [(#ENV{conf_modele_cci}|=={img}|?{'checked',''})]> Modèle img</div>
<div><input type="radio" name="conf_modele_cci" id="modele_doc" value="doc"
[(#ENV{conf_modele_cci}|=={doc}|?{'checked',''})]> Modèle doc</div>
<div><input type="radio" name="conf_modele_cci" id="modele_img" value="img"
[(#ENV{conf_modele_cci}|=={img}|?{'checked',''})]> Modèle img</div>
</div>
</li>
</ul>
</fieldset>
<fieldset>
<ul>
<li class="editer" >
<ul>
<li class="editer">
<p class="explication">Alignement par défaut</p>
<div style="display:flex;flex-direction:column;">
<div><input type="radio" name="conf_alignement_modele_cci" id="modele_doc" value="left" [(#ENV{conf_alignement_modele_cci,left}|=={left}|?{'checked',''})]>Left</div>
<div><input type="radio" name="conf_alignement_modele_cci" id="modele_img" value="right" [(#ENV{conf_alignement_modele_cci}|=={right}|?{'checked',''})]>Right</div>
<div><input type="radio" name="conf_alignement_modele_cci" id="modele_img" value="center" [(#ENV{conf_alignement_modele_cci}|=={center}|?{'checked',''})]>Center</div>
<div><input type="radio" name="conf_alignement_modele_cci" id="modele_doc" value="left"
[(#ENV{conf_alignement_modele_cci,left}|=={left}|?{'checked',''})]>Left</div>
<div><input type="radio" name="conf_alignement_modele_cci" id="modele_img" value="right"
[(#ENV{conf_alignement_modele_cci}|=={right}|?{'checked',''})]>Right</div>
<div><input type="radio" name="conf_alignement_modele_cci" id="modele_img" value="center"
[(#ENV{conf_alignement_modele_cci}|=={center}|?{'checked',''})]>Center</div>
</div>
</li>
</ul>
</fieldset>
@ -34,6 +39,6 @@
<p class='boutons'>
<input type='submit' class='submit' value='<:bouton_enregistrer:>' />
</p>
</div>
</div>
</form>
</div>

8
javascript/cci.js

@ -4,12 +4,12 @@ window.addEventListener('paste', e => {
var lien = '';
const activeElement = document.activeElement
if (activeElement.tagName != 'TEXTAREA' || !activeElement.hasAttribute('ccilien')){
if (activeElement.tagName != 'TEXTAREA' || !activeElement.hasAttribute('ccilien')) {
var dataH = document.querySelector('.cci_data_crayon');
if(!dataH) return;
if (!dataH) return;
lien = dataH.getAttribute('lien');
if(!lien) return;
}else{
if (!lien) return;
} else {
lien = activeElement.getAttribute('ccilien');
}

Loading…
Cancel
Save