Répondre

Veuillez composer votre message et l'envoyer
Options
Si vous êtes un être humain ne changez pas le contenu de ces deux champs.

Retour

Résumé de la discussion (messages les plus récents en premier)

Brice
12-03-2010 10:54

Salut Jonas,
Ça faisais un moment que je n'étais pas passé. Je regarde ce que donne ce code prochainement et te tiens au courant.

Merci encore et à+

jonas
19-02-2010 12:34

Et le code ... il y avait pas mal de chose auquel je n'avais pas pensé ...

<?php
                            if (test($item['authors'])) {
                                $tmplink = array();
                                foreach ($item['authors'] as $value) {
                                        $tmplink[] = '
                                                <a href="?collec='.$collec['id'].'&model='.$collec['model'].
                                                    '&filter=authors=='.$value.
                                                            ',|gcsfield1=='. $value.
                                                            ',|gcsfield2=='. $value.
                                                            ',|gcsfield3=='. $value.
                                                            ',|gcsfield4=='. $value.
                                                    '" >'.convstr::motor2xml($value).'
                                                </a>';
                                }
                                if (count($tmplink) > 0) {
                                    echo '
                                        <li>
                                            <span class="label">'.__('Auteurs').' :   </span>
                                            <span class="info">
                                                '.join(', ',$tmplink).'
                                            </span>
                                        </li>';
                                }
                            }
                        ?>

les [c]__('Auteurs')[/c] et [c]$item['authors'][/c] sont bien sûr à remplacer par les champs à afficher par ex par [c]__('Scénario')[/c] et [c]$item['gcsfield1'][/c]

jonas
18-02-2010 21:43
jonas
17-02-2010 19:33

Je te remercie pour l'adaptation du thème. Je le mettrai très certainement en ligne ce weekend.
Concernant tes 1 colonne/2 colonnes, je ne sais pas si c'est réalisable avec le *.php actuelle. Car aucune class ou id ne différencie les 1er éléments des suivant. Il faudrais donc aussi ré-écrire les list*****.php.

Pour ta suggestion de color-chooser ça ne ferra pas du tout partie de mes priorité car c'est tout de même complexe à réalisé et je ne juge pas ça très utile. Mais je le met dans les features request wink

Brice
17-02-2010 12:22

Salut,

Alors j'ai regardé les fichiers css et j'ai donc fait ce que tu suggérais, à savoir une mise à jour du template default_alien : j'ai repris le roundedblue et ai modifié les éléments qui vont bien en reprenant exactement les couleurs et certains ajouts de Panda (hover notamment).
J'ai créé une archive du thème : http://boucard.brice.perso.neuf.fr/myli … rso.tar.gz

Alors, je n'ai pas vraiment fait le tri : dans l'archive il y a tous les fichiers nécessaires pour que cela fonctionne chez moi, c'est-à-dire l'ensemble des fichiers php pour chaque type de collection (au vu de ma bidouille...). Je pourrai faire le tri si tu le désires.
J'ai en gros seulement modifié les fichier style.css (les autres css ne montrant aucune différence d'avec le thème roundedblue, j'ai simplement copié les fichiers de ce thème) ainsi que le foot.php où j'ai ajouté une mention pour la mise à jour.

Je verrai si des idées de template germent au cœur de mon esprit... J'ai bien une idée : permettre de présenter les collections dans la page d'accueil par colonne un peu comme avec Joomla : dernier article sur une seule colonne, articles plus anciens sur deux colonnes par exemple ; le truc chiant c'est que cela fonctionne avec des <table> et c'est quand même pas super chouette. Je pense donc que l'on peut utiliser des <div> avec une contrainte sur la taille : par exemple 45% et le second lui mettre une margin-left à 50% par exemple. Mais quid alors du troisième, du quatrième... ?
Là ça sort un peu de mes compétences, je bidouille seulement un peu... Sinon, je jouerai assez facilement sur les bordures, marges, couleurs et on verra ce que cela donne. Enfin, l'idée est quand même d'essayer de produire quelque chose d'original.

Une suggestion enfin : ne serait-il pas permis d'envisager une sorte de color-chooser sur le même modèle que le template-generator : à partir du thème choisi, un outil nous permettrait très facilement de changer les couleurs et seulement les couleurs ?

