Note: You are currently viewing documentation for Moodle 2.4. Up-to-date documentation for the latest stable version of Moodle may be available here: Database templates.

Database templates: Difference between revisions

From MoodleDocs
Line 43: Line 43:
You can use javascript to manipulate the way elements are displayed in either the List, Single or Add templates. Basically you need to enclose the part you want to manipulate in some named html element. The naming is essential as it allows you to identify the element for manipulation.  
You can use javascript to manipulate the way elements are displayed in either the List, Single or Add templates. Basically you need to enclose the part you want to manipulate in some named html element. The naming is essential as it allows you to identify the element for manipulation.  


Lets say, for example, you have a field in your database that stores a persons name and when you display the names in the List View you want count the time a name matches some criteria and display the result.
Lets say, for example, you have a field in your database that stores a persons name and when you display the names in the List View you want to count the times a name matches some criteria and display the result.


Your database will contain a field which we will call "name". In your List template you will be able to display the contents of that field by using the <nowiki>[[name]]</nowiki> construct at the place where you want that information displayed. For example in the ''Repeated entry'' on the list template you will have
Your database will contain a field which we will call "name". In your List template you will be able to display the contents of that field by using the <nowiki>[[name]]</nowiki> construct at the place where you want that information displayed. For example in the ''Repeated entry'' on the list template you will have
Line 55: Line 55:
</pre>
</pre>


You now need to modify that entry to enclose the part you want to manipulate in a named element.
You now need to modify that entry to ensure that the part you want to manipulate is a named element.


<pre>
<pre>
Line 65: Line 65:
</pre>
</pre>


The footer of your list view can then contain
The footer of your list view can then contain another named element to display the result.


<pre>
<pre>
Line 89: Line 89:
</pre>
</pre>


This will display a table of names and at the bottom will be the count of the names that matched foo or Foo.
This will display a table of names as is usual in the list view. Now at the bottom there will also be the count of the names that matched foo or Foo.


== Reset templates button ==
== Reset templates button ==

Revision as of 11:05, 25 October 2007

Template:Databases Templates for the Database module allow you to control the visual layout of information when listing, viewing or editing database entries. It is a similar to the technique used to mail merge letters in word proccessors such as Open Office Writer or Microsoft Word.


Tag usage

The content of each field you create for your database and a few special tags (listed below) can be inserted into the output template by the use of tags. To use the tags found on the left side, use the HTML viewer, place your cursor in the text area of your target edit and then click on the tag you want to place. Or simply type the appropriate name within the required symbols like ##this## or [[this]].

  • ##Edit## creates a clickable icon link that allows you to edit the current entry (only appears if you have the rights to do this)
  • ##More## creates a link to the single view, which may contain more detailed info
  • ##MoreURL## creates just the URL for the above link, useful for creating your own links. Please note that there is no any space between 'More' and 'URL'. You can click on the link icon and type ##MoreURL## into URL field or in source view type: <a href="##moreurl##">[[fieldname]]</a>
  • ##Delete## creates a link that lets you delete the current entry (only appears if you have the rights to do this)
  • ##Approve## create a link that lets you approve the current database entry (only appears if you have the rights to do this)
  • ##Comments## creates a link to the view/edit comments page, the link text is the current number of comments (only appears if comments are turned on)
  • ##User## creates a link to the user page of the user who submitted the entry, link text is their name

Here's a video demonstrating tag usage: http://video.google.com/videoplay?docid=7026851446099005477

List template

This template allows you to control the fields used and their layout when viewing multiple entries at once (e.g. search results). It is possible that this view may simply provide an overview with more detailed information available by clicking on an entry to access the single view of the entry.

Single template

This is used to display a single entry at a time and so has more space for display and can use, for example, larger versions of images or optionally provide more information than shown in the list view.

Add template

This template creates the interface form used when adding or editing database entries. Saving a template will overwrite whatever template you have already saved. The ability to create (and import and export) named templates for re-use is planned but not yet functional. Currently you can copy and paste your template for reuse elsewhere.

RSS template

Lets you control the content of the RSS feed for database entries.

CSS template

If any of the HTML in your other templates requires CSS to provide visual style you can specify it here.

Javascript template

You can use javascript to manipulate the way elements are displayed in either the List, Single or Add templates. Basically you need to enclose the part you want to manipulate in some named html element. The naming is essential as it allows you to identify the element for manipulation.

Lets say, for example, you have a field in your database that stores a persons name and when you display the names in the List View you want to count the times a name matches some criteria and display the result.

Your database will contain a field which we will call "name". In your List template you will be able to display the contents of that field by using the [[name]] construct at the place where you want that information displayed. For example in the Repeated entry on the list template you will have

 <table>
   <tr>
     <td>Name: [[name]]</td>
   </tr>
 <table>  

You now need to modify that entry to ensure that the part you want to manipulate is a named element.

 <table>
   <tr>
     <td name="named">Name: [[name]]</td>
   </tr>
 <table>  

The footer of your list view can then contain another named element to display the result.

  <div name="result"></div>

Your javascript template can now look as follows

 var cnt = 0;
 var re = /foo|Foo/;
 
 function init(){
   var namedElements = document.getElementsByName("named");
   for (i=0; i < namedElements.length; i++) {
       if(re.test(namedElements[i].innerHTML.match)) cnt++;
     }
   var namedResult = document.getElementsByName("result");
   namedResult[0].innerHTML = cnt;
   }
 
 window.onload = init;

This will display a table of names as is usual in the list view. Now at the bottom there will also be the count of the names that matched foo or Foo.

Reset templates button

When you first create a database the templates will be pre-filled with appropriate HTML. If you later add fields then you can press the reset templates button and it will add HTML for the new fields in a similar fashion. If you have edited any of the templates in the meantime then your changes will be lost. It is recommended that you finalize the database fields before changing the template code.

See also

Some Using Moodle forum discussions: