Annonce

Faites la différence entre le service WordPress.com et l'application libre WordPress.

Mettez-vous à jour ! WordPress 3.3.1 est disponible en français.

Annonce 1 : Le Codex en français a besoin de vous pour avancer !
Annonce 2 : Avant de poster, n'oubliez pas de faire une petite recherche et de lire les règles de ce forum.
Annonce 3 : Lisez notre blog, il regorge de bonnes informations.
Annonce 4 : Rejoignez-nous sur Facebook, Google + et sur Twitter

#1 29-06-2006 11:56:30

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Plug-in paroles de chansons

Alors là je tape certainement dans un domaine inexistant, mais je recherche un plug-in qui permettrait d'ajouter une gestion de paroles de chansons.

On y retrouverait une gestion par auteur, éventuellement par thème abordé. On pourrait y mettre donc les paroles du chant, éventuellement les accords.

Vous connaissez quelque chose de ce genre ?

Hors ligne

 

#2 29-06-2006 12:29:25

Oo
Adm'Oo'n
Lieu: La Courneuve
Date d'inscription: 07-10-2005
Messages: 3479
Site web

Re: Plug-in paroles de chansons

Salut,

En recherchant sur http://wp-plugins.net, je trouve ça avec comme mot clé "Lyrics" !

Mais pas tout à fait ce que tu demandes !

smile


Vis comme si tu devais mourir demain, apprends comme si tu devais vivre toujours !!! - M. Gandhi
Portail Web - Le jeu des 1001 photos - Blog - Zooomr

Hors ligne

 

#3 29-06-2006 12:37:06

Qwindoo
Admin
Lieu: Lyon (69)
Date d'inscription: 03-06-2006
Messages: 3147

Re: Plug-in paroles de chansons

Pfffffiouuu ta demande est tellement spécifique que ça m'étonnerait beaucoup qu'un tel plugin existe hmm

Par contre, tu peux essayer de le coder toi-même, ça ne doit pas être excessivement compliqué :

Code: html

Plugin : SongManager v1.0
MySQL  : sm_lyrics
                   id      INT (5) auto_increment index
                   author  INT (5)
                   lyrics  TEXT
         sm_authors
                   id        INT (5) auto_increment index
                   name      VARCHAR (50)
                   firstname VARCHAR (50)
                   sex       ENUM ('M', 'F')
                   age       INT (3)
                   songs     INT (4)
                   ...

Tiens rien qu'en écrivant la structure des tables j'ai envie de le faire moi-même tongue

Hors ligne

 

#4 29-06-2006 13:55:21

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

Oo Bubu a écrit:

Salut,

En recherchant sur http://wp-plugins.net, je trouve ça avec comme mot clé "Lyrics" !

Mais pas tout à fait ce que tu demandes !

smile

Oui j'avais déjà recherché sur ce site, et effectivement ça ne correspond pas, mais merci de ta participation lol big_smile wink

Nan sans dec', merci d'avoir cherché smile

Hors ligne

 

#5 29-06-2006 13:56:45

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

MS-DOS_1991 a écrit:

Pfffffiouuu ta demande est tellement spécifique que ça m'étonnerait beaucoup qu'un tel plugin existe hmm

Par contre, tu peux essayer de le coder toi-même, ça ne doit pas être excessivement compliqué :

Code: html

Plugin : SongManager v1.0
MySQL  : sm_lyrics
                   id      INT (5) auto_increment index
                   author  INT (5)
                   lyrics  TEXT
         sm_authors
                   id        INT (5) auto_increment index
                   name      VARCHAR (50)
                   firstname VARCHAR (50)
                   sex       ENUM ('M', 'F')
                   age       INT (3)
                   songs     INT (4)
                   ...

Tiens rien qu'en écrivant la structure des tables j'ai envie de le faire moi-même tongue

Le soucis, c'est que je n'y connais rien wink

Mais si t'as envie de le faire, fais-toi plaisir hein lol wink

Hors ligne

 

#6 29-06-2006 14:01:25

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

Tenez, un exemple de ce que je souhaite faire en moins complexe certes :

pwarchive.com

Si je bosse dessus, quelqu'un peut me filer un coup de main ?tongue

Hors ligne

 

#7 29-06-2006 14:03:25

Qwindoo
Admin
Lieu: Lyon (69)
Date d'inscription: 03-06-2006
Messages: 3147

Re: Plug-in paroles de chansons

steph2dijon a écrit:

Tenez, un exemple de ce que je souhaite faire en moins complexe certes :

pwarchive.com

Si je bosse dessus, quelqu'un peut me filer un coup de main ?tongue

Of course coolcool

Hors ligne

 

#8 29-06-2006 14:12:38

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

