123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542 |
- # SOME DESCRIPTIVE TITLE.
- # Copyright (C) 2013, Various
- # This file is distributed under the same license as the Elgg package.
- # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
- #
- #, fuzzy
- msgid ""
- msgstr ""
- "Project-Id-Version: Elgg 1.12\n"
- "Report-Msgid-Bugs-To: \n"
- "POT-Creation-Date: 2016-03-06 18:02+0200\n"
- "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
- "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
- "Language-Team: LANGUAGE <LL@li.org>\n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=UTF-8\n"
- "Content-Transfer-Encoding: 8bit\n"
- #: ../../tutorials/blog.rst:2
- msgid "Building a Blog Plugin"
- msgstr ""
- #: ../../tutorials/blog.rst:4
- msgid "Build a simple blogging plugin using Elgg."
- msgstr ""
- #: ../../tutorials/blog.rst:6
- msgid "This duplicates features in the bundled blog plugin, so be sure to disable that while working on your own version."
- msgstr ""
- #: ../../tutorials/blog.rst:0
- #: ../../tutorials/widget.rst:0
- msgid "Contents"
- msgstr ""
- #: ../../tutorials/blog.rst:14
- msgid "Create the plugin skeleton"
- msgstr ""
- #: ../../tutorials/blog.rst:16
- msgid "The name of the directory under \"mod\" becomes the id of your plugin::"
- msgstr ""
- #: ../../tutorials/blog.rst:22
- msgid "You'll need to add a manifest file in ``/mod/my_blog/manifest.xml``. This file stores basic information about the plugin. See :doc:`/guides/plugins` for the template. You can also just copy the manifest file from another plugin and then change the values to fit your new plugin. Be sure to change the author and website, and remove the “bundled” category!"
- msgstr ""
- #: ../../tutorials/blog.rst:28
- msgid "Create a page for composing the blogs"
- msgstr ""
- #: ../../tutorials/blog.rst:30
- msgid "Create the file ``add.php`` in ``/mod/my_blog/pages/my_blog/``."
- msgstr ""
- #: ../../tutorials/blog.rst:61
- msgid "Create the form for creating a new my\\_blog post"
- msgstr ""
- #: ../../tutorials/blog.rst:63
- msgid "Create a file at ``/mod/my_blog/views/default/forms/my_blog/save.php`` that contains the form body. This corresponds to view that is called above: ``elgg_view_form(\"my_blog/save\")``."
- msgstr ""
- #: ../../tutorials/blog.rst:67
- msgid "The form should have input fields for the title, body and tags. Because you used ``elgg_view_form()``, you do not need to include form tag markup. The view will be automatically wrapped with:"
- msgstr ""
- #: ../../tutorials/blog.rst:71
- msgid "a ``<form>`` tag and the necessary attributes"
- msgstr ""
- #: ../../tutorials/blog.rst:72
- msgid "anti-csrf tokens"
- msgstr ""
- #: ../../tutorials/blog.rst:74
- msgid "The form's action will be ``\"<?php echo elgg_get_site_url() ?>action/my_blog/save\"``, which we will create in a moment. Here is the content of ``/mod/my_blog/views/default/forms/my_blog/save.php``:"
- msgstr ""
- #: ../../tutorials/blog.rst:100
- msgid "Notice how the form is calling input views like ``input/longtext``. These are built into Elgg and make it easy to add form components. You can see a complete list of input views in the ``/views/default/input/`` directory."
- msgstr ""
- #: ../../tutorials/blog.rst:106
- msgid "The above code is not accessibility-friendly."
- msgstr ""
- #: ../../tutorials/blog.rst:109
- msgid "The action file"
- msgstr ""
- #: ../../tutorials/blog.rst:111
- msgid "Create the file ``/mod/my_blog/actions/my_blog/save.php``. This will save the blog post to the database."
- msgstr ""
- #: ../../tutorials/blog.rst:150
- msgid "A few fields are built into Elgg objects. Title and description are two of these. It makes sense to use description to contain the my\\_blog text. Every entity can have a subtype and in this we are using ``\"my_blog\"``. The tags are stored as metadata."
- msgstr ""
- #: ../../tutorials/blog.rst:155
- msgid "Every object in Elgg has a built-in URL automatically, although you can override this if you wish. The ``getURL()`` method is called to get that unique URL."
- msgstr ""
- #: ../../tutorials/blog.rst:160
- msgid "The object view"
- msgstr ""
- #: ../../tutorials/blog.rst:162
- msgid "Elgg will automatically call the ``object/my_blog`` view to view the my\\_blog post so we need to create the object view."
- msgstr ""
- #: ../../tutorials/blog.rst:165
- msgid "Objects in Elgg are a subclass of something called an “entity”. Users, sites, and groups are also subclasses of entity. All entities can (and should) have a subtype, which allows granular control for listing and displaying. Here, we have used the subtype \"``my_blog``\\ \" to identify a my\\_blog post, but any alphanumeric string can be a valid subtype. When picking subtypes, be sure to pick ones that make sense for your plugin."
- msgstr ""
- #: ../../tutorials/blog.rst:173
- msgid "In ``/mod/my_blog/views/default/``, create a folder ``/object/`` and then create a file ``my_blog.php`` in it."
- msgstr ""
- #: ../../tutorials/blog.rst:176
- msgid "Each my\\_blog post will be passed to this PHP file as ``$vars['entity']``. (``$vars`` is an array used in the views system to pass variables to a view.) The content of ``object/my_blog.php`` can just be something like:"
- msgstr ""
- #: ../../tutorials/blog.rst:189
- msgid "The last line takes the tags on the my\\_blog post and automatically displays them as a series of clickable links. Search is handled automatically."
- msgstr ""
- #: ../../tutorials/blog.rst:193
- msgid "(If you're wondering about the '``default``\\ ' in ``/views/default/``, you can create alternative views. RSS, OpenDD, FOAF, mobile and others are all valid view types.)"
- msgstr ""
- #: ../../tutorials/blog.rst:198
- msgid "Plugin start.php"
- msgstr ""
- #: ../../tutorials/blog.rst:200
- msgid "Every plugin has a ``start.php`` that initializes it. For this example, we just need to register the action file we created earlier: Also see a related guide about :doc:`/guides/actions`."
- msgstr ""
- #: ../../tutorials/blog.rst:210
- msgid "The action will now be available as ``/action/my_blog/save``. By default, all actions are available only to logged in users. If you want to make an action available to only admins or open it up to unauthenticated users, you can pass 'admin' or 'public' as the third parameter of ``elgg_register_action()``, respectively."
- msgstr ""
- #: ../../tutorials/blog.rst:216
- #: ../../tutorials/hello_world.rst:72
- msgid "Registering a page handler"
- msgstr ""
- #: ../../tutorials/blog.rst:218
- msgid "In order to be able to serve the page that generates the form, you'll need to register a page handler. Add the following to your start.php:"
- msgstr ""
- #: ../../tutorials/blog.rst:233
- msgid "Page handling functions need to return ``true`` or ``false``. ``true`` means the page exists and has been handled by the page handler. ``false`` means that the page does not exist and the user will be forwarded to the site's 404 page (requested page does not exist or not found). In this particular example, the URL must contain ``/my_blog/add`` for the user to view a page with a form, otherwise the user will see a 404 page."
- msgstr ""
- #: ../../tutorials/blog.rst:242
- msgid "Trying it out"
- msgstr ""
- #: ../../tutorials/blog.rst:244
- msgid "If you have not enabled the plugin yet, you will need to go to Administration => Configure => Plugins => Advanced. Scroll to the bottom until you see your plugin. Click the Enable button."
- msgstr ""
- #: ../../tutorials/blog.rst:248
- msgid "The page to create a new my\\_blog post is accessible at http://yoursite/my_blog/add. Try it out."
- msgstr ""
- #: ../../tutorials/blog.rst:252
- msgid "Displaying list of my\\_blogs"
- msgstr ""
- #: ../../tutorials/blog.rst:254
- msgid "Let's also create a page that lists my\\_blog entries that have been created."
- msgstr ""
- #: ../../tutorials/blog.rst:256
- msgid "Create ``/mod/my_blog/pages/my_blog/all.php``."
- msgstr ""
- #: ../../tutorials/blog.rst:258
- msgid "To grab the latest my\\_blog posts, we'll use ``elgg_list_entities``. Note that this function returns only the posts that the user can see, so access restrictions are handled transparently:"
- msgstr ""
- #: ../../tutorials/blog.rst:269
- msgid "The function \\`elgg\\_list\\_entities\\` (and its cousins) also transparently handle pagination, and even create an RSS feeds for your my\\_blogs if you have defined these views."
- msgstr ""
- #: ../../tutorials/blog.rst:273
- msgid "Finally, we'll draw the page:"
- msgstr ""
- #: ../../tutorials/blog.rst:281
- msgid "We will then need to modify our my\\_blog page handler to grab the new page when the URL is set to ``/my_blog/all``. So, your new ``my_blog_page_handler()`` function in start.php should look like:"
- msgstr ""
- #: ../../tutorials/blog.rst:302
- msgid "Now, if the URL contains just ``/my_blog`` or ``/my_blog/all``, the user will see an \"All Site Blogs\" page."
- msgstr ""
- #: ../../tutorials/blog.rst:306
- msgid "A user's blog page"
- msgstr ""
- #: ../../tutorials/blog.rst:308
- msgid "If we grab the Global Unique IDentifier (GUID) of the logged in user, we can limit the my\\_blog posts to those posted by specifying the owner\\_guid argument in the list function above."
- msgstr ""
- #: ../../tutorials/blog.rst:322
- msgid "The end"
- msgstr ""
- #: ../../tutorials/blog.rst:324
- msgid "There's much more that could be done for this plugin, but hopefully this gives you a good idea of how to get started with your own."
- msgstr ""
- #: ../../tutorials/hello_world.rst:2
- msgid "Hello world"
- msgstr ""
- #: ../../tutorials/hello_world.rst:4
- msgid "This tutorial shows you how to build a simple plugin that adds a new page and prints the text \"Hello world\" on it."
- msgstr ""
- #: ../../tutorials/hello_world.rst:7
- msgid "In this tutorial we will use the address ``http://www.mysite.com/`` as an example. While developing the plugin you should use the address of your own site instead of the example address."
- msgstr ""
- #: ../../tutorials/hello_world.rst:12
- msgid "Required files"
- msgstr ""
- #: ../../tutorials/hello_world.rst:13
- msgid "First of all you need a directory that will hold all the files required by the plugin. Go to the ``mod`` directory of your Elgg site and create there a directory with the name ``hello_world``."
- msgstr ""
- #: ../../tutorials/hello_world.rst:19
- msgid "Go to the ``hello_world`` directory and create these two files inside it:"
- msgstr ""
- #: ../../tutorials/hello_world.rst:18
- #: ../../tutorials/indexpage.rst:7
- msgid "start.php"
- msgstr ""
- #: ../../tutorials/hello_world.rst:19
- msgid "manifest.xml"
- msgstr ""
- #: ../../tutorials/hello_world.rst:21
- msgid "Copy this to the ``manifest.xml`` file:"
- msgstr ""
- #: ../../tutorials/hello_world.rst:39
- msgid "Add your name to the ``<author></author>`` element."
- msgstr ""
- #: ../../tutorials/hello_world.rst:41
- msgid "The plugin has now the minimum requirements for your site to recognize it. Log in to your site as an administrator and access the plugins page at the administration panel. By default the plugin is at the bottom of the plugins list. Click the \"Activate\" button to start it."
- msgstr ""
- #: ../../tutorials/hello_world.rst:50
- msgid "The Hello world plugin has appeared to the bottom of the plugin list"
- msgstr ""
- #: ../../tutorials/hello_world.rst:53
- msgid "Initializing the plugin"
- msgstr ""
- #: ../../tutorials/hello_world.rst:55
- msgid "The next step is to add some actual features. Open the ``start.php`` and copy this to it:"
- msgstr ""
- #: ../../tutorials/hello_world.rst:68
- msgid "This piece of code tells Elgg that it should call the function ``hello_world_init()`` when the Elgg core system is initiated."
- msgstr ""
- #: ../../tutorials/hello_world.rst:74
- msgid "The next step is to register a page handler which has the purpose of handling request that users make to the URL http://www.mysite.com/hello/."
- msgstr ""
- #: ../../tutorials/hello_world.rst:77
- msgid "Update the ``start.php`` to look like this:"
- msgstr ""
- #: ../../tutorials/hello_world.rst:101
- msgid "The call to ``elgg_register_page_handler()`` tells Elgg that it should call the function ``hello_world_page_handler()`` when user goes to your site and has \"hello\" at the end of the URL."
- msgstr ""
- #: ../../tutorials/hello_world.rst:105
- msgid "The ``hello_world_page_handler()`` makes it possible for the users to access the actual page. Inside the function we first give an array of parameters to the ``elgg_view_layout()`` function."
- msgstr ""
- #: ../../tutorials/hello_world.rst:112
- msgid "The parameters include:"
- msgstr ""
- #: ../../tutorials/hello_world.rst:110
- msgid "The title of the page"
- msgstr ""
- #: ../../tutorials/hello_world.rst:111
- msgid "The contents of the page"
- msgstr ""
- #: ../../tutorials/hello_world.rst:112
- msgid "Filter which is left empty because there's currently nothing to filter"
- msgstr ""
- #: ../../tutorials/hello_world.rst:114
- msgid "This creates the basic layout for the page. The layout is then run through ``elgg_view_page()`` which assembles and outputs the full page."
- msgstr ""
- #: ../../tutorials/hello_world.rst:117
- msgid "You can now go to the address http://www.mysite.com/hello/ and you should see the page."
- msgstr ""
- #: ../../tutorials/hello_world.rst:123
- msgid "Elgg is now routing the URL http://www.mysite.com/hello/ to the page you created."
- msgstr ""
- #: ../../tutorials/index.rst:2
- msgid "Plugin Tutorials"
- msgstr ""
- #: ../../tutorials/index.rst:4
- msgid "Walk through all the required steps in order to create your own plugins."
- msgstr ""
- #: ../../tutorials/index.rst:6
- msgid "The instructions are detailed enough that you don't need much previous experience on plugin development."
- msgstr ""
- #: ../../tutorials/indexpage.rst:2
- msgid "Customizing the Home Page"
- msgstr ""
- #: ../../tutorials/indexpage.rst:4
- msgid "Overwrite the default index page on your Elgg install."
- msgstr ""
- #: ../../tutorials/indexpage.rst:9
- msgid "Register a function for the plugin hook called ``index, system`` that returns ``true``. This tells Elgg to assume that another front page has been drawn so it doesn't display the default page."
- msgstr ""
- #: ../../tutorials/indexpage.rst:12
- msgid "Inside start.php you will need something like the following:"
- msgstr ""
- #: ../../tutorials/indexpage.rst:31
- msgid "pages/index.php"
- msgstr ""
- #: ../../tutorials/indexpage.rst:33
- msgid "Then implement the page handler script (/pluginname/pages/index.php) to generate the desired output. Anything output from this script will become your new home page."
- msgstr ""
- #: ../../tutorials/widget.rst:2
- msgid "Basic Widget"
- msgstr ""
- #: ../../tutorials/widget.rst:4
- msgid "Create a widget that will display “Hello, World!” and optionally any text the user wants."
- msgstr ""
- #: ../../tutorials/widget.rst:6
- msgid "In Elgg, widgets are those components that you can drag onto your profile or admin dashboard."
- msgstr ""
- #: ../../tutorials/widget.rst:8
- msgid "This tutorial assumes you are familiar with basic Elgg concepts such as:"
- msgstr ""
- #: ../../tutorials/widget.rst:10
- msgid ":doc:`/guides/views`"
- msgstr ""
- #: ../../tutorials/widget.rst:11
- msgid ":doc:`/admin/plugins`"
- msgstr ""
- #: ../../tutorials/widget.rst:13
- msgid "You should review those if you get confused along the way."
- msgstr ""
- #: ../../tutorials/widget.rst:20
- msgid "Registering your plugin"
- msgstr ""
- #: ../../tutorials/widget.rst:22
- msgid "Plugins are always placed in the ``/mod`` directory. Create a subdirectory there called ``hello``. This will be the name of your plugin and will show up in the Plugins Administration section of Elgg by this name."
- msgstr ""
- #: ../../tutorials/widget.rst:27
- msgid "In ``/mod/hello``, create an empty file called ``start.php``. If this file exists, Elgg will load your plugin. Otherwise, you will see a misconfigured plugin error. Go to the admin section of your Elgg install and enable your plugin. Click on the “more info” link under your plugin name. You will notice that nothing happens."
- msgstr ""
- #: ../../tutorials/widget.rst:34
- msgid "Copy the ``manifest.xml`` file from one of the plugins in your elgg install into ``/mod/hello``."
- msgstr ""
- #: ../../tutorials/widget.rst:35
- msgid "Update its values so you are listed as the author and change the description to describe this new plugin."
- msgstr ""
- #: ../../tutorials/widget.rst:36
- msgid "Reload the Tools Administration page in your browser and check “more info” again."
- msgstr ""
- #: ../../tutorials/widget.rst:37
- msgid "It will now display the information that you've entered."
- msgstr ""
- #: ../../tutorials/widget.rst:40
- msgid "Adding the widget view code"
- msgstr ""
- #: ../../tutorials/widget.rst:42
- msgid "Elgg automatically scans particular directories under plugins looking for particular files. :doc:`/guides/views` make it easy to add your display code or do other things like override default Elgg behavior. For now, we will just be adding the view code for your widget. Create a file at ``/mod/hello/views/default/widgets/helloworld/content.php``. “helloworld” will be the name of your widget within the hello plugin. In this file add the code:"
- msgstr ""
- #: ../../tutorials/widget.rst:55
- msgid "This will add these words to the widget canvas when it is drawn. Elgg takes care of loading the widget."
- msgstr ""
- #: ../../tutorials/widget.rst:59
- msgid "Registering your widget"
- msgstr ""
- #: ../../tutorials/widget.rst:61
- msgid "Elgg needs to be told explicitly that the plugin contains a widget so that it will scan the widget views directory. This is done by calling the elgg\\_register\\_widget\\_type() function. Edit ``/mod/hello/start.php``. In it add these lines:"
- msgstr ""
- #: ../../tutorials/widget.rst:76
- msgid "Now go to your profile page using a web browser and add the “hello, world” widget. It should display “Hello, world!”."
- msgstr ""
- #: ../../tutorials/widget.rst:81
- msgid "For real widgets, it is always a good idea to support :doc:`/guides/i18n`."
- msgstr ""
- #: ../../tutorials/widget.rst:84
- msgid "Allow user customization"
- msgstr ""
- #: ../../tutorials/widget.rst:86
- msgid "Click on the edit link on the toolbar of the widget that you've created. You will notice that the only control it gives you by default is over access (over who can see the widget)."
- msgstr ""
- #: ../../tutorials/widget.rst:90
- msgid "Suppose you want to allow the user to control what greeting is displayed in the widget. Just as Elgg automatically loads ``content.php`` when viewing a widget, it loads ``edit.php`` when a user attempts to edit a widget. In ``/mod/hello/views/default/widgets/helloworld/``, create a file named ``edit.php``. In this file, add the following code:"
- msgstr ""
- #: ../../tutorials/widget.rst:113
- msgid "Notice the relationship between the values passed to the 'name' and the 'value' fields of input/text. The name of the input text box is ``params[message]`` because Elgg will automatically handle widget variables put in the array ``params``. The actual php variable name will be ``message``. If we wanted to use the field ``greeting`` instead of ``message`` we would pass the values ``params[greeting]`` and ``$widget->greeting`` respectively."
- msgstr ""
- #: ../../tutorials/widget.rst:121
- msgid "The reason we set the 'value' option of the array is so that the edit view remembers what the user typed in the previous time he changed the value of his message text."
- msgstr ""
- #: ../../tutorials/widget.rst:125
- msgid "Now to display the user's message we need to modify content.php to use this *message* variable. Edit content.php and change it to:"
- msgstr ""
- #: ../../tutorials/widget.rst:137
- msgid "You should now be able to enter a message in the text box and see it appear in the widget."
- msgstr ""
- #: ../../tutorials/wysiwyg.rst:2
- msgid "Integrating a Rich Text Editor"
- msgstr ""
- #: ../../tutorials/wysiwyg.rst:4
- msgid "Build your own wysiwyg plugin."
- msgstr ""
- #: ../../tutorials/wysiwyg.rst:6
- msgid "Elgg is bundled with a plugin for CKEditor_, and previously shipped with TinyMCE_ support. However, if you have a wysiwyg that you prefer, you could use this tutorial to help you build your own."
- msgstr ""
- #: ../../tutorials/wysiwyg.rst:12
- msgid "All forms in Elgg should try to use the provided input views located in ``views/default/input``. If these views are used, then it is simple for plugin authors to replace a view, in this case longtext.php, with their wysiwyg."
- msgstr ""
- #: ../../tutorials/wysiwyg.rst:17
- msgid "Create your plugin skeleton"
- msgstr ""
- #: ../../tutorials/wysiwyg.rst:19
- msgid "You will need to create your plugin and give it a start.php file where the plugin gets initialized, as well as a manifest.xml file to tell the Elgg engine about your plugin."
- msgstr ""
- #: ../../tutorials/wysiwyg.rst:22
- msgid "Read more in the guide about :doc:`/guides/plugins`."
- msgstr ""
- #: ../../tutorials/wysiwyg.rst:25
- msgid "Add the WYSIWYG library code"
- msgstr ""
- #: ../../tutorials/wysiwyg.rst:27
- msgid "Now you need to upload TinyMCE into a directory in your plugin. We strongly encourage you to put third party libraries in a “vendors” directory, as that is standard practice in Elgg plugins and will make your plugin much more approachable by other developers::"
- msgstr ""
- #: ../../tutorials/wysiwyg.rst:35
- msgid "Tell Elgg when and how to load TinyMCE"
- msgstr ""
- #: ../../tutorials/wysiwyg.rst:37
- msgid "Now that you have:"
- msgstr ""
- #: ../../tutorials/wysiwyg.rst:39
- msgid "created your start file"
- msgstr ""
- #: ../../tutorials/wysiwyg.rst:40
- msgid "intialized the plugin"
- msgstr ""
- #: ../../tutorials/wysiwyg.rst:41
- msgid "uploaded the wysiwyg code"
- msgstr ""
- #: ../../tutorials/wysiwyg.rst:43
- msgid "It is time to tell Elgg how to apply TinyMCE to longtext fields."
- msgstr ""
- #: ../../tutorials/wysiwyg.rst:45
- msgid "We're going to do that by extending the input/longtext view and including some javascript. Create a view tinymce/longtext and add the following code:"
- msgstr ""
- #: ../../tutorials/wysiwyg.rst:81
- msgid "Then, in your plugin's init function, extend the input/longtext view"
- msgstr ""
- #: ../../tutorials/wysiwyg.rst:89
- msgid "That's it! Now every time someone uses input/longtext, TinyMCE will be loaded and applied to that textarea."
- msgstr ""
|