Encore merci et à+

jonas
15-02-2010 23:20

Pour le code je regarderai quand je trouverai le temps (relance moi si pas de réponse d'ici la fin du weekend prochain).

Pour le thème alien je me demandais justement si tu avais apporté des modifications car je suis étonné qui n'y a pas plus de problème (il a été réalisé pour gcweb 1.0 voir même une version précédente).

Je ne peux malheureusement pas m'occuper de la maintenance de ce thème mais je sais que panda qui l'a réalisé c'était largement basé sur le thème roundedblue. Pour ce dernier ces bug on été corrigé, je te laisse donc voire les modifications apporté à ce dernier : http://svnweb.tuxfamily.org/comp.php?re … &path=%2F&

Et/ou consulter le log http://svnweb.tuxfamily.org/log.php?rep … ss&rev=231

PS : il est peut être plus simple de repartir sur le thème roundedblue, car ce ne sont "que" dans changement de couleur. (un coup de "pipette" sur le une couleur du thème rounded blue, tu cherches le code hexa de la couleur (#3455FF) dans style.css, un coup de pipette sur le même élément de alien et tu remplaces le code hexa de style.css)

Si tu parviens à corriger (ou regréer un thème) je serais heureux d'intégré ton travail à la biblio des thèmes wink.

Brice
15-02-2010 22:24

Salut,

Alors j'ai essayé le code que tu as donné, mais ça plante... Je ne saurai trop dire où sachant que je ne comprends guère (en tout cas pas assez ce morceau).
Mais sinon, je trouve le fonctionnement actuel vraiment intéressant finalement.

Sinon, pour ce qui est du template, j'ai fait comme tu as dit et ça fonctionne impeccablement.

Par contre, j'ai fait un essai rapide avec une collection DVD et il semblerait qu'il y ait un bug dans le templates default et default_alien, au niveau de la liste d'acteurs comme tu peux le voir ici :
http://boucard.brice.perso.neuf.fr/myli … tem&item=1

A moins que cela ne soit normal (je parle des tirets) ?

A+

jonas
11-02-2010 19:11

Or ce que je voudrais faire c'est l'inverse.

Oups ! pardon big_smile

if (!in_array ...

j'ai essayé de copier le contenu du dossier "default_alien" vers "default_alien_perso"

En faite un "template" gcweb peut :
  * Soit n'être qu'une feuille de style et utilisé le code html du thème default
  * Soit modifier le code html et avoir une feuille de style
  * soit un truc entre deux et c'est le cas de Alien. En faite si le fichier <model>_<type>.php n'est pas trouver dans le thème gcweb ça prendre celui du thème default.

Ton cas étant un peu particulier voula comment tu devras procéder
  1) Copier default dans <ton theme>
  2) Copier alien dans <ton theme> en écrasant le fichier existant déjà

Qu'est-ce que le répertoire inc/

.. veux dire "dossier parent" dans si on résume .../mylibrary/inc/../templates/default_alien_perso/main_BD_Perso.php = .../mylibrary/templates/default_alien_perso/main_BD_Perso.php

j'ai le regret de t'annoncer que malgré toute mes tentatives...

if ($item['gcsfield1']) {
    echo '<li><span class="label">'.__('Scénario').' :   </span><span class="info">
        <a href="?collec='.$collec['id'].'&model='.$model.
                '&filter=authors=='.$item['gcsfield1'].
                        '|gcsfield1=='. $item['gcsfield1'].
                        '|gcsfield2=='. $item['gcsfield1'].
                        '|gcsfield3=='. $item['gcsfield1'].
                        '|gcsfield4=='. $item['gcsfield1'].
                '" '.$optionBalise.'>'.convstr::motor2xml($text).'
            </a></span></li>';
}
Brice
11-02-2010 02:04

Encore un nouveau message... et pourtant j'essaie de tout faire pour ne pas te persécuter :-)

jonas a écrit :

Essaie avec
Pour le template (élément squelettes), le plus simple est de créer ton template.
Copie /templates/default dans /templates/<ton template> et configure <ton template> dans la page de config.

Alors pour le template, j'ai essayé de suivre ton raisonnement : n'utilisant pas le thème "default" mais "default_alien" j'ai essayé de copier le contenu du dossier "default_alien" vers "default_alien_perso" en y ajoutant tous les élements de "squelette" pour mes types de collection Perso et BD_Perso et après configuration, je me retrouve avec

Les fichiers de thème de cette collection n'ont pas encore été créés. Cliquez ici pour les créer

Et si je lance le générateur, je relève cela :

À enregistrer dans : .../mylibrary/inc/../templates/default_alien_perso/main_BD_Perso.php

Qu'est-ce que le répertoire inc/ a à voir avec les thèmes ? Je vois bien qu'il y a le themegenerator.php et le convGCmodels.php dedans notamment mais pourquoi un tel chemin pour l'enregistrement ?


Pour en revenir à ta proposition pour modifier le comportement du clic sur un des éléments des champs Scénario, Dessin ou Couleur

Il est peut-être possible de changer ce comportement. essaie de remplacer

filter('authors==',$item['authors'])
#par
<a href="?collec='.$collec['id'].'&model='.$model.'&filter=authors=='.$item['authors'].'|gcsfield1=='.$item['authors'].'|gcsfield2=='.$item['authors'].'|gcsfield3=='.$item['authors'].'" '.$optionBalise.'>'.convstr::motor2xml($text).'</a>'

j'ai le regret de t'annoncer que malgré toute mes tentatives je me retrouve avec une erreur de syntaxe php due aux ' ou " ; voici la ligne telle qu'elle est actuellement :

if (test($item['gcsfield1']))       echo '<li><span class="label">'.__('Scénario').' :   </span><span class="info">'.filter('gcsfield1==',$item['gcsfield1']).'</span></li>';

Merci beaucoup et à+

Brice
11-02-2010 00:11

Alors si je mets

                        if (in_array('Collectif', $item['authors'])) {echo (($item['authors'] != 'Collectif') ? '<li><span class="label" style="font-style: italic;">'.__('Tout...').' :   </span><span class="info">'.filter('authors==',$item['authors']).'</span></li>' : '');}

la ligne Tout : ... n'apparaît pas pour les items dont le champs auteur est différent de Collectif. Or ce que je voudrais faire c'est l'inverse.
http://boucard.brice.perso.neuf.fr/myli … m&item=103
http://boucard.brice.perso.neuf.fr/myli … m&item=105

Suis-je assez clair ?

Pour ce qui est des templates, je n'avais pas pensé à ça...

Merci encore, à+

jonas
10-02-2010 23:48

Essaie avec

if (in_array('Collectif', $item['authors'])) ...

Si ça ne marche pas met voir un "print_r($item['authors'])" et donne moi le résultat.

Pour le template (élément squelettes), le plus simple est de créer ton template.
Copie /templates/default dans /templates/<ton template> et configure <ton template> dans la page de config.

Brice
10-02-2010 23:00

Salut,

Alors en ce qui concerne le champ auteur comprenant Collectif, c'est intéressant par exemple pour l'affichage en liste ; par contre, je souhaite avoir plus de détails pour l'affichage par item, d'où le recours aux champs Scénario, Dessin et Couleurs.

Vu le comportement du clic sur les auteurs apparaissant dans les champs scénario (seulement les BD où l'auteur est scénariste), dessin (seulement les BD est dessinateur) et couleur (seulement les BD où l'auteur est coloriste), je souhaite rajouter une ligne à partir de laquelle on ait accès à l'ensemble des BD de chaque auteur. Un exemple flagrant est Jirö Taniguchi qui peut être seulement dessinateur (http://boucard.brice.perso.neuf.fr/myli … $Taniguchi) ou au scénario (http://boucard.brice.perso.neuf.fr/myli … $Taniguchi)
Résultats à comparer avec ce que renvoie un clic sur cet auteur dans le champ auteur : http://boucard.brice.perso.neuf.fr/myli … $Taniguchi

Mais je souhaiterai ne pas avoir cette ligne "Tout :" lorsque le nom de l'auteur est "Collectif", comme par exemple ici : http://boucard.brice.perso.neuf.fr/myli … m&item=105

Voilà ce que j'ai tenté mais sans succès :

                        if ($item['authors'] != 'Collectif') {echo '<li><span class="label" style="font-style: italic;">'.__('Tout...').' :   </span><span class="info">'.filter('authors==',$item['authors']).'</span></li>';}
                        echo (($item['authors'] != 'Collectif') ? '<li><span class="label" style="font-style: italic;">'.__('Tout...').' :   </span><span class="info">'.filter('authors==',$item['authors']).'</span></li>' : '');

Sinon je teste ta proposition pour le comportement sur le clic sur les éléments des champs scénario, dessin et couleurs plus tard.

Enfin, je ne sais pas si je n'ai pas bien regardé, ou si c'est un élément que tu n'as pas relevé dans les suggestions que j'ai faites : le fait de pouvoir placer les éléments "squelettes" pour les collections personnelles ailleurs que dans /templates/default ?

Merci encore, et à+

jonas
10-02-2010 20:07

Ce qui fait que lorsque je clique sur un dessinateur, je n'obtiens que les BD où la personne est dessinateur

Il est peut-être possible de changer ce comportement. essaie de remplacer

filter('authors==',$item['authors'])
#par
<a href="?collec='.$collec['id'].'&model='.$model.'&filter=authors=='.$item['authors'].'|gcsfield1=='.$item['authors'].'|gcsfield2=='.$item['authors'].'|gcsfield3=='.$item['authors'].'" '.$optionBalise.'>'.convstr::motor2xml($text).'</a>'

(ou un truc qui resemble) mais : http://jonas.tuxfamily.org/bugs/index.p … task_id=80

Une suggestion : pourquoi ne pas faire apparaître le nom de l'auteur (ou de la série ou de l'éditeur...) en haut de liste après un clic sur l'un des éléments ?

Pourquoi pas, genre mettre un titre à la page mais ce n'est pas si simple (il y a les recherche qui contiennent le mot (=) avec le mot exacte (==) qui ne contienne pas (!=) ..., enfin ... je verrais ... peut-être : http://jonas.tuxfamily.org/bugs/index.p … task_id=81

Il me faudrait donc tester que le champ auteur n'est pas Collectif

Boha c'est la même chose qu'en javascript

if ($item['authors'] == 'Collectif')
{
    .... ;
}
else
{
    .... ;
}

Selon ce que tu veux faire (je n'ai pas compris ce que tu voulais comme comportement avec collectif) il y a des syntaxe plus compact

echo (($item['authors'] == 'Collectif') ? 'c'est un collectif' : 'ce n'est pas un collectif')
Brice
10-02-2010 03:52

Alors je dois avouer que si la découverte de GCWeb m'a vraiment bien stimulé, le fait de bidouiller (finalement que très légèrement) me rend assez admiratif et fier de n'utiliser que du libre (malgré quelques entorses... maudit monde du travail !) : les possibilités de personnalisation sont quand même assez incroyables.

Bon, récapitulatif de ce que j'ai fait :
- création d'un config.complement.php dans lequel je déclare le type personnalisé de collection selon l'id de la collection [voir ci-dessus] ;
- modification de fieldstypes.php en ajoutant les champs personnalisés ajoutés à la collection GCStar [voir ci-dessus] ;

A propos de ces champs personnalisés :
* les champs créés pour une collection basée sur un modèle de base sont déclarés dans le fichier de la collection (.gcs), entre les balises <userCollection></userCollection> [voir ci-dessus] ;
* ensuite chaque entrée de la collection se voit augmentée des champs créés comme ceci :

 <item
  id="3"
  isbn="9782871295785"
  title="Le Sommet des dieux, tome 1"
  cover="/home/bbrice/Bibliotheque/mesbd_pictures/Le_Sommet_des_dieux__tome_1_1.jpg"
  backpic=""
  publisher="Kana"
  publication="2004"
  language=""
  serie="Le Sommet des dieux"
  edition=""
  format=""
  pages=""
  web="http://www.amazon.fr/Sommet-dieux-1-Taniguchi/dp/2871295786/ref=sr_1_1/279-9396433-8606908?ie=UTF8&s=books&qid=1265479007&sr=1-1##Amazon (FR)"
  read="0"
  added="06/02/2010"
  rating="0"
  acquisition=""
  location=""
  translator=""
  artist=""
  borrower="none"
  lendDate=""
  borrowings=""
  favourite="0"
  tags=""
  gcsfield3=""
  gcsfield4=""
 >
  <description></description>
  <comments></comments>
  <authors>
   <line>
    <col>Jirô Taniguchi</col>
   </line>
   <line>
    <col>Yumemakura Baku</col>
   </line>
  </authors>
  <genre>
   <line>
    <col>Manga</col>
   </line>
   <line>
    <col>Seinen</col>
   </line>
  </genre>
  <gcsfield1>
   <line>
    <col>Yumemakura Baku</col>
   </line>
  </gcsfield1>
  <gcsfield2>
   <line>
    <col>Jirô Taniguchi</col>
   </line>
  </gcsfield2>
 </item>

Pour en revenir à ce que j'ai fait ensuite, c'est simple j'ai créé un ensemble de squelettes.
Par contre, c'est assez délicat à gérer : pour la vue en liste j'ai conservé le champ auteur, c'est seulement dans la vue item que j'utilise les champs Scénario, Dessin et Couleur.
Ce qui fait que lorsque je clique sur un dessinateur, je n'obtiens que les BD où la personne est dessinateur, ce qui est logique mais peut être déroutant, d'où l'ajout d'une ligne Tout... avec cette fois les éléments apparaissant dans le champ auteur.

Une suggestion : pourquoi ne pas faire apparaître le nom de l'auteur (ou de la série ou de l'éditeur...) en haut de liste après un clic sur l'un des éléments ? (ce qui pourrait être pratique nan ? -- et [mode intérêt=on]me permettrait d'ajouter à cet endroit, une référence genre Dessin, Scénario et un lien Voir tout ou quelque chose du genre [mode intérêt=off])

