README.md
author ymh <ymh.work@gmail.com>
Wed, 14 Dec 2011 23:53:37 +0100
changeset 64 caeb4c8b5487
parent 55 80a400379dd3
child 68 e7384fb35f7a
permissions -rw-r--r--
merge
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
55
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
     1
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
     2
# WikiTagBundle
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
     3
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
     4
WikiTagBundle is a php bundle for [Symfony 2](http://symfony.com/) released by the [Institute for research and innovation](http://www.iri.centrepompidou.fr/) (IRI).
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
     5
It enables to add semantised tags to any kind of document. 
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
     6
By semantised, we mean that a tag has its label, but also a wikipedia link related to this label. Right now, for v1.0, it works with the french wikipedia.
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
     7
For a simple example, the tag "Asie" is related to the link [http://fr.wikipedia.org/wiki/Asie](http://fr.wikipedia.org/wiki/Asie).
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
     8
The tag can also be categorised, by any value in a list.
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
     9
The tag can also have an alias, which is any string value.
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    10
When a wikipedia entry is found, the bundle also searches a [dbPedia](http://dbpedia.org/) entry for the english equivalent, for example [http://dbpedia.org/page/Asia](http://dbpedia.org/page/Asia).
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    11
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    12
A tag can have 4 kinds of wikipedia links :
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    13
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    14
* **match** - Perfect match between the label and the wikipedia entry (i.e. [Asie](http://fr.wikipedia.org/wiki/Asie)).
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    15
* **redirection** - The label exists in wikipedia but redirects to an other entry (i.e. Louis XIV to [Louis XIV de France](http://fr.wikipedia.org/wiki/Louis_XIV_de_France)).
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    16
* **homonymy** - The label leads to wikipedia homonymy page (i.e. [Abstraction](http://fr.wikipedia.org/wiki/Abstraction)).
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    17
* **null result** - The label is not related to any wikipedia entry. So we build a link leading to the search page (i.e. [art multimédia](http://fr.wikipedia.org/w/index.php?search=art+multim%C3%A9dia)).
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    18
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    19
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    20
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    21
## Install
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    22
WikiTagBundle is a php bundle for [Symfony 2](http://symfony.com/).
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    23
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    24
* Install the dependencies : [PagerFanta](https://github.com/whiteoctober/Pagerfanta) and [Mondator](https://github.com/mandango/mondator).
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    25
* Download the zipfile from the [downloads](https://github.com/) page and install it.
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    26
* Once unzipped, just copy the IRI folder in your vendor/bundles folder. The folder hierarchy will be vendor/bundles/IRI/Bundle/WikiTagBundle.
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    27
   
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    28
## Getting Started
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    29
* Install WikiTagBundle
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    30
* Register the bundle in AppKernel.php :
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    31
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    32
         ... new IRI\Bundle\WikiTagBundle\WikiTagBundle(), ...
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    33
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    34
* Register the namespace in the autoload.php :
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    35
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    36
         ... 'IRI\Bundle\WikiTagBundle'   => \_\_DIR\_\_.'/../vendor/bundles', ...
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    37
    
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    38
* Register the namespace fallbacks in the autoload.php :
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    39
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    40
        $loader->registerNamespaceFallbacks(array(
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    41
            \_\_DIR\_\_.'/../src',
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    42
            \_\_DIR\_\_.'/cache/dev/wikitag',
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    43
            \_\_DIR\_\_.'/cache/prod/wikitag',
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    44
            \_\_DIR\_\_.'/cache/test/wikitag',
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    45
            \_\_DIR\_\_.'/cache/task/wikitag',
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    46
        ));
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    47
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    48
* Since WikiTagBundle builds its own document class from the host app's document class, you need to tell in config.yml what _text_ fields will be used in this class. 
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    49
These fields are used for searching and to calculate the tag's weight. Example :
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    50
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    51
        wiki_tag:
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    52
            document_class: Company\BaseBundle\Entity\Document
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    53
            document_id_column: id
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    54
            fields:
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    55
                title:
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    56
                    type: string
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    57
                    length: 1024
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    58
                    accessor: getTitre
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    59
                    weight: 1.0
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    60
                description:
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    61
                    type: text
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    62
                    weight: 0.5
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    63
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    64
* Add the WikiTag routes to your routing.yml :
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    65
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    66
        WikiTagBundle:
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    67
            resource: "@WikiTagBundle/Resources/config/routing.yml"
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    68
            prefix:   /tag
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    69
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    70
* Run the commands :
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    71
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    72
        php app/console wikitag:generate-document-class (no need to explain)
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    73
        php app/console wikitag:schema:update (also runs php app/console doctrine:schema:update)
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    74
        php app/console wikitag:sync-doc (fills the database with the datas from the host document class to the wikitag document class)
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    75
    
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    76
* Your database is ready. You can now include the table of tags in a template. Do not forget css and javascript (and php app/console assets:install). Example :
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    77
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    78
        {# example of page extending the base template #}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    79
        {% extends 'CompanyBaseBundle:Default:index.html.twig' %}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    80
        
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    81
        {% block css_import %}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    82
        {{ parent() }}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    83
        {% render "WikiTagBundle:WikiTag:addCss" %}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    84
        {% endblock %}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    85
        
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    86
        {% block js_declaration %}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    87
        {{ parent() }}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    88
        {% render "WikiTagBundle:WikiTag:addJavascript" %}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    89
        {% endblock %}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    90
        
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    91
        {% block content %}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    92
        <!-- The beginning of your template -->
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    93
                {% render "WikiTagBundle:WikiTag:documentTags" with {'id_doc': doc.id} %}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    94
        <!-- The end of your template -->
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    95
        {% endblock %}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    96
  
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    97
* Great ! You can now add/remove/change semantised tags to your document ! The WikiTag template includes an autocomplete search field to add simply and fastly any wikipedia semantised tag.
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    98
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
    99
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   100
## The list of all tags 
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   101
If you want to, you can add into a page the list of all tags. WikiTagBundle manages a list of all tags with the paginator PagerFanta. By default, it displays 50 tags per page.
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   102
The template includes links to quick search via a list of tags's first letter. A search field is also included. It works with the star character (\*) as a delimiter for searching.
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   103
For example "\*Peter" will return tags ending by Peter, "Peter\*" tags beginning by Peter, and "\*Peter\*" all tags including Peter. 
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   104
The list can be sorted in ascending or descending label, number of documents or popularity (integer value).
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   105
WikiTagBundle manages pagination, search, and sort with url parameters. 
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   106
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   107
Example : http://mysite.com/route\_to\_list?searched=Peter\*&num\_page=1&nb\_by\_page=50&sort=popd
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   108
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   109
Including the tag list template looks like :
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   110
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   111
        {# example of template including the all tags list #}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   112
        {% extends 'CompanyBaseBundle:Default:index.html.twig' %}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   113
        
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   114
        {% block css_import %}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   115
        {{ parent() }}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   116
        {% render "WikiTagBundle:WikiTag:addCss" %}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   117
        {% endblock %}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   118
        
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   119
        {% block js_declaration %}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   120
        {{ parent() }}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   121
        {% render "WikiTagBundle:WikiTag:addJavascript" with {'tags_list': true} %}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   122
        {% endblock %}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   123
        
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   124
        {% block content %}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   125
        <!-- The beginning of your template -->
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   126
            {% render "WikiTagBundle:WikiTag:allTags" %}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   127
        <!-- The end of your template -->
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   128
        {% endblock %}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   129
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   130
*IMPORTANT* : This template needs a route to be defined in configuration file. Usually, this host site's route leads the a page/document concerned by the clicked tag. 
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   131
This route is used by the list to create a link on the "nb of documents" column. config.yml looks like :
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   132
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   133
        wiki_tag:
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   134
            route_for_documents_by_tag: a_route_from_host_site
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   135
            document_class: Company\BaseBundle\Entity\Document
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   136
            ...
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   137
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   138
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   139
## More configuration 1 : tag list profile for a document
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   140
Via config.yml, you can configure which columns are displayed by default for a given user. It also concerns the button "sort tags" 
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   141
(This function orders tags depending of their presence in the text fields set in config.yml). 
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   142
Is it is very simple, you define the list of columns the user profile will see by default. In the following example, the list values are the ones to use :
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   143
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   144
        wiki_tag:
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   145
            ...
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   146
            document_list_profile:
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   147
                all:         [ 'sort_tag', 'order', 'id', 'move_up_down', 'label', 'wikipedia_link', 'wikipedia_permalink', 'dbpedia_link', 'category', 'remove_wikipedia_link', 'alias', 'remove_tag_from_list', 'alternative_label', 'alternative_wikipedia_url' ]
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   148
                editor :     [ 'order', 'id', 'move_up_down', 'label', 'wikipedia_link', 'wikipedia_permalink', 'dbpedia_link', 'category', 'remove_wikipedia_link', 'remove_tag_from_list' ]
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   149
                contributor: [ 'sort_tag', 'order', 'label', 'wikipedia_link', 'wikipedia_permalink', 'delete_wikipedia_link', 'remove_tag_from_list' ]
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   150
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   151
In these values, "sort_tag" means the sort tag button. All the other values are the available columns in the tag table.
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   152
Once this configuration set, call the profile in your template. The profile has to be called in the javascript call AND in the html call. So your template will look like this :
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   153
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   154
        ...
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   155
        {% render "WikiTagBundle:WikiTag:addJavascript" with {'profile_name': 'editor'} %}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   156
        ...
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   157
        {% render "WikiTagBundle:WikiTag:documentTags" with {'id_doc': doc.id, 'profile_name': 'editor'} %}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   158
        ...
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   159
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   160
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   161
## More configuration 2 : add context seach to any text part of your page
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   162
Via config.yml, you can configure a list of jquery selectors meant to let appear tag context search by selecting text. 
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   163
Once some text selected, a little div appears and displays several wikipedia entries with the entry title and a snippet. The results are the same than in an opensearch page 
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   164
(example with [découvrir](http://fr.wikipedia.org/w/index.php?search=d%C3%A9couvrir)). If you want this functionality, config.yml will look like this : 
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   165
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   166
        wiki_tag:
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   167
            ...
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   168
            reactive_selectors:
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   169
                some_divs:  [ '.left_sheet', '#p_title .sheet_title', '#p_description' ]
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   170
                only_p:     [ '#p_title .sheet_title', '#p_description' ]
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   171
                whole_page: [ 'document' ]
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   172
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   173
If you want every text on your page to be reactive, the list has to be [ 'document' ].
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   174
In the templates, you have to call a specific javascript with the wanted parameter. Your javascript calls may look like this :
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   175
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   176
        {% block js_declaration %}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   177
        {{ parent() }}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   178
        {% render "WikiTagBundle:WikiTag:addJavascript" with {'profile_name': 'editor'} %}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   179
        {% render "WikiTagBundle:WikiTag:addJavascriptForContextSearch" with {'context_name': 'some_divs'} %}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   180
        {% endblock %}
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   181
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   182
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   183
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   184
80a400379dd3 First version of README.md
cavaliet
parents:
diff changeset
   185