MS-DOS_1991 a écrit:

steph2dijon a écrit:

Tenez, un exemple de ce que je souhaite faire en moins complexe certes :

pwarchive.com

Si je bosse dessus, quelqu'un peut me filer un coup de main ?tongue

Of course coolcool

Ok, alors je vais allez lire de la doc pour voir comment on créé un plug-in, commençons par le commencement big_smile

Hors ligne

 

#9 29-06-2006 15:40:28

Qwindoo
Admin
Lieu: Lyon (69)
Date d'inscription: 03-06-2006
Messages: 3147

Re: Plug-in paroles de chansons

J'ai déjà commencé à écrire ce plugin et je m'amuse comme un fou big_smile

Pourrais-tu me faire une liste de ce que tu attends exactement de ce plugin ?

edit: SongManager, ça sonne bien non ? cool

Dernière modification par MS-DOS_1991 (29-06-2006 15:40:58)

Hors ligne

 

#10 29-06-2006 15:43:41

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

Alors, on va commencer par faire la liste de ce que doit faire le plugin (que l'on appelera SongManager, selon la bonne idée de MS-DOS_1991) :

- Regrouper les informations sur chaque chant :
                               ->Titre
                               ->Titre Original
                               ->Paroles
                               ->Clé (Tonalité du chant)
                               ->Auteur (possibilité d'avoir parfois plusieurs auteurs ...)
                               ->Information de Copyright
                               ->N°CCLI (un code numérique pour aider à retrouver les chants)
                               ->Interprète

- Une recherche sur les champs Titre, Titre Original, Paroles, Auteur, Interprète, CCLI devra être possible via une checkbox (ajoutée dans la sidebar uniquement quand on sera dans la catégorie "Chants").

- Possibilité d'imprimer le chant en PDF (le plug-in existe déjà).

Ce qu'il faut faire :

- Créer un script qui créé les tables dans la BDD WP.
- Créer une nouvelle catégorie que l'on appelera "Chants" par exemple.
- Créer un affichage particulier pour cette catégorie (Zone de recherche dans la Sidebar, dans le content, seuls les titres apparaitront, pas les paroles, les chants devront être classés par titre.)
- Pour l'affichage d'un chant, on devra retrouver les différentes infos du chant. Ex :

What The World Will Never Take (titre)
Marty Sampson, Matt Crocker, Scott Ligertwood (auteurs)
Tonalité: A

Verse 1:
A
With all I'm holding inside
                        D
With all my hopes and desires
D
And all the dreams that I've dreamt


Verse 2:
A
With all I'm hoping to be
                            D
And all that the world will bring
                          Dmaj9
And all that fails to compare


PreChorus:
    F#m          B5     Dmaj9
You say You want all of me
           A          B5
I wouldn't have it any other way


Bridge:
A
I've got a Saviour and He's living in me
D            F#m Bsus      D
Whoa I wanna know  I wanna know You today
A
And You're the best thing that has happened to me
        F#m
And the world will never take
    Bsus             D         A
The world will never take You away


Other:
F#m  F#m(maj7) A  B
(repeat)


Ending:
A                  D        A
No one could ever take You away
                   D        A
No one could ever take You away

©2004 Hillsong Publishing (Admin. in U.S. & Canada by Integrity's Hosanna! Music)
All rights reserved. International copyright secured.
CCLI song #4455196

Hors ligne

 

#11 29-06-2006 15:45:30

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

MS-DOS_1991 a écrit:

J'ai déjà commencé à écrire ce plugin et je m'amuse comme un fou big_smile

Pourrais-tu me faire une liste de ce que tu attends exactement de ce plugin ?

edit: SongManager, ça sonne bien non ? cool

Super, on s'est croisé alors que j'écrivais mon post précédent.

Si tu le fais, dans ce cas, ça m'intéresse smile

En fait, je manque de connaissance pour faire tout ça, mais je peux apprendre beaucoup si tu détailles un peu ce que tu fais. Et pour SongManager, c'est top:D

Hors ligne

 

#12 29-06-2006 15:54:41

Qwindoo
Admin
Lieu: Lyon (69)
Date d'inscription: 03-06-2006
Messages: 3147

Re: Plug-in paroles de chansons

Ce sera mon premier plugin, hein wink

Mais je suis motivé et ça n'a pas l'air très compliqué (bon, un peu qd même mais pas trop ^^ )

Pour l'instant, voici le code du plugin (tout ce que ça fait est ajouter un menu dans le DashBoard, mais ça te donne une idée) :

Code: html

<?php
/*
Plugin Name: SongManager
Plugin URI:  http://www.newbie-project.net/wordpress/plugins/
Description: Allows admin to manage songs and lyrics and users to look for one :-)
Version:     1.0
Author:      Thomas G ( MS-DOS_1991 )
Author URI:  http://www.newbie-project.net/
*/

class SongManager
{
  function init_plugin()
  {
    add_options_page('Song Manager', 'Song Manager', 1, basename(__FILE__), array($this, 'my_options_subpanel'));
  }
  function my_options_subpanel()
  {
?>
  <div class="wrap">
    <h2>Song Manager v1.0</h2>
    <p>Bienvenue dans mon supaÿrbe plugin de test</p>
  </div>
<?php
  }
}

$SongManager = new SongManager;
add_action('admin_menu', array(&$SongManager, 'init_plugin'));

?>

* J'ai fait une classe pour éviter les risques de "collisions" (si 2 plugins avaient des fonctions aux noms identiques)
* Dans cette classe, on retrouvera toutes les fonctions futures du plugin
* La première fonction ajoute un menu dans le DashBoard et appelle la deuxième pour remplir la page
* Cette 2ème fonction ne fait qu'ajouter du texte (pour l'instant, hein ^^ )
* Après l'accolade fermante, j'initialise cette classe puis je demande à WordPress de l'intégrer à l'application cool

P.S: Pas taper, je viens de m'y mettre ^^

Dernière modification par MS-DOS_1991 (27-01-2007 14:22:51)

Hors ligne

 

#13 29-06-2006 16:00:15

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

MS-DOS_1991 a écrit:

Ce sera mon premier plugin, hein wink

(...)

P.S: Pas taper, je viens de m'y mettre ^^

Arf, la vache ... C'est plus compliqué que je ne le pensais à réaliser tongue

Ben, écoute, je ne peux pas juger, mais ça m'a l'air pas mal et tu as l'air de connaitre les pièges à éviter ... Donc, bravo smile

Hors ligne

 

#14 29-06-2006 16:10:15

Qwindoo
Admin
Lieu: Lyon (69)
Date d'inscription: 03-06-2006
Messages: 3147

Re: Plug-in paroles de chansons

steph2dijon a écrit:

Arf, la vache ... C'est plus compliqué que je ne le pensais à réaliser tongue

Ben, écoute, je ne peux pas juger, mais ça m'a l'air pas mal et tu as l'air de connaitre les pièges à éviter ... Donc, bravo smile

On verra jusqu'où j'irai big_smile

Sinon, pour la structure des tables, pourrais-tu me donner un exemple de CCLI ? C'est quoi, un nombre, une suite de caractères ?

Pour la clé, combien de caractères dois-je prévoir au maximum ?

Hors ligne

 

#15 29-06-2006 16:22:53

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

MS-DOS_1991 a écrit:

steph2dijon a écrit:

Arf, la vache ... C'est plus compliqué que je ne le pensais à réaliser tongue

Ben, écoute, je ne peux pas juger, mais ça m'a l'air pas mal et tu as l'air de connaitre les pièges à éviter ... Donc, bravo smile

On verra jusqu'où j'irai big_smile

Sinon, pour la structure des tables, pourrais-tu me donner un exemple de CCLI ? C'est quoi, un nombre, une suite de caractères ?

Pour la clé, combien de caractères dois-je prévoir au maximum ?

Alors, pour le CCLI, c'est comme sur l'exemple plus haut : CCLI song #4455196 Donc on ne garde que le code à chiffre.

Pour la clé, disons ... 7 caractères maxi. Ca donnera qque chose du genre : G#m7 ou Sol#m7

Voilà voilà smile

Merci mille fois

Hors ligne

 

#16 29-06-2006 20:16:47

Qwindoo
Admin
Lieu: Lyon (69)
Date d'inscription: 03-06-2006
Messages: 3147

Re: Plug-in paroles de chansons

Désolé de n'avoir pu poster plus tôt mais mon frère faisait un pestacle avec son école wink

Voilà où j'en suis pour le moment : capture cool

Dernière modification par MS-DOS_1991 (27-01-2007 14:32:45)

Hors ligne

 

#17 29-06-2006 22:11:29

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

MS-DOS_1991 a écrit:

Désolé de n'avoir pu poster plus tôt mais mon frère faisait un pestacle avec son école wink

Voilà où j'en suis pour le moment : capture cool

Woooo !!! Attends, tu veux dire qu'il y a déjà la BDD et tout et tout ?

Sinon, un truc, la recherche n'est pas obligatoire dans l'interface du plugin, elle le sera surtout dans la sidebar en fait ...

Mais bon c'est super big_smile

Hors ligne

 

#18 29-06-2006 22:14:09

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

steph2dijon a écrit:

MS-DOS_1991 a écrit:

Désolé de n'avoir pu poster plus tôt mais mon frère faisait un pestacle avec son école wink

Voilà où j'en suis pour le moment : capture cool

Woooo !!! Attends, tu veux dire qu'il y a déjà la BDD et tout et tout ?

Sinon, un truc, la recherche n'est pas obligatoire dans l'interface du plugin, elle le sera surtout dans la sidebar en fait ...

Mais bon c'est super big_smile

Ah oui, un autre truc, les infos de copyright peuvent tenir sur plusieurs lignes ...

Pour les auteurs, je sais pas si c'est possible, mais un truc qui serait sympa pour le multi-auteurs, c'est prendre un auteur dans la liste déroulante, cliquer sur un bouton à côté et ça l'ajoute à une liste à côté. Comme ça, on peut en mettre plusieurs. Tu vois ce que je veux dire ? Enfin je sais pas si c'est possible.

Hors ligne

 

#19 30-06-2006 09:45:50

Qwindoo
Admin
Lieu: Lyon (69)
Date d'inscription: 03-06-2006
Messages: 3147

Re: Plug-in paroles de chansons

steph2dijon a écrit:

Woooo !!! Attends, tu veux dire qu'il y a déjà la BDD et tout et tout ?

Sinon, un truc, la recherche n'est pas obligatoire dans l'interface du plugin, elle le sera surtout dans la sidebar en fait ...

Voui, il y a déjà la BDD et tout et tout !! cool big_smile

Pour la recherche dans l'interface d'admin, c'est aussi simple que dans la sidebar vu que ce sera une seule et même fonction donc autant faire "classe" et le mettre dans l'admin wink

steph2dijon a écrit:

Ah oui, un autre truc, les infos de copyright peuvent tenir sur plusieurs lignes ...

Pour les auteurs, je sais pas si c'est possible, mais un truc qui serait sympa pour le multi-auteurs, c'est prendre un auteur dans la liste déroulante, cliquer sur un bouton à côté et ça l'ajoute à une liste à côté. Comme ça, on peut en mettre plusieurs. Tu vois ce que je veux dire ? Enfin je sais pas si c'est possible.

Pour le copyright, pas de problème : je vais juste devoir transformer mon VARCHAR (255) en TEXT wink

Pour les auteurs, c'est exactement ce à quoi j'ai pensé hier soir avant de m'endormir big_smile
JavaScript (DOM) powered wink

Hors ligne

 

#20 30-06-2006 09:57:13

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

MS-DOS_1991 a écrit:

Pour le copyright, pas de problème : je vais juste devoir transformer mon VARCHAR (255) en TEXT wink

Pour les auteurs, c'est exactement ce à quoi j'ai pensé hier soir avant de m'endormir big_smile
JavaScript (DOM) powered wink

Waaah ! T'es génial, je te remercie vraiment, t'es en train de me filer un super-méga-coup-de-main ! Par contre, j'analyserai bien le code du plug-in, je pourrai certainement apprendre des choses.

Bon, en tout cas, la capture d'écran donne trop envie de l'essayer lol tongue

Si j'arrive à comprendre et à apprendre, j'y rajouterai un truc en plus, pour les guitaristes, pianistes, ... Mais ça c'est assez compliqué, et pas réalisable facilement.

Hors ligne

 

#21 30-06-2006 14:42:32

Qwindoo
Admin
Lieu: Lyon (69)
Date d'inscription: 03-06-2006
Messages: 3147

Re: Plug-in paroles de chansons

Salut à tous smile

Voilà où j'en suis à présent cool

Code: html

<?php
/*
Plugin Name: SongManager
Plugin URI:  http://www.newbie-project.net/stuff/wp_plugins.php
Description: Allows admin to manage songs and lyrics
Version:     1.0
Author:      Thomas G ( MS-DOS_1991 )
Author URI:  http://www.newbie-project.net/

Copyright 2006  Thomas G  (email : msdos.1991@gmail.com)

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

class SongManager
{
  /** Class Constructor **/
  function SongManager()
  {
    global $wpdb;
    /** Creating SQL table sm_songs **/
	  $wpdb->query("CREATE TABLE IF NOT EXISTS `sm_songs`
                  (
                    `id`             INT    ( 5 )   NOT NULL AUTO_INCREMENT PRIMARY KEY,
                    `title`          VARCHAR( 255 ) NOT NULL ,
                    `original_title` VARCHAR( 255 ) NOT NULL ,
                    `authors`        VARCHAR( 255 ) NOT NULL ,
                    `interprets`     VARCHAR( 255 ) NOT NULL ,
                    `lyrics`         TEXT           NOT NULL ,
                    `copyright`      TEXT           NOT NULL ,
                    `ccli`           INT    ( 10 )  NOT NULL ,
                    `date`           TIMESTAMP      NOT NULL DEFAULT CURRENT_TIMESTAMP
                  ) ENGINE = InnoDB COMMENT = 'SongManager > Songs'
                 "); 
    /** Creating SQL table sm_authors **/
    $wpdb->query("CREATE TABLE IF NOT EXISTS `sm_authors`
                 (
                   `id`         INT    ( 5 )  NOT NULL AUTO_INCREMENT PRIMARY KEY,
                   `name`       VARCHAR( 50 ) NOT NULL,
                   `first_name` VARCHAR( 50 ) NOT NULL
                 ) ENGINE = InnoDB COMMENT = 'SongManager > Authors'
                ");
    /** Creating SQL table sm_interprets **/
    $wpdb->query("CREATE TABLE IF NOT EXISTS `sm_interprets`
                 (
                   `id`         INT    ( 5 )  NOT NULL AUTO_INCREMENT PRIMARY KEY,
                   `name`       VARCHAR( 50 ) NOT NULL,
                   `first_name` VARCHAR( 50 ) NOT NULL
                 ) ENGINE = InnoDB COMMENT = 'SongManager > Interprets'
                ");
		update_option('is_installed_songmanager', 1);
	}
  /** Creates option page in the DashBoard (Options > Song manager) **/
  function init_plugin()
  {
    add_options_page('Song Manager', 'Song Manager', 1,
                      basename(__FILE__), array($this, 'sm_options_subpanel'));
  }
  /** Displays submenu page in the DashBoard **/
  function sm_options_subpanel()
  {
    global $wpdb;
    if (isset($_GET['search']))
    {
      if ($_GET['search'] == 'title')
        $this->searchLyricsFromTitle(trim(htmlentities($_GET['title'])));
      elseif ($_GET['search'] == 'original_title')
        $this->searchLyricsFromOriginalTitle(trim(htmlentities($_GET['original_title'])));
      elseif ($_GET['search'] == 'author')
        $this->searchLyricsByAuthor(trim(htmlentities($_GET['author'])));
      elseif ($_GET['search'] == 'interprete')
        $this->searchLyricsByInterprete(trim(htmlentities($_GET['interprete'])));
      elseif ($_GET['search'] == 'ccli')
        $this->searchLyricsFromCCLI(trim($_GET['ccli']));
      else
        die('Erreur inconnue.');
    }
    elseif (isset($_GET['add']))
    {
      if ($_GET['add'] == 'song')
      {
        foreach ($_POST AS $key => $value)
          $$key = trim(htmlentities($value));
        
        $wpdb->query("INSERT INTO sm_songs (title, original_title, 
                                            authors, interpretes,
                                            lyrics, copyright, ccli)
                                    VALUES ('$title', '$original_title',
                                            '$authors', '$interpretes',
                                            '$lyrics', '$copyright', '$ccli')
                     ");
        echo '<script type="text/javascript">alert(\'Ajout Effectué !\');window.location = \'',$_SERVER['PHP_SELF'],'?page=songmanager.php\';</script>';
      }
      elseif ($_GET['add'] == 'author')
      {
        if (isset($_POST['first_name']) && isset($_POST['surname']))
        {
          $this->addAuthor($_POST['first_name'], $_POST['surname']);
          echo '<script type="text/javascript">alert(\'Ajout Effectué !\');window.location = \'',$_SERVER['PHP_SELF'],'?page=songmanager.php\';</script>';
        }
        else
          die('Erreur: Veuillez remplir tous les champs.');
      }
      elseif ($_GET['add'] == 'interpret')
      {
        if (isset($_POST['first_name']) && isset($_POST['surname']))
        {
          $this->addInterpret($_POST['first_name'], $_POST['surname']);
          echo '<script type="text/javascript">alert(\'Ajout Effectué !\');window.location = \'',$_SERVER['PHP_SELF'],'?page=songmanager.php\';</script>';
        }
        else
          die('Erreur: Veuillez remplir tous les champs.');
      }
    }
    elseif (isset($_GET['del']))
    {
      if ($_GET['del'] == 'author')
      {
        if (isset($_POST['author']))
        {
          $this->deleteAuthor($_POST['author']);
          echo '<script type="text/javascript">alert(\'Suppression Effectuée.\');window.location = \'',$_SERVER['PHP_SELF'],'?page=songmanager.php\';</script>';
        }
        else
          die('Erreur: Veuillez s&eacute;lectionner un auteur &agrave; supprimer');
      }
      elseif ($_GET['del'] == 'interpret')
      {
        if (isset($_POST['interpret']))
        {
          $this->deleteInterpret($_POST['interpret']);
          echo '<script type="text/javascript">alert(\'Suppression Effectuée.\');window.location = \'',$_SERVER['PHP_SELF'],'?page=songmanager.php\';</script>';
        }
        else
          die('Erreur: Veuillez s&eacute;lectionner un auteur &agrave; supprimer');
      }
    }
    else
    {
?>
<script type="text/javascript">
function addAuthor()
{
  authors_nb = document.getElementById('addsong_authors_nb').value;
  authors_nb++;
  
  if (authors_nb > document.getElementById('addsong_author_1').options.length)
    alert('Tous les auteurs ont été utilisés.');
  else
  {
    newSpan = document.createElement('span');
    newSelect = document.getElementById('addsong_author_1').cloneNode(true);
    newSelect.setAttribute('id', 'addsong_author_'+authors_nb);
    newSpan.appendChild(newSelect);
    document.getElementById('addsong_p_authors').appendChild(newSpan); 
    document.getElementById('addsong_authors_nb').value++;
  }
}
function updateAuthors(id)
{
  // AAAAAAAAAAAAAAAAAAAAAAAARGHHH
}
function delAuthor()
{
  authors_nb = document.getElementById('addsong_authors_nb').value;
  
  if (authors_nb == 1)
    alert('Impossible de supprimer le dernier auteur !');
  else
  {
    lastauthor = document.getElementById('addsong_p_authors').lastChild; 
    while (lastauthor.firstChild)
      lastauthor.removeChild(lastauthor.firstChild);
    document.getElementById('addsong_p_authors').removeChild(lastauthor);
    document.getElementById('addsong_authors_nb').value--;
  }
}
</script>
  <div class="wrap">
    <h2>Song Manager v1.0</h2>
    <h3>Rechercher des paroles de chansons</h3>
    <form action="<?php echo $_SERVER['REQUEST_URI']; ?>&search=title" method="post" style="font-family: 'Courier New';">
      <p>
        <label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rechercher par titre : <input type="text" name="title" size="50" /></label>
        <input type="submit" value="Rechercher" />
      </p>
    </form>
    <form action="<?php echo $_SERVER['REQUEST_URI']; ?>&search=original_title" method="post" style="font-family: 'Courier New';">
      <p>
        <label>Rechercher par titre original : <input type="text" name="original_title" size="50" /></label>
        <input type="submit" name="search_original_title" value="Rechercher" />
      </p>
    </form>
    <form action="<?php echo $_SERVER['REQUEST_URI']; ?>&search=author" method="post" style="font-family: 'Courier New';">
      <p>
        <label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rechercher par auteur : <input type="text" name="author" size="50" /></label>
        <input type="submit" value="Rechercher" />
      </p>
    </form>
    <form action="<?php echo $_SERVER['REQUEST_URI']; ?>&search=interprete" method="post" style="font-family: 'Courier New';">
      <p>
        <label>&nbsp;&nbsp;&nbsp;&nbsp;Rechercher par interpr&egrave;te : <input type="text" name="interprete" size="50" /></label>
        <input type="submit" value="Rechercher" />
      </p>
    </form>
    <form action="<?php echo $_SERVER['REQUEST_URI']; ?>&search=ccli" method="post" style="font-family: 'Courier New';">
      <p>
        <label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Trouver &agrave; partir du <acronym title="Christian Copyright Licensing International">CCLI</acronym> : <input type="text" name="search_ccli" size="10" /></label>
        <input type="submit" value="Rechercher" />
      </p>
    </form>
    <h3>Derni&egrave;res paroles de chanson</h3>
    <?php $this->getLastLyrics(); ?>
    <h3>Ajouter une chanson</h3>
    <form action="<?php echo $_SERVER['REQUEST_URI']; ?>&add=song" method="post" style="font-family: 'Courier New';">
    <p style="display: none;">
      <input type="hidden" id="addsong_authors_nb" value="1" />
      <input type="hidden" id="addsong_authors" name="addsong_authors" value="1" />
    </p>
    <p><label>Titre de la chanson : <input type="text" name="addsong_title" size="50" /></label></p>
    <p><label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Titre original : <input type="text" name="addsong_original_title" size="50" /></label></p>
    <p id="addsong_p_authors">
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Auteur(s) :
      <select id="addsong_author_1" onChange="updateAuthors(this.selectedIndex)">
      <?php
      $sql_authors = $wpdb->get_results("SELECT id, surname, first_name
                                         FROM sm_authors
                                         ORDER BY surname ASC
                                        ");
      foreach ($sql_authors AS $author)
        echo '<option value="',$author->id,'">',$author->first_name,' ',$author->surname,'</option>';
      ?>
      </select>
    </p>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      <span id="addsong_span_addauthor"><input type="button" value="Ajouter un Auteur" onClick="addAuthor()" /></span>
      <span id="addsong_span_delauthor"><input type="button" value="Supprimer un Auteur" onClick="delAuthor()" /></span>
    </p>
    <p><label>Paroles (et/ou accords) :<br /><textarea name="addsong_lyrics" style="width: 85%; height: 400px;"></textarea></label></p>
    <p><label>Copyright : <input type="text" name="addsong_copyright" size="50" /></label></p>
    <p><label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCLI : <input type="text" name="addsong_ccli" size="10" /></label></p>
    <p><input type="submit" name="addsong_submit" value="Soumettre les Paroles" />
    </form>
    <h3>Nouvel Auteur</h3>
    <form action="<?php echo $_SERVER['REQUEST_URI']; ?>&add=author" method="post" style="font-family: 'Courier New';">
      <p><label>Pr&eacute;nom : <input type="text" name="first_name" size="15" /></label></p>
      <p><label>&nbsp;&nbsp;&nbsp;Nom : <input type="text" name="surname" size="15" /></label>
      <p><input type="submit" value="Ajouter cet Auteur" /></p>
    </form>
    <h3>Supprimer un Auteur</h3>
    <form action="<?php echo $_SERVER['REQUEST_URI']; ?>&del=author" method="post" style="font-family: 'Courier New';">
      <p>
        <?php
        $sql_authors = $wpdb->get_results("SELECT id, surname, first_name
                                           FROM sm_authors
                                           ORDER BY surname ASC
                                          ");
        if ($sql_authors)
        {
?>
        <select name="author">
<?php
          foreach ($sql_authors AS $author)
            echo '<option value="',$author->id,'">',$author->first_name,' ',$author->surname,'</option>';
?>
        </select>
        <input type="submit" value="Supprimer cet Auteur" />
<?php
        }
        else
          echo 'Aucun auteur &agrave; supprimer.';
        ?>
      </p>
    </form>
    <h3>Nouvel Interpr&egrave;te</h3>
    <form action="<?php echo $_SERVER['REQUEST_URI']; ?>&add=interpret" method="post" style="font-family: 'Courier New';">
      <p><label>Pr&eacute;nom : <input type="text" name="first_name" size="15" /></label></p>
      <p><label>&nbsp;&nbsp;&nbsp;Nom : <input type="text" name="surname" size="15" /></label>
      <p><input type="submit" value="Ajouter cet Interpre&egrave;te" /></p>
    </form>
    <h3>Supprimer un Interpr&egrave;te</h3>
    <form action="<?php echo $_SERVER['REQUEST_URI']; ?>&del=interpret" method="post" style="font-family: 'Courier New';">
      <p>
        <?php
        $sql_interprets = $wpdb->get_results("SELECT id, surname, first_name
                                              FROM sm_interprets
                                              ORDER BY surname ASC
                                             ");
        if ($sql_interprets)
        {
?>
        <select name="interpret">
<?php
          foreach ($sql_interprets AS $interpret)
            echo '<option value="',$interpret->id,'">',$interpret->first_name,' ',$interpret->surname,'</option>';
?>
        </select>
        <input type="submit" value="Supprimer cet Interpr&egrave;te" />
<?php
        }
        else
          echo 'Aucun interpr&egrave;te &agrave; supprimer.';
        ?>
      </p>
    </form>
  </div>
<?php
    }
  }
  
  /**  **/
  function getLastLyrics($nb_to_show=5)
  {
    global $wpdb;
    $sql_res = $wpdb->get_results("SELECT id, title, original_title, date, authors
                                   FROM sm_songs 
                                   ORDER BY date DESC
                                   LIMIT 0, $nb_to_show
                                  ");
    if ($sql_res)
    {
?>
  <ul>
<?php
      foreach ($sql_res AS $song)
      {
        $sql_authors = $wpdb->get_results("SELECT   id, surname, first_name
                                           FROM     sm_authors
                                           WHERE    id IN ($song->authors)
                                           ORDER BY surname ASC
                                          ");
        $authors = '';
        foreach ($sql_authors AS $author)
          $authors .= '<a href="'.$_SERVER['REQUEST_URI'].'&show_author='.$author->id.'">'.$author->first_name.' '.$author->name.'</a>'.', ';
?>
    <li>
      <strong><a href="<?php echo $_SERVER['REQUEST_URI']; ?>&show_lyrics=<?php echo $song->id; ?>"><?php echo $song->title; ?></a></strong> (<?php echo $song->original_title; ?>)<br />
      Par <?php echo $authors; ?> (paroles soumises le <?php echo $song->date; ?>)
    </li>
<?php
      }
?>
  </ul>
<?php
    }
    else
      echo '<p>Aucune chanson dans la Base de Données.</p>';
  }
  
  function addAuthor($first_name, $name)
  {
    global $wpdb;
    $first_name = trim(htmlentities($_POST['first_name']));
    $name = trim(htmlentities($_POST['surname']));
    $wpdb->query("INSERT INTO sm_authors (surname, first_name)
                                  VALUES ('$name', '$first_name')
                 ");
  }
  function addInterpret($first_name, $name)
  {
    global $wpdb;
    $first_name = trim(htmlentities($_POST['first_name']));
    $name = trim(htmlentities($_POST['surname']));
    $wpdb->query("INSERT INTO sm_interprets (surname, first_name)
                                     VALUES ('$name', '$first_name')
                 ");
  }
  
  function deleteAuthor($id)
  {
    global $wpdb;
    if (is_numeric($id))
      $wpdb->query("DELETE FROM sm_authors
                    WHERE id = $id
                   ");
    else
      die('Erreur : Valeur incorrecte. Chiffres seulement');
  }
  function deleteInterpret($id)
  {
    global $wpdb;
    if (is_numeric($id))
      $wpdb->query("DELETE FROM sm_interprets
                    WHERE id = $id
                   ");
    else
      die('Erreur : Valeur incorrecte. Chiffres seulement');
  }
}

$SongManager = new SongManager;
add_action('admin_menu', array(&$SongManager, 'init_plugin'));

?>

Mais bon c'est assez rébarbatif comme truc alors si quelqu'un voulais me coder quelques fonctions, je ne dis pas non ^^

Edit: Si vous voulez tester, il vous suffit d'installer WordPress en local (avec Wamp par exemple) et de placer le fichier songmanager.php dans le répertoire /wp-content/plugins/ wink

Dernière modification par MS-DOS_1991 (27-01-2007 14:34:16)

Hors ligne

 

#22 30-06-2006 14:54:51

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

MS-DOS_1991 a écrit:

Salut à tous smile

Mais bon c'est assez rébarbatif comme truc alors si quelqu'un voulais me coder quelques fonctions, je ne dis pas non ^^

Edit: Si vous voulez tester, il vous suffit d'installer WordPress en local (avec Wamp par exemple) et de placer le fichier songmanager.php dans le répertoire /wp-content/plugins/ wink

Que reste t-il à faire précisément ?

Hors ligne

 

#23 30-06-2006 14:58:45

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

Beh en fait, ça a l'air d'être super avancé !!!

Il ne reste plus tant de choses que ça à faire, non ? T'as bossé comme un dingue smile

Hors ligne

 

#24 30-06-2006 15:02:49

Qwindoo
Admin
Lieu: Lyon (69)
Date d'inscription: 03-06-2006
Messages: 3147

Re: Plug-in paroles de chansons

Alors comme tu peux le voir, les fonctions de recherche ne sont pas encore implémentées.

C'est tout con, il suffit d'une requête SQL qui ne change presque pas dans chaque cas, mais c'est "long" à coder hmm

Si ça te tentes, tu peux faire ça :

Code: html

1. Ajouter des fonctions dans la classe (les noms sont en haut dans mes appels)
2. faire une requête de sélection selon le critère choisi par l'utilisateur :
$wpdb->get_results("SELECT le_plus_de_trucs_possibles FROM sm_table WHERE critère LIKE '%$variable_postee%'");
3. Faire un test pour savoir si on a des résultats
4. Afficher les résultats sous forme de liste avec des liens

Dernière modification par MS-DOS_1991 (30-06-2006 15:06:17)

Hors ligne

 

#25 30-06-2006 15:09:21

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

MS-DOS_1991 a écrit:

Alors comme tu peux le voir, les fonctions de recherche ne sont pas encore implémentées.

C'est tout con, il suffit d'une requête SQL qui ne change presque pas dans chaque cas, mais c'est long à coder hmm

Ok, des requêtes SQL, donc ça, ça va encore ...

Sinon, je regardais là, je l'ai installé sur un site. J'ai donc activé le plug-in.

Ensuite j'ai été dans sa page pour le tester. En dessous de Supprimer un Auteur j'ai :

WordPress database error: [Unknown column 'surname' in 'field list']
SELECT id, surname, first_name FROM sm_authors ORDER BY surname ASC

et pareil sous "supprimer un interprète.

J'ai essayé de créer un auteur et j'obtiens ce message :

J'ai la fenêtre 'Ajout effectué' qui apparait mais le message d'erreur suivant également :

"Wordpress database error : [unknown column 'surname' in 'field list']

J'ai l'impression que les tables ne se sont pas créés

Hors ligne

 

Pied de page des forums

Propulsé par PunBB 1.2.23
© Copyright 2005-2006 WordPress France

[ Generated in 0.112 seconds, 32 queries executed ]