User:Commial/AWI
APERTIUM : Improvements to postedition interface Google Summer Of Code 2011
Contents
Jobs already done
Port the code for all recent php versions
I have replace all file_put_contents by fopen, fwrite, fclose, which are supported by older php versions. (Commit 30690)
Rewrite the PHP & Javascript as separate modules so that it be easy to decide which tools to enable or disable in the interface
The file "modules.php" is designed to manage modules. It includes :
Configuration of modules :
* Module structure : * name : Module's name * description : Short description of the module * default : Recommanded module * javascript : an array of javascript dependencies (with path javascript/) * php : an array of php dependencies (with path includes/) * button_in : HTML code for the interface, under the input, when the module is activated * button_out : HTML code for the interface, under the output, when the module is activated
For example : 'SpellGrammarChecking':
'name' => 'Spell and Grammar checking', 'description' => 'Integrate the ability to check both input and output texts for mistakes, with a button “Check for mistakes”. When pressed, it runs spell checking and grammar checking on the text and underlines mistakes in different colours (red for spelling, blue for grammar).', 'default' => TRUE, 'javascript' => array('textEditor.js', 'main.js'), 'php' => array('gramproof.php', 'strings.php', 'system.php'), 'button_in' => '<input type="submit" name="check_input" value="Check for mistakes" />', 'button_out' => '<input type="submit" name="check_output" value="Check for mistakes" />'
It includes too :
Functions for modules management :
* Check dependencies of a module * Load PHP dependencies of a module * Write Interface of a module * Load/Unload a module * List of module loaded, list of recommended modules * Write the list of Javascript libraries needed by loaded modules
How I see the current separations of modules : (Concerning PHP files)
The current interface for Load/Unload Modules (in Firefox 4, Ubuntu) :
(Commit 30719) includes :
* Creation of module structure * Creation of the content and form to easily Load/Unload modules * Cut existing files to make independent modules (the module 'Logs' isn't currently independent) * Modification of the interface display to allow the Add/Remove of buttons * Few changes to make the code more readable (repetitive code)
(Commit 30724) includes :
* Creation of gramproof.js, which contains javascript functions used by the module Spell checking and Grammar checking * Creation of logs.js, which contains javascript functions used by the module Logs * Some functions in textEditor.js are now in gramproof.js and logs.js * Functions of nodes.js, paste_event.js, logging_lowlevel.js and logging.js are now in logs.js (gain in number of browser request) * The module Logs is now independent
How I see the current separations of modules in javascript :
(Commit 30738) includes :
* Correction of an error in gramproof.js. The function displaySuggestionsList was defined two time.
(Commit 30792) includes :
* Creation of main.tmpl, textEditor.tmpl, which are template files for main.js and textEditor.js * Update index.php to launch the rewrite of main.js and textEditor.js when modules are load/unload * Add the function which rewrite file using template (named gen_templateJS(source, target)), in modules.php * Displacement of "is_installed" function, which is a function for the environment, not the translation core
An example of how the function gen_templateJS works :
(Commit 30819) includes :
* Modules to load are now set by the web-master, in config.php * The home page show which modules are loaded, and their description * The generation of main.js, textEditor.js has to be launched by the web-master, by uncommented a region in modules.php * Modules loaded are retains in a global variable $modules_load, not Sessions anymore
All modules are now separate, and it's easy to add, load/unload, alter and remove module.