Une autre : ne serait-il pas intéressant de regrouper tous les fichiers personnalisés de squelettes (list_Perso.php et autres) dans un dossier autre que /templates/default pour éviter d'éventuels "soucis" lors des mises à jours ?

Une question maintenant : dans la vue item je fais appel au champ auteur (élément Tout... : ) :

echo '<li><span class="label" style="font-style: italic;">'.__('Tout...').' :   </span><span class="info">'.filter('authors==',$item['authors']).'</span></li>';

mais cette ligne est inintéressante lorsque le champ auteur contient "Collectif". Il me faudrait donc tester que le champ auteur n'est pas Collectif. Si je saurais faire en javascript, en php j'aimerais bien avoir ton expertise là-dessus.

Merci beaucoup.

jonas
09-02-2010 22:39

Effectivement j'avais mal compris pour les champs personnalisé. Ce n'est actuellement pas prévu sad mais j'ai ajouté ça dans les demande de fonctionnalitée pour la 2.0 http://jonas.tuxfamily.org/bugs/index.p … task_id=79

En attendant il faudra faire ça "à la main". Dans ton fichier fieldstypes.php ajoute pour la collection en question gcsfield1, gcsfield2 ... en fonction de leur "type" (dans ton cas 'string' ou 'list', faudrais que je vois un "item" type du fichier de sauvegarde de gcstar.

Et en ce qui concerne ma collection de livres pour lesquels j'ai commencé par bidouiller le type directement dans le fichier gcs, il me suffirait également de passer simplement par le config.complement.php ?

Oui (en faite je croyais que tu parlais toujours de la collection "Perso" smile

A moins que le config.complement.php ne renvoie directement vers les modèles dans /conf/GCModels/ ?

Pas sur d'avoir compris. Le type de collection est stocker dans config.php. Mais ce fichier config.php est recrérer à chaque enregistrement de la page de config. J'ai donc mis en place ce config.complement.php qui permet de modifier de façon durable une paramêtre de configuration.
Le résultat au niveau du moteur de GCweb est exactement le même que si tu avais modifié le champs dans le fichier de sauvegarde de GCstar.

Pied de page des forums

Propulsé par FluxBB