Details

    • Type: Sub-task Sub-task
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.3
    • Fix Version/s: 2.5
    • Component/s: Questions
    • Labels:
    • Testing Instructions:
      Hide

      1. Go to a typical form including a HTML editor (e.g. make a forum post) and verify that nothing has changed there.

      2. Create a new Multiple choice question, and admire how much more compact the form is with all the HTML editing tools hidden (apart from question text and general feedback).

      3. Verify that you can hide or reveal the editing tools on any Editor field where they are initially hidden. Make sure the editors work, and that you can save the finished question.

      Show
      1. Go to a typical form including a HTML editor (e.g. make a forum post) and verify that nothing has changed there. 2. Create a new Multiple choice question, and admire how much more compact the form is with all the HTML editing tools hidden (apart from question text and general feedback). 3. Verify that you can hide or reveal the editing tools on any Editor field where they are initially hidden. Make sure the editors work, and that you can save the finished question.
    • Affected Branches:
      MOODLE_23_STABLE
    • Fixed Branches:
      MOODLE_25_STABLE
    • Pull Master Branch:
    • Rank:
      39742

      Description

      Question editing forms can get very long and unwieldy. To make them shorter and easier to use the editing buttons of the HTML editor should only be displayed when they are needed. Until then a show editor tools button should take their place.

      1. MDL-32750.20130130.png
        27 kB
      2. MDL-32750-localhost.png
        164 kB
      3. MDL-32750-qa.png
        191 kB

        Issue Links

          Activity

          Hide
          Colin Chambers added a comment -

          Collapsing the html editor tools is now done through the generic form editor classes.

          It's an option available for any html editor form element by passing 'collapsible' => 1 in the options array.

          As an example has been applied to the quiz question types.

          Only applies to the TinyMCE html editor. Is ignored if other editors are used.

          Show
          Colin Chambers added a comment - Collapsing the html editor tools is now done through the generic form editor classes. It's an option available for any html editor form element by passing 'collapsible' => 1 in the options array. As an example has been applied to the quiz question types. Only applies to the TinyMCE html editor. Is ignored if other editors are used.
          Hide
          Tim Hunt added a comment -

          That looks pretty good. I have some minor comments now

          1. The way you have set 'collapsible' => 1 as default in edit_question_form.php, and then turned it off just for questiontext and general feedback, is a very neat way to get what we want with minimal code-changes. I just think that the array_merge($this->editoroptions, Array('collapsible' => 0)) bit is not as clear as the code could be. You could made a new helper method

          protected function get_non_collabsible_editor_options() {
              return array_merge($this->editoroptions, Array('collapsible' => 0));
          }
          

          to improve the readability.

          2. In theme/base/style/core.css I think you should add the new style rules with the other .mform rules (around line 200).

          3. Code like static $is_initialised; is dangerous. For example, it can break when you start doing unit testing. However, I can't think of a better way to do this, so your code is probably OK for now.

          4. In the JavaScript, there are some // Need to implement comments, for example in toggleByClass. Actually, I am surprised you need to write a method like this yourself. Doesn't YUI provide a method like this?

          5. Is the toggle function used anywhere? I can't see a use so perhaps you should delete it.

          6. There are some code-checker type issues. It should be true, not TRUE, array, not Array, if($is_initialised){ should be if ($is_initialised) {, and so on.

          Show
          Tim Hunt added a comment - That looks pretty good. I have some minor comments now 1. The way you have set 'collapsible' => 1 as default in edit_question_form.php, and then turned it off just for questiontext and general feedback, is a very neat way to get what we want with minimal code-changes. I just think that the array_merge($this->editoroptions, Array('collapsible' => 0)) bit is not as clear as the code could be. You could made a new helper method protected function get_non_collabsible_editor_options() { return array_merge($ this ->editoroptions, Array('collapsible' => 0)); } to improve the readability. 2. In theme/base/style/core.css I think you should add the new style rules with the other .mform rules (around line 200). 3. Code like static $is_initialised; is dangerous. For example, it can break when you start doing unit testing. However, I can't think of a better way to do this, so your code is probably OK for now. 4. In the JavaScript, there are some // Need to implement comments, for example in toggleByClass. Actually, I am surprised you need to write a method like this yourself. Doesn't YUI provide a method like this? 5. Is the toggle function used anywhere? I can't see a use so perhaps you should delete it. 6. There are some code-checker type issues. It should be true, not TRUE, array, not Array, if($is_initialised){ should be if ($is_initialised) {, and so on.
          Hide
          Colin Chambers added a comment -

          Great comments. I’ve addressed them and pushed. ref https://github.com/colchambers/moodle/commit/95a851af1eae11034180437fe753a062d1edc1ab

          Removed unused js methods. Learnt more about YUI3 so I could remove or refactor a few more methods.

          Removed need for specific node hiding css. Found a YUI 3 alternative.

          Show
          Colin Chambers added a comment - Great comments. I’ve addressed them and pushed. ref https://github.com/colchambers/moodle/commit/95a851af1eae11034180437fe753a062d1edc1ab Removed unused js methods. Learnt more about YUI3 so I could remove or refactor a few more methods. Removed need for specific node hiding css. Found a YUI 3 alternative.
          Hide
          Tim Hunt added a comment -

          The revised commit looks a lot better. It would now be good for someone from HQ to take a look and comment.

          Show
          Tim Hunt added a comment - The revised commit looks a lot better. It would now be good for someone from HQ to take a look and comment.
          Hide
          Andrew Davis added a comment -

          In lib/form/editor.js I believe the @package should be core_form and the subpackage should be removed. See http://docs.moodle.org/dev/Coding_style#.40package

          Is "The Open University" the OU's legal name?

          I guess its personal preference but you seem to be being overly vigorous with the enforcement of maximum line length. Bear in mind its a somewhat flexible guideline and shouldn't take precedence over readability. http://docs.moodle.org/dev/Coding_style#Maximum_Line_Length

          +        editorId = id.substring(id.indexOf(tests[0]) + tests[0].length, id
          +                .length);
          

          There's quite a few references to TinyMCE. They're all comments and css class names that I can see but is there any chance that someone could install a different editor and that something here would break?

          Are these css class names pre-existing names we're stuck with or can they be made a bit more consistent with the existing stuff in that css file? Assuming any such consistency exists...
          .mform .felement.feditor .toggle_editor_toolbar
          .mform .felement.feditor .mceStatusbar,

          is_visible() seems a really fundamental function to have to implement. We'd need Sam Hemelryk to have a look but maybe we should put that in lib/javascript-static.js before we wind up with separate implementations all over Moodle.

          Show
          Andrew Davis added a comment - In lib/form/editor.js I believe the @package should be core_form and the subpackage should be removed. See http://docs.moodle.org/dev/Coding_style#.40package Is "The Open University" the OU's legal name? I guess its personal preference but you seem to be being overly vigorous with the enforcement of maximum line length. Bear in mind its a somewhat flexible guideline and shouldn't take precedence over readability. http://docs.moodle.org/dev/Coding_style#Maximum_Line_Length + editorId = id.substring(id.indexOf(tests[0]) + tests[0].length, id + .length); There's quite a few references to TinyMCE. They're all comments and css class names that I can see but is there any chance that someone could install a different editor and that something here would break? Are these css class names pre-existing names we're stuck with or can they be made a bit more consistent with the existing stuff in that css file? Assuming any such consistency exists... .mform .felement.feditor .toggle_editor_toolbar .mform .felement.feditor .mceStatusbar, is_visible() seems a really fundamental function to have to implement. We'd need Sam Hemelryk to have a look but maybe we should put that in lib/javascript-static.js before we wind up with separate implementations all over Moodle.
          Hide
          Rossiani Wijaya added a comment - - edited

          Hi Colin,

          Some feedback regarding the patch.

          I agreed with Andrew, for lib/form/editor.js, the package should be identified as

          @package core_form

          Also on line 59 (lib/form/editor.js) it should be

           tests = ['id_'];

          Other than that, the patch looks good.

          Thank you for fixing this.

          Show
          Rossiani Wijaya added a comment - - edited Hi Colin, Some feedback regarding the patch. I agreed with Andrew, for lib/form/editor.js, the package should be identified as @ package core_form Also on line 59 (lib/form/editor.js) it should be tests = ['id_']; Other than that, the patch looks good. Thank you for fixing this.
          Hide
          Colin Chambers added a comment -

          Great comments guys. Sorry to reply so late. Assumed I get an email telling me you'd replied.

          The line wrapping does seem extra zealous. I'm not normally that strict.
          The css names lack strict convention we were using tinymces existing styles as well as our own. So that's a mix of naming conventions but unavoidable.

          re is_visible(). It should be in a more general library but I remember looking for one and couldn't find anything. This goes for the whole form_editor_display class. I felt it was separate functionality from the core html editor functionality. So it should be easy to refactor this into a more appropriate location.

          Show
          Colin Chambers added a comment - Great comments guys. Sorry to reply so late. Assumed I get an email telling me you'd replied. The line wrapping does seem extra zealous. I'm not normally that strict. The css names lack strict convention we were using tinymces existing styles as well as our own. So that's a mix of naming conventions but unavoidable. re is_visible(). It should be in a more general library but I remember looking for one and couldn't find anything. This goes for the whole form_editor_display class. I felt it was separate functionality from the core html editor functionality. So it should be easy to refactor this into a more appropriate location.
          Hide
          Nadav Kavalerchik added a comment - - edited

          Fashionably late, I was just now made aware of this development (by Tim, discussing MDL-30637). So I hope it is not to late to take the development a little bit off road to a different direction...

          How about we leave a single toolbar with important icons for an initial basic view of the editor and not remove them completely. and just add the Show/Hide more advanced icons (tools) on the far end of the toolbar, as a toggle.
          What do you think?

          Show
          Nadav Kavalerchik added a comment - - edited Fashionably late, I was just now made aware of this development (by Tim, discussing MDL-30637 ). So I hope it is not to late to take the development a little bit off road to a different direction... How about we leave a single toolbar with important icons for an initial basic view of the editor and not remove them completely. and just add the Show/Hide more advanced icons (tools) on the far end of the toolbar, as a toggle. What do you think?
          Hide
          Jean-Michel Vedrine added a comment -

          Hello Colin,
          I am delighted to see progress on this issue and all the other ones from the parent issue.
          Months ago, I tested your first version and liked it a lot.
          But now with all the current work on forms, it's a little hard for me to see what will result of all your work mixed with all Rustlan work in MDL-30637.
          Would it be possible to make a mockup of what will result from this issue and MDL-32750 for the question creation page for a very complicated question type?
          Maybe I am asking too much and maybe it's too early to do that?
          Thanks anyway.
          I disagree with Nadav idea of a reduced toolbar and on the contrary I would prefer even just a small icon for the hidden editor in initial state, but maybe I am too extremist in asking for that, and your solution is a good compromise. The important point is that the form should be as compact as you can

          Show
          Jean-Michel Vedrine added a comment - Hello Colin, I am delighted to see progress on this issue and all the other ones from the parent issue. Months ago, I tested your first version and liked it a lot. But now with all the current work on forms, it's a little hard for me to see what will result of all your work mixed with all Rustlan work in MDL-30637 . Would it be possible to make a mockup of what will result from this issue and MDL-32750 for the question creation page for a very complicated question type? Maybe I am asking too much and maybe it's too early to do that? Thanks anyway. I disagree with Nadav idea of a reduced toolbar and on the contrary I would prefer even just a small icon for the hidden editor in initial state, but maybe I am too extremist in asking for that, and your solution is a good compromise. The important point is that the form should be as compact as you can
          Hide
          Colin Chambers added a comment - - edited

          Rebased branch on latest master and pushed. Latest is at https://github.com/colchambers/moodle/compare/master...MDL-32750

          updated package name as suggested, made code slightly more readable. Not sure why it was like that in the first place.

          Nadav, Jean Michel.

          Thanks for the comments. We considered the idea of keeping a shortened toolbar. Much of the complexity comes down to working with tinymce. I know a lot more about it now than I did then. I've realised since that it's best to write plugins for tinymce. instead of controlling it from external javascript. Maybe its not too difficult but re defining the editor options at will seemed quite a challenge. It also needed icons to be created. I think there were other things to consider but I forget.

          The main issue is that dynamically changing elements of the editor isn't generally supported in tinymce. So it's a lot more work than you'd think. Adjust the menu when instantiating the menu is easy enough. Changing it on the fly when needed is a different question.

          So this was the best solution that fit our needs.

          The functionality was kept as separate from the form toggling changes as possible. So hopefully he luns work in MDL-30637 won't affect this work.

          I doubt I'll have time to put some screenshots together though. Apologies. But I do hope to check the luns work and this editor toggle play nicely together.

          Thanks for the input guys. Hope you find the changes useful.

          Show
          Colin Chambers added a comment - - edited Rebased branch on latest master and pushed. Latest is at https://github.com/colchambers/moodle/compare/master...MDL-32750 updated package name as suggested, made code slightly more readable. Not sure why it was like that in the first place. Nadav, Jean Michel. Thanks for the comments. We considered the idea of keeping a shortened toolbar. Much of the complexity comes down to working with tinymce. I know a lot more about it now than I did then. I've realised since that it's best to write plugins for tinymce. instead of controlling it from external javascript. Maybe its not too difficult but re defining the editor options at will seemed quite a challenge. It also needed icons to be created. I think there were other things to consider but I forget. The main issue is that dynamically changing elements of the editor isn't generally supported in tinymce. So it's a lot more work than you'd think. Adjust the menu when instantiating the menu is easy enough. Changing it on the fly when needed is a different question. So this was the best solution that fit our needs. The functionality was kept as separate from the form toggling changes as possible. So hopefully he luns work in MDL-30637 won't affect this work. I doubt I'll have time to put some screenshots together though. Apologies. But I do hope to check the luns work and this editor toggle play nicely together. Thanks for the input guys. Hope you find the changes useful.
          Hide
          Colin Chambers added a comment -

          Made requested changes. Updated to latest master.

          Show
          Colin Chambers added a comment - Made requested changes. Updated to latest master.
          Hide
          Andrew Nicols added a comment -

          Rosi, hope you don't mind me stealing this off you... Tim has asked me to give another peer review now it's been updated.

          Show
          Andrew Nicols added a comment - Rosi, hope you don't mind me stealing this off you... Tim has asked me to give another peer review now it's been updated.
          Hide
          Andrew Nicols added a comment - - edited

          Hi Colin,

          Firstly let me say that I love this feature.

          [N] Syntax
          [?] Output
          [N] Whitespace
          [Y] Language
          [-] Databases
          [N] Testing
          [-] Security
          [Y] Documentation
          [Y] Git
          [Y] Sanity check

          Syntax

          General

          • Use of camelCase instead of lowercase in both variables and function names
          • Doesn't pass jshint/jslint
          • some DOS newlines

          YUI module vs js_init_call

          Personally, I'd much prefer this if it were written as a YUI module, but it is okay in the forms.js version - it's just slightly less flexible in some respects (e.g. it's harder to call dynamically). I do realise that it can be slightly more flexible in other respects though.

          Events

          It would be better if we weren't using Node.on('click') events for the toggle, but instead used event delegation:

          Y.one('body').delegate('click', this.toggle_editor_toolbars, 'a.toggle_editor_toolbar', this);
          

          This would also allow for simplification of the toggle button creation.

          Initial setup

          I'm concerned that there may potentially be a race condition with the tinyMCE.get(editorid). Because each tinyMCE instance can be really slow to set up, it may be that your code runs either before, during, or after they're all set up. If it's before then none of them will have the the toggle, if during then some, and if after then all. Additionally, if an editor is added later, then it won't be toggleable.

          One solution to this would be to add an event handler to tinyMCE.onAddEditor, and an event handler to editor.onInit.
          Frustratingly, onAddEditor is triggered before the editor is created, and I haven't (yet) found a way of triggering directly on the editor.onInit event. The tinyMCE docs are nasty!

          I suspect you may have encountered the race condition by your use of a setTimeout in initialiseEditorToggles. I believe that the solution above should avoid this.

          You'd then need to modify the toggleEditorToolbars function capable of taking either an event or a node and toggling the editor relating to that item.

          What I currently have (which largely works) is:

              initialiseEditorToggles : function() {
                  // Work done here
                  ...
          
                  // Delegate clicks of the toggle_editor_toolbar
                  Y.one('body').delegate('click', M.form_editor.toggleEditorToolbars, 'a.toggle_editor_toolbar', this);
          
                  // Set up editors which have already been created
                  for (editor in tinyMCE.editors) {
                      this.setup_editor(tinyMCE.editors[editor]);
                  }
          
                  // Set up for future editors
                  tinyMCE.onAddEditor.add(Y.bind(this.setup_editor_listener, this));
              },
              setup_editor_listener : function (mgr, ed) {
                  ed.onInit.add(Y.bind(this.setup_editor, this));
              },
          
              toggleEditorToolbars : function(thisevent) {
                  var button = thisevent.target.ancestor('a', true),
                      editortable = thisevent.target.ancestor('span', true).one('table.mceLayout');
                  this.toggleEditorToolbar(button, editortable);
              }
          

          Whitespace

          • some trailing whitespace in one or two places (nothing serious)

          Output

          I'm not sure how accessible the toggle anchor is... this may be a non-issue.

          Testing

          Could do with mentioning a few other things:

          • checking the JS console (hopefully testers would know this anyway); and
          • checking repeated toggles.

          There may be more things to consider...

          Show
          Andrew Nicols added a comment - - edited Hi Colin, Firstly let me say that I love this feature. [N] Syntax [?] Output [N] Whitespace [Y] Language [-] Databases [N] Testing [-] Security [Y] Documentation [Y] Git [Y] Sanity check Syntax General Use of camelCase instead of lowercase in both variables and function names Doesn't pass jshint/jslint some DOS newlines YUI module vs js_init_call Personally, I'd much prefer this if it were written as a YUI module, but it is okay in the forms.js version - it's just slightly less flexible in some respects (e.g. it's harder to call dynamically). I do realise that it can be slightly more flexible in other respects though. Events It would be better if we weren't using Node.on('click') events for the toggle, but instead used event delegation: Y.one('body').delegate('click', this .toggle_editor_toolbars, 'a.toggle_editor_toolbar', this ); This would also allow for simplification of the toggle button creation. Initial setup I'm concerned that there may potentially be a race condition with the tinyMCE.get(editorid). Because each tinyMCE instance can be really slow to set up, it may be that your code runs either before, during, or after they're all set up. If it's before then none of them will have the the toggle, if during then some, and if after then all. Additionally, if an editor is added later, then it won't be toggleable. One solution to this would be to add an event handler to tinyMCE.onAddEditor, and an event handler to editor.onInit. Frustratingly, onAddEditor is triggered before the editor is created, and I haven't (yet) found a way of triggering directly on the editor.onInit event. The tinyMCE docs are nasty! I suspect you may have encountered the race condition by your use of a setTimeout in initialiseEditorToggles. I believe that the solution above should avoid this. You'd then need to modify the toggleEditorToolbars function capable of taking either an event or a node and toggling the editor relating to that item. What I currently have (which largely works) is: initialiseEditorToggles : function() { // Work done here ... // Delegate clicks of the toggle_editor_toolbar Y.one('body').delegate('click', M.form_editor.toggleEditorToolbars, 'a.toggle_editor_toolbar', this ); // Set up editors which have already been created for (editor in tinyMCE.editors) { this .setup_editor(tinyMCE.editors[editor]); } // Set up for future editors tinyMCE.onAddEditor.add(Y.bind( this .setup_editor_listener, this )); }, setup_editor_listener : function (mgr, ed) { ed.onInit.add(Y.bind( this .setup_editor, this )); }, toggleEditorToolbars : function(thisevent) { var button = thisevent.target.ancestor('a', true ), editortable = thisevent.target.ancestor('span', true ).one('table.mceLayout'); this .toggleEditorToolbar(button, editortable); } Whitespace some trailing whitespace in one or two places (nothing serious) Output I'm not sure how accessible the toggle anchor is... this may be a non-issue. Testing Could do with mentioning a few other things: checking the JS console (hopefully testers would know this anyway); and checking repeated toggles. There may be more things to consider...
          Hide
          Andrew Nicols added a comment -

          Colin: P.S. Feel free to contact me on Jabber if you want to discuss any of the above. Tim Hunt has my contact details, or I'll be in the developer chat.

          Show
          Andrew Nicols added a comment - Colin: P.S. Feel free to contact me on Jabber if you want to discuss any of the above. Tim Hunt has my contact details, or I'll be in the developer chat.
          Hide
          Andrew Nicols added a comment -

          Sorry, just spotted another minor issue - the commit message is prefixed with a #

          Show
          Andrew Nicols added a comment - Sorry, just spotted another minor issue - the commit message is prefixed with a #
          Hide
          Colin Chambers added a comment -

          I just merged the luns changes with these editor changes. Testing to see if they play nicely together. Good news is it worked fine. We worked hard to ensure we changed as little as possible.

          Jean Michel. To answer your question. All that really happens is that the big editor fields shrink a lot. So you can see many more fields in the one page. Combined with collapsible fields you're generally able to see all fields without scrolling assuming you use the collapsing sections.

          One thing I should mention is that these changes only apply to question editing forms for now. They can be implemented in core moodle but we wanted to prove them in questions first then roll out if people ask for them. The forms library now has a new config for the editor: "collapsible". You set that true and the editor will become collapsible.

          Show
          Colin Chambers added a comment - I just merged the luns changes with these editor changes. Testing to see if they play nicely together. Good news is it worked fine. We worked hard to ensure we changed as little as possible. Jean Michel. To answer your question. All that really happens is that the big editor fields shrink a lot. So you can see many more fields in the one page. Combined with collapsible fields you're generally able to see all fields without scrolling assuming you use the collapsing sections. One thing I should mention is that these changes only apply to question editing forms for now. They can be implemented in core moodle but we wanted to prove them in questions first then roll out if people ask for them. The forms library now has a new config for the editor: "collapsible". You set that true and the editor will become collapsible.
          Hide
          Colin Chambers added a comment -

          Andrew,

          Thanks for the comments. This work was completed a year ago before I'd spent much time with moodles recent approach to JS. I like the way it's headed but it hadn't permeated all the code back then so I didn't have much to reference.

          I also hadn't got my head around the latest YUI at that point. It's a great jump forward with, for me, a learning curve in several aspects. The same is true for tinyMCE. Getting it to work reliably with its design constraints and the way it's implemented in Moodle was a challenge. It makes a lot more sense now. If I had time to redo it I'd write the functionality as a plugin then just create the toggle link as it is.

          I like your suggestions and examples. You seem much more familiar with tinyMCE than I am.

          I won't say I've considered every possible scenario. IE particularly loads the editors very late. Hence the timeout code you've found. That's the biggest reason I've used old tried and trusted approaches instead of newer cleaner ones. Frustrating but necessary. I believe that the OU is now moving away from supporting IE6 and maybe 7 so these constraints no longer apply.

          The idea was very much to put something in place, get it working and see if people actually like it. It generally works and should fail gracefully if it doesn't in that the editor should still be available and function. Hence an error shouldn't prevent the student or teacher getting their job done.

          If it's a successful feature then we spend more time improving it.

          HTH.

          Show
          Colin Chambers added a comment - Andrew, Thanks for the comments. This work was completed a year ago before I'd spent much time with moodles recent approach to JS. I like the way it's headed but it hadn't permeated all the code back then so I didn't have much to reference. I also hadn't got my head around the latest YUI at that point. It's a great jump forward with, for me, a learning curve in several aspects. The same is true for tinyMCE. Getting it to work reliably with its design constraints and the way it's implemented in Moodle was a challenge. It makes a lot more sense now. If I had time to redo it I'd write the functionality as a plugin then just create the toggle link as it is. I like your suggestions and examples. You seem much more familiar with tinyMCE than I am. I won't say I've considered every possible scenario. IE particularly loads the editors very late. Hence the timeout code you've found. That's the biggest reason I've used old tried and trusted approaches instead of newer cleaner ones. Frustrating but necessary. I believe that the OU is now moving away from supporting IE6 and maybe 7 so these constraints no longer apply. The idea was very much to put something in place, get it working and see if people actually like it. It generally works and should fail gracefully if it doesn't in that the editor should still be available and function. Hence an error shouldn't prevent the student or teacher getting their job done. If it's a successful feature then we spend more time improving it. HTH.
          Hide
          Jean-Michel Vedrine added a comment -

          Hello Colin,
          Yes my demand of just an icon was not good. In fact I didn't remembered well how it worked, but I have created a local branch now with your commit and played with it and yes you solution is the best one.
          I was not able to merge luns changes as my git knowledge is rather limited. I only know how to do basic things.

          Show
          Jean-Michel Vedrine added a comment - Hello Colin, Yes my demand of just an icon was not good. In fact I didn't remembered well how it worked, but I have created a local branch now with your commit and played with it and yes you solution is the best one. I was not able to merge luns changes as my git knowledge is rather limited. I only know how to do basic things.
          Hide
          Jean-Michel Vedrine added a comment -

          I have been able to play with MDL-32750 + MDL-30637 both enabled and the question editing screen is really a lot better ! Of course small adjustments are needed (In Stack the inputs are initially shown as expanded,and personally I would prefer the general feedback editor to be collapsed).
          Really it makes a difference. Thanks a lot Colin.

          Show
          Jean-Michel Vedrine added a comment - I have been able to play with MDL-32750 + MDL-30637 both enabled and the question editing screen is really a lot better ! Of course small adjustments are needed (In Stack the inputs are initially shown as expanded,and personally I would prefer the general feedback editor to be collapsed). Really it makes a difference. Thanks a lot Colin.
          Hide
          Colin Chambers added a comment -

          Thanks Jean. My git knowledge is limited too. Tim Hunt MDL-32750 + MDL-30637 for me. I just claimed credit

          So I've just addressed Andrews comments and merged his refactored event code. Much better than what I had. It's at the same git url https://github.com/colchambers/moodle/compare/master...MDL-32750
          Hope this makes it easier for andrew to add improvements as he gets time.

          HTH. Keep the comments coming.

          FYI I keep wanting to improve the code but I don't have time. It's what I could do a year ago. I've retested against IE7-9, chrome and firefox. Feel free to check any browser you need. Basic code is quite standard. That's what I went for.

          Andrews improvements should make this handle new editors added after page load. The refresh logic was for IE6 and I think 7. Leaving for now just in case. It doesn't impact performance. Just covers the older browser. We still have too many people using it unfortunately.

          Accessibility should be ok since it's a basic button that does the work. How it affects the editor and its accessibility I can't say. I feel it's an important usability improvement though.

          Show
          Colin Chambers added a comment - Thanks Jean. My git knowledge is limited too. Tim Hunt MDL-32750 + MDL-30637 for me. I just claimed credit So I've just addressed Andrews comments and merged his refactored event code. Much better than what I had. It's at the same git url https://github.com/colchambers/moodle/compare/master...MDL-32750 Hope this makes it easier for andrew to add improvements as he gets time. HTH. Keep the comments coming. FYI I keep wanting to improve the code but I don't have time. It's what I could do a year ago. I've retested against IE7-9, chrome and firefox. Feel free to check any browser you need. Basic code is quite standard. That's what I went for. Andrews improvements should make this handle new editors added after page load. The refresh logic was for IE6 and I think 7. Leaving for now just in case. It doesn't impact performance. Just covers the older browser. We still have too many people using it unfortunately. Accessibility should be ok since it's a basic button that does the work. How it affects the editor and its accessibility I can't say. I feel it's an important usability improvement though.
          Hide
          Colin Chambers added a comment -

          Addressed latest comments. Should be ready to go now. Should be based on latest master.

          Show
          Colin Chambers added a comment - Addressed latest comments. Should be ready to go now. Should be based on latest master.
          Hide
          Tim Hunt added a comment -

          I hope Andrew will be able to look again at the JavaScript, because it goes beyond what I feel confident critiqueing. The bits I do understand are looking good.

          The only things I spotted wrong were code-checker type things:

          1. Annoying whitespace problem: https://github.com/colchambers/moodle/compare/master...MDL-32750#L1R388

          2. I think that isset($this->_options['collapsible']) && $this->_options['collapsible'] would be better as !empty($this->_options['collapsible']).

          3. I think https://github.com/colchambers/moodle/compare/master...MDL-32750#L2R10 should have a second *, to make this a JSdoc comment.

          4. https://github.com/colchambers/moodle/compare/master...MDL-32750#L2R41 - missing space after the comma.

          5. https://github.com/colchambers/moodle/compare/master...MDL-32750#L2R85 - whitespace error.

          Show
          Tim Hunt added a comment - I hope Andrew will be able to look again at the JavaScript, because it goes beyond what I feel confident critiqueing. The bits I do understand are looking good. The only things I spotted wrong were code-checker type things: 1. Annoying whitespace problem: https://github.com/colchambers/moodle/compare/master...MDL-32750#L1R388 2. I think that isset($this->_options ['collapsible'] ) && $this->_options ['collapsible'] would be better as !empty($this->_options ['collapsible'] ). 3. I think https://github.com/colchambers/moodle/compare/master...MDL-32750#L2R10 should have a second *, to make this a JSdoc comment. 4. https://github.com/colchambers/moodle/compare/master...MDL-32750#L2R41 - missing space after the comma. 5. https://github.com/colchambers/moodle/compare/master...MDL-32750#L2R85 - whitespace error.
          Hide
          Colin Chambers added a comment -

          Thanks Tim. Updated git again https://github.com/colchambers/moodle/compare/master...MDL-32750

          Addressed your comments. Also refactored the module name and location to lib/form/yui/editorcollapse/editorcollapse.js and class name moodle-form-editorcollapse. Tried your original suggestion https://moodle.org/local/chatlogs/index.php?conversationid=11931#c407992 but that expects the code in mod/form-editor. This was the best compromise I could find. It also expects filename to match folder name. All classes in the yui folder match this. So I went with it.

          Can't run codechecker. It might be because it's inside a yui folder but I think it's because it's inside lib. Hence the comments from Tim. Shame.

          I've also merged andrews small changes from https://github.com/andrewnicols/moodle/commit/936775585708456e6fb965fbf0727e9021ecc3d1. Not all were correct. tinyMCE.dom isn't recognised and ed.getContainer needed (). Overall it's a good improvement. More OO. Thanks for the help.

          Hopefully this is ready for integration now.

          Show
          Colin Chambers added a comment - Thanks Tim. Updated git again https://github.com/colchambers/moodle/compare/master...MDL-32750 Addressed your comments. Also refactored the module name and location to lib/form/yui/editorcollapse/editorcollapse.js and class name moodle-form-editorcollapse. Tried your original suggestion https://moodle.org/local/chatlogs/index.php?conversationid=11931#c407992 but that expects the code in mod/form-editor. This was the best compromise I could find. It also expects filename to match folder name. All classes in the yui folder match this. So I went with it. Can't run codechecker. It might be because it's inside a yui folder but I think it's because it's inside lib. Hence the comments from Tim. Shame. I've also merged andrews small changes from https://github.com/andrewnicols/moodle/commit/936775585708456e6fb965fbf0727e9021ecc3d1 . Not all were correct. tinyMCE.dom isn't recognised and ed.getContainer needed (). Overall it's a good improvement. More OO. Thanks for the help. Hopefully this is ready for integration now.
          Hide
          Colin Chambers added a comment -

          Tim found that codechecker ignores the form folder. Fixed this by commenting out the following code in lib/thirdpartylibs.xml Just for testing obviously. No errors found.

          <!-- library>
          <location>form</location>
          <name>MoodleForms</name>
          <license>GPL</license>
          <version></version>
          <licenseversion>2.0+</licenseversion>
          </library-->

          Show
          Colin Chambers added a comment - Tim found that codechecker ignores the form folder. Fixed this by commenting out the following code in lib/thirdpartylibs.xml Just for testing obviously. No errors found. <!-- library> <location>form</location> <name>MoodleForms</name> <license>GPL</license> <version></version> <licenseversion>2.0+</licenseversion> </library-->
          Hide
          Andrew Nicols added a comment - - edited

          Tim's going to peer review, but I've just had a quick look at the code.

          I think that everything looks fine now, though you need to rename your init function initializer. Y.Base calls it's own init function to instantiate the module using it's initializer function. To get the correct lifecycle instantiation I think it should be initializer().

          Looking forward to this landing in core,

          Andrew

          Show
          Andrew Nicols added a comment - - edited Tim's going to peer review, but I've just had a quick look at the code. I think that everything looks fine now, though you need to rename your init function initializer. Y.Base calls it's own init function to instantiate the module using it's initializer function. To get the correct lifecycle instantiation I think it should be initializer(). Looking forward to this landing in core, Andrew
          Hide
          Andrew Nicols added a comment -

          Oh, and please pass it through jshint using the config found at https://raw.github.com/yui/yui-lint/master/jshint.json

          Errors found in the js:

          2194 moodle:(no branch)> jshint lib/form/yui/editorcollapse/editorcollapse.js 
          lib/form/yui/editorcollapse/editorcollapse.js: line 29, col 21, Too many var statements.
          lib/form/yui/editorcollapse/editorcollapse.js: line 44, col 18, Bad for in variable 'editor'.
          lib/form/yui/editorcollapse/editorcollapse.js: line 100, col 19, Unsafe character.
          lib/form/yui/editorcollapse/editorcollapse.js: line 170, col 6, Missing semicolon.
          
          4 errors
          
          Show
          Andrew Nicols added a comment - Oh, and please pass it through jshint using the config found at https://raw.github.com/yui/yui-lint/master/jshint.json Errors found in the js: 2194 moodle:(no branch)> jshint lib/form/yui/editorcollapse/editorcollapse.js lib/form/yui/editorcollapse/editorcollapse.js: line 29, col 21, Too many var statements. lib/form/yui/editorcollapse/editorcollapse.js: line 44, col 18, Bad for in variable 'editor'. lib/form/yui/editorcollapse/editorcollapse.js: line 100, col 19, Unsafe character. lib/form/yui/editorcollapse/editorcollapse.js: line 170, col 6, Missing semicolon. 4 errors
          Hide
          Tim Hunt added a comment -

          In additiont to Andrew's comment, I spotted two more trivial things:

          1. In https://github.com/colchambers/moodle/compare/master...MDL-32750#L3R668, 'array' should really start with a lower-case A.

          2. It would be good to rebase this onto the latest moodle/master, it is not completely up-to-date.

          I would have submitted it for integration despite these, but Andrew's comment sounds more significant.

          Show
          Tim Hunt added a comment - In additiont to Andrew's comment, I spotted two more trivial things: 1. In https://github.com/colchambers/moodle/compare/master...MDL-32750#L3R668 , 'array' should really start with a lower-case A. 2. It would be good to rebase this onto the latest moodle/master, it is not completely up-to-date. I would have submitted it for integration despite these, but Andrew's comment sounds more significant.
          Hide
          Petr Škoda added a comment -

          Hello, please put all the TinyMCE related code only into the editor plugin including the base css. I think that only "'collapsible'=>0, 'collapsed' => 0" should be included in the editor forms element.

          Show
          Petr Škoda added a comment - Hello, please put all the TinyMCE related code only into the editor plugin including the base css. I think that only "'collapsible'=>0, 'collapsed' => 0" should be included in the editor forms element.
          Hide
          Tim Hunt added a comment -

          Petr, could you not have said that several weeks ago?

          Show
          Tim Hunt added a comment - Petr, could you not have said that several weeks ago?
          Hide
          Tim Hunt added a comment -

          OK, so having clarified what Petr means:

          1. Move lib/form/yui/editorcollapse/editorcollapse.js -> lib/editor/tinymce/yui/editorcollapse/editorcollapse.js

          2. Move the new bits of CSS from theme/base/style/core.css to lib/editor/tinymce/styles.css.

          3. Move the new initialise_js() function to lib/editor/tinymce/lib.php, and perhaps rename it to initialise_collapse_js().

          4. Move the call to that method to the use_editor method in lib/editor/tinymce/lib.php.

          Show
          Tim Hunt added a comment - OK, so having clarified what Petr means: 1. Move lib/form/yui/editorcollapse/editorcollapse.js -> lib/editor/tinymce/yui/editorcollapse/editorcollapse.js 2. Move the new bits of CSS from theme/base/style/core.css to lib/editor/tinymce/styles.css. 3. Move the new initialise_js() function to lib/editor/tinymce/lib.php, and perhaps rename it to initialise_collapse_js(). 4. Move the call to that method to the use_editor method in lib/editor/tinymce/lib.php.
          Hide
          Petr Škoda added a comment -

          Thanks Tim, that looks like a good plan with minimal required changes.

          Show
          Petr Škoda added a comment - Thanks Tim, that looks like a good plan with minimal required changes.
          Hide
          Andrew Nicols added a comment -

          Most of the issues brought up by jshint aren't massively significant, but I'd really like to ensure that any new JavaScript going into Moodle does not introduce new linting issues to help with future maintainability. The non-ASCII character has the potential to be more severe though depending on how different browsers handle that kind of thing.

          Also, the missing semicolon is not the end of the world in JS, but best practice suggests that it be added because browsers could theoretically handle it differently in different cases.

          Show
          Andrew Nicols added a comment - Most of the issues brought up by jshint aren't massively significant, but I'd really like to ensure that any new JavaScript going into Moodle does not introduce new linting issues to help with future maintainability. The non-ASCII character has the potential to be more severe though depending on how different browsers handle that kind of thing. Also, the missing semicolon is not the end of the world in JS, but best practice suggests that it be added because browsers could theoretically handle it differently in different cases.
          Hide
          Colin Chambers added a comment -

          Thanks for the comments guys. Rebased on latest master. Addressed Tims and Petrs comments. Now the code is in /lib/editor I've called the class collapse and refactored accordingly. Hope this is clearer.

          Pushed the changes. Now I'll look at jshint

          Show
          Colin Chambers added a comment - Thanks for the comments guys. Rebased on latest master. Addressed Tims and Petrs comments. Now the code is in /lib/editor I've called the class collapse and refactored accordingly. Hope this is clearer. Pushed the changes. Now I'll look at jshint
          Hide
          Colin Chambers added a comment -

          Installed jshint. Fixed errors. Pushed latest. Just waiting for this weeks update to master then rebase on that.

          Thanks for your help on jshint andrew

          Show
          Colin Chambers added a comment - Installed jshint. Fixed errors. Pushed latest. Just waiting for this weeks update to master then rebase on that. Thanks for your help on jshint andrew
          Hide
          Colin Chambers added a comment -

          Just logging here how to install and use jshint. In case I don't get round to adding to relevant forum conversation.

          These instructions are for Windows 7 64 bit.

          install node js
          go to http://nodejs.org/ click install. When installed windows -> start -> programs -> node.js to start command line

          install jshint
          with an open node.js command line from above type npm install jshint -g

          Check code
          navigate in command line to the root directory of your moodle install.

          Call jshint with the config options and path to the file to check.

          Andrew has a jshint config file that sets the desired moodle code standards for jshint to use

          I first used the line below and got the error "unexpected token".
          Wrapped configs in double quotes to fix it e.g. "evil":false (Yep, jshint can be configured to be evil)
          Now you're ready. Check your code by typing...
          jshint --config pathtoandrewsconfigfile pathtofiletocheck e.g.git\lib\editor\tinymce\yui\collapse\collapse.js

          Show
          Colin Chambers added a comment - Just logging here how to install and use jshint. In case I don't get round to adding to relevant forum conversation. These instructions are for Windows 7 64 bit. install node js go to http://nodejs.org/ click install. When installed windows -> start -> programs -> node.js to start command line install jshint with an open node.js command line from above type npm install jshint -g Check code navigate in command line to the root directory of your moodle install. Call jshint with the config options and path to the file to check. Andrew has a jshint config file that sets the desired moodle code standards for jshint to use I first used the line below and got the error "unexpected token". Wrapped configs in double quotes to fix it e.g. "evil":false (Yep, jshint can be configured to be evil ) Now you're ready. Check your code by typing... jshint --config pathtoandrewsconfigfile pathtofiletocheck e.g.git\lib\editor\tinymce\yui\collapse\collapse.js
          Hide
          Colin Chambers added a comment -

          Rebased on latest master

          Show
          Colin Chambers added a comment - Rebased on latest master
          Hide
          Tim Hunt added a comment -

          Yay! submitting for integration.

          Show
          Tim Hunt added a comment - Yay! submitting for integration.
          Hide
          Sam Hemelryk added a comment -

          Wow, what an awesome little improvement!

          I've integrated this now. A couple of clean ups during integration regarding our coding style but definitely excellent work thanks Colin + Andrew + Tim.

          Many thanks
          Sam

          Show
          Sam Hemelryk added a comment - Wow, what an awesome little improvement! I've integrated this now. A couple of clean ups during integration regarding our coding style but definitely excellent work thanks Colin + Andrew + Tim. Many thanks Sam
          Hide
          David Monllaó added a comment -

          Attaching Linux + Chrome image of how collapsed editors looks on "add multiple choice question" page

          Show
          David Monllaó added a comment - Attaching Linux + Chrome image of how collapsed editors looks on "add multiple choice question" page
          Hide
          David Monllaó added a comment -

          It passes; I've deeply admired how it looks in Linux + Chrome and Windows 7 + IE9

          I've added a screenshot of Linux + Chrome, the sizes of the editors are not always the same as shown on the image, only from the 3rd choice onwards is the same

          Show
          David Monllaó added a comment - It passes; I've deeply admired how it looks in Linux + Chrome and Windows 7 + IE9 I've added a screenshot of Linux + Chrome, the sizes of the editors are not always the same as shown on the image, only from the 3rd choice onwards is the same
          Hide
          Eloy Lafuente (stronk7) added a comment -

          A brilliant future is awaiting us out there, better with your code. Let's look towards the future together, this is now closed.

          (and won't be revisiting it unless some regression is found)

          Thanks and ciao

          Show
          Eloy Lafuente (stronk7) added a comment - A brilliant future is awaiting us out there, better with your code. Let's look towards the future together, this is now closed. (and won't be revisiting it unless some regression is found) Thanks and ciao
          Hide
          Mary Evans added a comment - - edited

          After updating Moodle(master) today (30mins ago) I am getting this warning:
          Could this be something related to MDL-32750 since it is the only issue I can find while searching for issues.

          Notice: Undefined property: stdClass::$customtoolbar in C:\wamp\www\moodle25\lib\editor\tinymce\lib.php on line 176
          Call Stack
          #	Time	Memory	Function	Location
          1	0.0014	699424	{main}( )	..\upgradesettings.php:0
          2	11.6453	91117816	admin_output_new_settings_by_page( )	..\upgradesettings.php:25
          3	12.1558	96239640	admin_output_new_settings_by_page( )	..\adminlib.php:6564
          4	12.1558	96241912	admin_output_new_settings_by_page( )	..\adminlib.php:6564
          5	12.1560	96245464	admin_output_new_settings_by_page( )	..\adminlib.php:6564
          6	12.1607	96247024	admin_setting_confightmleditor->output_html( )	..\adminlib.php:6589
          7	12.1615	96247880	tinymce_texteditor->use_editor( )	..\adminlib.php:1966
          8	12.1616	96250440	tinymce_texteditor->get_init_params( )	..\lib.php:105
          
          Show
          Mary Evans added a comment - - edited After updating Moodle(master) today (30mins ago) I am getting this warning: Could this be something related to MDL-32750 since it is the only issue I can find while searching for issues. Notice: Undefined property: stdClass::$customtoolbar in C:\wamp\www\moodle25\lib\editor\tinymce\lib.php on line 176 Call Stack # Time Memory Function Location 1 0.0014 699424 {main}( ) ..\upgradesettings.php:0 2 11.6453 91117816 admin_output_new_settings_by_page( ) ..\upgradesettings.php:25 3 12.1558 96239640 admin_output_new_settings_by_page( ) ..\adminlib.php:6564 4 12.1558 96241912 admin_output_new_settings_by_page( ) ..\adminlib.php:6564 5 12.1560 96245464 admin_output_new_settings_by_page( ) ..\adminlib.php:6564 6 12.1607 96247024 admin_setting_confightmleditor->output_html( ) ..\adminlib.php:6589 7 12.1615 96247880 tinymce_texteditor->use_editor( ) ..\adminlib.php:1966 8 12.1616 96250440 tinymce_texteditor->get_init_params( ) ..\lib.php:105
          Hide
          Tim Hunt added a comment -

          Mary, this was integrated months ago, so it is probably not this.

          Did you remember to go to admin notifications to complete the upgrade?

          Show
          Tim Hunt added a comment - Mary, this was integrated months ago, so it is probably not this. Did you remember to go to admin notifications to complete the upgrade?
          Hide
          Mary Cooch added a comment -

          Removing docs_required label as this is now documented here http://docs.moodle.org/25/en/Building_Quiz

          Show
          Mary Cooch added a comment - Removing docs_required label as this is now documented here http://docs.moodle.org/25/en/Building_Quiz
          Hide
          Anthony Borrow added a comment -

          I'm running the latest version from integration but for some reason the Show editing tools option is not showing on localhost. It does run on another test server. The only difference is that my localhost is now running PHP 5.4.9. I tested with both Chrome and Firefox and received the same results. When inspecting, I noticed that the class toggle_editor_toolbar does not appear on the localhost version. I'm not overly concerned about this but was curious what might be causing the difference in behavior and if for some reason it is related to PHP 5.4.9 then when can create another bug for that. Was this tested on PHP 5.4? Peace - Anthony

          Show
          Anthony Borrow added a comment - I'm running the latest version from integration but for some reason the Show editing tools option is not showing on localhost. It does run on another test server. The only difference is that my localhost is now running PHP 5.4.9. I tested with both Chrome and Firefox and received the same results. When inspecting, I noticed that the class toggle_editor_toolbar does not appear on the localhost version. I'm not overly concerned about this but was curious what might be causing the difference in behavior and if for some reason it is related to PHP 5.4.9 then when can create another bug for that. Was this tested on PHP 5.4? Peace - Anthony
          Hide
          Tim Hunt added a comment -

          Are you sure that the JS is not being cached somewhere? That strikes me as the most likely source of the breakage.

          Show
          Tim Hunt added a comment - Are you sure that the JS is not being cached somewhere? That strikes me as the most likely source of the breakage.
          Hide
          Anthony Borrow added a comment -

          I had already restarted apache (just in case it was getting some code from APC. And I just tried again and began with clearing the browser cache, logging into the site, purging all caches, and then checking and still the same behavior. If I pull up a similar page on demo.catholicfires.org which is a test site I use then I see the option to show the editor tools; however, on localhost I do not. Both of these are Ubuntu servers with very similar setups. The only significant difference is that my localhost is now running PHP 5.4.9 and the demo.catholicfires.org site is running 5.3.10. I wouldn't worry about it unless someone else can replicate it. And it cannot be the browser or some extension interfering because I see the behavior both with Firefox and Chromium where the demo site shows the option and the localhost does not. It is curious but I'm not going to worry about. I just wanted to mention my experience in case someone else runs across it. Peace - Anthony

          Show
          Anthony Borrow added a comment - I had already restarted apache (just in case it was getting some code from APC. And I just tried again and began with clearing the browser cache, logging into the site, purging all caches, and then checking and still the same behavior. If I pull up a similar page on demo.catholicfires.org which is a test site I use then I see the option to show the editor tools; however, on localhost I do not. Both of these are Ubuntu servers with very similar setups. The only significant difference is that my localhost is now running PHP 5.4.9 and the demo.catholicfires.org site is running 5.3.10. I wouldn't worry about it unless someone else can replicate it. And it cannot be the browser or some extension interfering because I see the behavior both with Firefox and Chromium where the demo site shows the option and the localhost does not. It is curious but I'm not going to worry about. I just wanted to mention my experience in case someone else runs across it. Peace - Anthony
          Hide
          Tim Hunt added a comment -

          Well, you need to start using Firebug:

          1. Is all the same JS being loaded from the two systems?
          2. Is the contents of the JS files the same?
          3. If so, why is it behaving differently in the two places?

          Show
          Tim Hunt added a comment - Well, you need to start using Firebug: 1. Is all the same JS being loaded from the two systems? 2. Is the contents of the JS files the same? 3. If so, why is it behaving differently in the two places?
          Hide
          Anthony Borrow added a comment -

          Tim - I re-enabled Firebug and checked with Firefox. The same JS was not being loaded. It was acting as if TinyMCE were disabled as a text editor. I had done that previously on the site and then re-enabled it. I'll need to go into the code and see exactly how the code is determining if TinyMCE editor is enabled. I did check the database in mdl_config and it is listed as the first text editor. On the other site where it was working I disabled TinyMCE and the two sites behaved the same. I re-enabled TinyMCE on the demo site and it began working fine. For kicks, I did a fresh install (moved config.php and renamed the database). On the fresh install, the show editing tools is showing. I'm curious to track down why it is not working but it may be hard or impossible to reproduce. At least we know that there is not an issue with PHP 5.4.9. Peace - Anthony

          Show
          Anthony Borrow added a comment - Tim - I re-enabled Firebug and checked with Firefox. The same JS was not being loaded. It was acting as if TinyMCE were disabled as a text editor. I had done that previously on the site and then re-enabled it. I'll need to go into the code and see exactly how the code is determining if TinyMCE editor is enabled. I did check the database in mdl_config and it is listed as the first text editor. On the other site where it was working I disabled TinyMCE and the two sites behaved the same. I re-enabled TinyMCE on the demo site and it began working fine. For kicks, I did a fresh install (moved config.php and renamed the database). On the fresh install, the show editing tools is showing. I'm curious to track down why it is not working but it may be hard or impossible to reproduce. At least we know that there is not an issue with PHP 5.4.9. Peace - Anthony

            People

            • Votes:
              4 Vote for this issue
              Watchers:
              14 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: