Difference between revisions of "User:Frank Ralf/NanoGong"

Jump to: navigation, search

Note: You are currently viewing documentation for Moodle 2.0. Up-to-date documentation for the latest stable version is available here: Frank Ralf/NanoGong.

(Filter function)
 
(29 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
== Java settings ==
 
== Java settings ==
* see [[Development:Question type plugin how to#Configuration settings for your question type]]
+
(Not sure if this is relevant, but better to keep in mind ...)
 +
* see [[Question type plugin how to#Configuration settings for your question type]]
  
 
== Filter ==
 
== Filter ==
 +
General information on filters in Moodle 2.0 can be found at [[Filters 2.0]] and for developers at [[Filters 2.0]].
  
 
=== Language folder ===
 
=== Language folder ===
Add language folder: '''\lang\en\filter_nanogong.php''' with the following content:
+
Add language folder: '''\lang\en\''' and put '''filter_nanogong.php''' file with the following content there:
  
 
<code php>
 
<code php>
 
$string['filtername'] = 'NanoGong';
 
$string['filtername'] = 'NanoGong';
 
</code>
 
</code>
 +
 +
[[File:Nanogong filter folder structure.png]]
  
 
=== Filter function ===
 
=== Filter function ===
Line 33: Line 37:
 
=== File API ===
 
=== File API ===
  
* see [[Development:File API]] and [[Development:Using the File API]]
+
==== Proof of concept ====
 +
* Instead of the old '''file.php''' the new File API uses '''pluginfile.php'''.
 +
* I uploaded a test file (sentence.wav) as a resource to find out the internal URL Moodle uses for serving this file.
 +
* I then added this full URL as attribute to the NanoGong tag:
 +
 
 +
<code php>
 +
<nanogong
 +
    caption="Testing NanoGong..."
 +
    url="http://localhost/moodle-MOODLE_20_WEEKLY/pluginfile.php/130/mod_resource/content/1/sentence.wav"
 +
/>
 +
</code>
 +
 
 +
* As the URL is already in its full format I just commented out the following lines in '''filter.php'''.
 +
 
 +
<code php>
 +
if ($url != "") {
 +
    if ($CFG->slasharguments)
 +
        $url; # = "{$CFG->wwwroot}/file.php$url";
 +
    else
 +
        $url; # = "{$CFG->wwwroot}/file.php?file=$url";
 +
}
 +
</code>
 +
 
 +
* This works as a proof of concept.
  
* [[Development:Using_the_file_API#Serving_files_to_users]]
+
==== Getting closer ... ====
 +
 
 +
This modification does also work:
 +
 
 +
; NanoGong tag
 +
<code php>
 +
<nanogong
 +
    caption="Testing NanoGong..."
 +
    url="/130/mod_resource/content/1/sentence.wav"
 +
/>
 +
</code>
 +
 
 +
; filter.php
 +
<code php>
 +
if ($url != "") {
 +
    if ($CFG->slasharguments)
 +
        $url = "{$CFG->wwwroot}/pluginfile.php$url";
 +
    else
 +
        $url; # = "{$CFG->wwwroot}/file.php?file=$url";
 +
}
 +
</code>
 +
 
 +
==== Documentation ====
 +
* see [[File API]] and [[Using the File API]]
 +
 
 +
* [[File_API#File_serving]]
 +
* [[Using_the_file_API#Serving_files_to_users]]
 +
* [[File_storage_conversion_Quiz_and_Questions#Serving_files]]
  
 
== See also ==
 
== See also ==
 +
 +
; Necessary updating for Moodle 1.9
 +
* see [[User:Frank Ralf/NanoGong/1.9|subpage on Moodle 1.9]]
  
 
; Migrating to Moodle 2.0
 
; Migrating to Moodle 2.0
* [[Development:Migrating contrib code to 2.0]]
+
* [[Migrating contrib code to 2.0]]
* [[Development:Migrating to 2.0 checklist]]
+
* [[Migrating to 2.0 checklist]]
* [[Development:Migrating contrib code to 2.0/Experience of converting a module to Moodle 2]]
+
* [[Migrating contrib code to 2.0/Experience of converting a module to Moodle 2]]
  
 
; Forums
 
; Forums
 
* [http://moodle.org/mod/forum/discuss.php?d=170422 Release of NanoGong 4.1, an important update for Moodle users]
 
* [http://moodle.org/mod/forum/discuss.php?d=170422 Release of NanoGong 4.1, an important update for Moodle users]
 +
* [http://moodle.org/mod/forum/discuss.php?d=174922 NanoGong in Moodle 2.xxx]
 +
 +
; Moodle plugin database
 +
* [http://moodle.org/mod/data/view.php?d=13&mode=list&perpage=50&search=&sort=44&order=ASC&advanced=0&filter=1&advanced=1&f_44=&f_45=nanogong all NanoGong plugins]
  
 
; NanoGong documentation
 
; NanoGong documentation
Line 52: Line 113:
 
* [http://gong.ust.hk/moodle/course/view.php?id=2 Gong and NanoGong Demonstration]
 
* [http://gong.ust.hk/moodle/course/view.php?id=2 Gong and NanoGong Demonstration]
  
 
+
[[Category:Moodle 2.0|NanoGong]]
[[Category:Developer]]
 

Latest revision as of 07:24, 15 August 2011

Java settings

(Not sure if this is relevant, but better to keep in mind ...)

Filter

General information on filters in Moodle 2.0 can be found at Filters 2.0 and for developers at Filters 2.0.

Language folder

Add language folder: \lang\en\ and put filter_nanogong.php file with the following content there:

$string['filtername'] = 'NanoGong';

File:Nanogong filter folder structure.png

Filter function

The filter function is wrapped inside a class:

class filter_nanogong extends moodle_text_filter {
    function filter($text, array $options = array()){
    ...
    }
}

Note: The callback function has to be outside this class definition!

Preventing caching

$CFG->currenttextiscacheable = false;

is deprecated, outcommented

File API

Proof of concept

  • Instead of the old file.php the new File API uses pluginfile.php.
  • I uploaded a test file (sentence.wav) as a resource to find out the internal URL Moodle uses for serving this file.
  • I then added this full URL as attribute to the NanoGong tag:
<nanogong 
    caption="Testing NanoGong..." 
    url="http://localhost/moodle-MOODLE_20_WEEKLY/pluginfile.php/130/mod_resource/content/1/sentence.wav"
/>
  • As the URL is already in its full format I just commented out the following lines in filter.php.
if ($url != "") {
    if ($CFG->slasharguments)
        $url; # = "{$CFG->wwwroot}/file.php$url";
    else
        $url; # = "{$CFG->wwwroot}/file.php?file=$url";
}
  • This works as a proof of concept.

Getting closer ...

This modification does also work:

NanoGong tag
<nanogong 
    caption="Testing NanoGong..." 
    url="/130/mod_resource/content/1/sentence.wav"
/>
filter.php
if ($url != "") {
    if ($CFG->slasharguments)
        $url = "{$CFG->wwwroot}/pluginfile.php$url";
    else
        $url; # = "{$CFG->wwwroot}/file.php?file=$url";
}

Documentation

See also

Necessary updating for Moodle 1.9
Migrating to Moodle 2.0
Forums
Moodle plugin database
NanoGong documentation