Difference between revisions of "PluginsAnatomy"

From SoylentNews
Jump to: navigation, search
Line 81: Line 81:
  
 
</pre>
 
</pre>
 
 
 
 
 
 
 
<hr>
 
 
 
<div name="index">
 
<p><a name="__index__"></a></p>
 
 
<ul>
 
 
        <li><a href="#name">NAME</a></li>
 
        <li><a href="#questions">QUESTIONS</a></li>
 
        <ul>
 
 
                <li><a href="#what_is_a_plugin">What is a plugin?</a></li>
 
                <li><a href="#how_do_i_get_my_plugin_into_the_install_system">How do I get m
 
y plugin into the install system?</a></li>
 
                <li><a href="#what_does_my_plugin_need_to_make_it_work_with_the_install">Wha
 
t does my plugin need to make it work with the install?</a></li>
 
                <li><a href="#how_do_i_install_a_plugin_once_my_site_is_installed">How do I
 
install a plugin once my site is installed?</a></li>
 
                <li><a href="#do_install_plugin_and_install_slashsite_use_the_same_logic">Do
 
install-plugin and install-slashsite use the same logic?</a></li>
 
                <li><a href="#i_have_a_really_cool_plugin_and_i_would_like_to_see_it_added_t
 
o_the_slash_distribution__will_you_distribute_mine">I have a really cool plugin and I would
 
like to see it added to the Slash distribution. Will you distribute mine?</a></li>
 
        </ul>
 
        <li><a href="#version">VERSION</a></li>
 
</ul>
 
 
<hr name="index" />
 
</div>
 
<!-- INDEX END -->
 
 
<p>
 
</p>
 
<h1><a name="name">NAME</a></h1>
 
<p>HOWTO-Plugins - How to write and use Slash plugins</p>
 
<p>
 
</p>
 
<hr />
 
<h1><a name="questions">QUESTIONS</a></h1>
 
<p>
 
</p>
 
<h2><a name="what_is_a_plugin">What is a plugin?</a></h2>
 
<p>A plugin is an extension to the Slash system
 
that adds some sort of functionality to
 
the site. It should inherit its basic look
 
and feel from the currently running theme
 
(for example, background/foreground colors, calling
 
header and footer components, etc. will be handled
 
by the installed theme).</p>
 
<p>
 
</p>
 
<h2><a name="how_do_i_get_my_plugin_into_the_install_system">How do I get my plugin into the
 
install system?</a></h2>
 
<p>There are two ways to do this. First, you can put it in the
 
plugins directory with the distribution. During the install it
 
will be copied to the plugins directory in (by default,
 
<em class="file">/usr/local/slash/plugins/</em>. The second option is to copy it in
 
there yourself and make sure that your library files (perl modules)
 
are installed. If you decide to go the first route you
 
may want to consider adding your libraries to the list
 
of plugins that get installed, in the main Slash Makefile.</p>
 
<p>
 
</p>
 
<h2><a name="what_does_my_plugin_need_to_make_it_work_with_the_install">What does my plugin
 
need to make it work with the install?</a></h2>
 
<p>If you look at the plugins that come with Slash you will find a
 
file called PLUGIN. This handles how the plugin installer will
 
see your plugin.  In the file, each keyword appears on a line
 
by itself with a '=' seperating it and the directive.  For example:</p>
 
<pre>
 
        htdoc=search.pl</pre>
 
<p>The following are the keywords it knows:</p>
 
<dl>
 
<dt><strong><a name="description" class="item">description</a></strong></dt>
 
 
<dd>
 
<p>What will be displayed during the install for the user,
 
describing what the plugin does</p>
 
</dd>
 
<dt><strong><a name="mysql_schema" class="item">mysql_schema</a></strong></dt>
 
 
<dd>
 
<p>Schema for MySQL</p>
 
</dd>
 
<dt><strong><a name="mysql_dump" class="item">mysql_dump</a></strong></dt>
 
 
<dd>
 
<p>Dump for MySQL</p>
 
</dd>
 
<dt><strong><a name="pg_schema" class="item">pg_schema</a></strong></dt>
 
 
<dd>
 
<p>Schema for PostgreSQL</p>
 
</dd>
 
<dt><strong><a name="pg_dump" class="item">pg_dump</a></strong></dt>
 
 
<dd>
 
<p>Dump for PostgreSQL</p>
 
</dd>
 
<dt><strong><a name="htdoc" class="item">htdoc</a></strong></dt>
 
 
<dd>
 
<p>A document to be installed in the htdocs directory for the Slash site</p>
 
</dd>
 
<dt><strong><a name="template" class="item">template</a></strong></dt>
 
 
<dd>
 
<p>A template to be installed in the database</p>
 
</dd>
 
<dt><strong><a name="image" class="item">image</a></strong></dt>
 
 
<dd>
 
<p>An image to be installed in the image directory</p>
 
</dd>
 
<dt><strong><a name="note" class="item">note</a></strong></dt>
 
 
<dd>
 
<p>A note to show the user when the install is over.
 
Good place to put notes about aditional libraries
 
needed, or other dependencies.</p>
 
</dd>
 
</dl>
 
<p>
 
</p>
 
<h2><a name="how_do_i_install_a_plugin_once_my_site_is_installed">How do I install a plugin
 
once my site is installed?</a></h2>
 
<p>Use the install-plugin tool. If run with the <code>-h</code> option,
 
it will describe the tool's usage.  If can list available
 
plugins and you can then select which plugins you want to
 
install (just like with install-slashsite).</p>
 
<p>
 
</p>
 
<h2><a name="do_install_plugin_and_install_slashsite_use_the_same_logic">Do install-plugin a
 
nd install-slashsite use the same logic?</a></h2>
 
<p>Yes, you can find it in the Slash::Install library.</p>
 
<p>
 
</p>
 
<h2><a name="i_have_a_really_cool_plugin_and_i_would_like_to_see_it_added_to_the_slash_distr
 
ibution__will_you_distribute_mine">I have a really cool plugin and I would like to see it ad
 
ded to the Slash distribution. Will you distribute mine?</a></h2>
 
<p>Maybe. We don't have any rules concerning this at the moment, so it will be
 
on a case by case basis. At some point in the future we will come up
 
with a much better answer.</p>
 
<p>
 
</p>
 
<hr />
 

Revision as of 04:28, 22 February 2014

CssWork parent


HOWTO-plugins from Slash docs

NAME
    HOWTO-Plugins - How to write and use Slash plugins

QUESTIONS
  What is a plugin?
    A plugin is an extension to the Slash system that adds some sort of
    functionality to the site. It should inherit its basic look and feel
    from the currently running theme (for example, background/foreground
    colors, calling header and footer components, etc. will be handled by
    the installed theme).

  How do I get my plugin into the install system?
    There are two ways to do this. First, you can put it in the plugins
    directory with the distribution. During the install it will be copied to
    the plugins directory in (by default, /usr/local/slash/plugins/. The
    second option is to copy it in there yourself and make sure that your
    library files (perl modules) are installed. If you decide to go the
    first route you may want to consider adding your libraries to the list
    of plugins that get installed, in the main Slash Makefile.

  What does my plugin need to make it work with the install?
    If you look at the plugins that come with Slash you will find a file
    called PLUGIN. This handles how the plugin installer will see your
    plugin. In the file, each keyword appears on a line by itself with a '='
    seperating it and the directive. For example:

            htdoc=search.pl

    The following are the keywords it knows:

    description
        What will be displayed during the install for the user, describing
        what the plugin does

    mysql_schema
        Schema for MySQL

    mysql_dump
        Dump for MySQL

    pg_schema
        Schema for PostgreSQL

    pg_dump
        Dump for PostgreSQL

    htdoc
        A document to be installed in the htdocs directory for the Slash
        site

    template
        A template to be installed in the database

    image
        An image to be installed in the image directory

    note
        A note to show the user when the install is over. Good place to put
        notes about aditional libraries needed, or other dependencies.

  How do I install a plugin once my site is installed?
    Use the install-plugin tool. If run with the "-h" option, it will
    describe the tool's usage. If can list available plugins and you can
    then select which plugins you want to install (just like with
    install-slashsite).

  Do install-plugin and install-slashsite use the same logic?
    Yes, you can find it in the Slash::Install library.

  I have a really cool plugin and I would like to see it added to the Slash distribution. Wi
ll you distribute mine?
    Maybe. We don't have any rules concerning this at the moment, so it will
    be on a case by case basis. At some point in the future we will come up
    with a much better answer.