gsoc:2009:phdoe

This is an old revision of the document!


PhD O.E. - Online editor for the PHP Manual

Details

Abstract

Currently, the documentation work is synchronized by cvs. But still, there are potential conflicts due to redundant work. Besides, it's not that easy to share the works or even pipelining the works in a distributed environment. Therefore, a centralized environment is introduced.

The editor is still under development and the source can be found by http://svn.php.net/viewvc/web/doc-editor/trunk/

To checkout: svn co http://svn.php.net/repository/web/doc-editor/trunk doc-editor

Timeline

The Planned one...

  • Community Bonding Period - Study current PhD OE architecture. Confirm refactoring procedures and exact deliverables with mentor.
  • May 23 ~ June 20 [around 4 man week] - Refactor & Test main.js
  • June 20 ~ June 27 [around 1 man week] - Merge Refactored code with trunk + Testing + Documentation
  • June 27 ~ July 4 [around 1 man week] - Compile interim report
  • July 4 ~ July 18 [around 3 man week] - Refactor & Test class.php
  • July 18 ~ July 25 [around 1 man week] - Merge Refactored code with trunk + Testing + Documentation
  • July 25 ~ August 15 [around 3 man week] - Implement mod_rewrite, reflect changes in php and js + Testing + Documentation
  • August 15 onwards - Compiling final report

The Executing one...

UI Structure

The factored Doc-Editor ui structure as follow (in JSON with ExtJS component).

ui = Ext.Viewport {
    layout : 'border',
    items  : [
        { // logo
            region : 'north'
        }, {
            layout : 'accordion',
            region : 'west',
            tbar   : [ new ui.component.MainMenu() ]
            items  : [
                ui.component.StaleFileGrid.getInstance(),
                ui.component.ErrorFileGrid.getInstance(),
                ui.component.PendingReviewGrid.getInstance(),
                ui.component.NotInENGrid.getInstance(),
                ui.component.RepositoryTree.getInstance(),
                ui.component.PendingCommitGrid.getInstance(),
                ui.component.PendingPatchGrid.getInstance()
            ]
        }, { // main-panel
            id     : 'main-panel',
            region : 'center',
            xtype  : 'tabpanel',
            items  : [
                { // Home tab
                    xtype : 'panel',
                    items : [
                        ui.component.SummaryGrid.getInstance(),     // show if Non-EN user
                        ui.component.TranslatorGrid.getInstance(),  // show if Non-EN user
                        ui.component.LocalMailGrid.getInstance(),
                        ui.component.BugsGrid.getInstance(),        // show if Non-EN user
                        ui.component.TranslationGraph.getInstance() // show if Non-EN user
                    ]
                }
            ]
        }
    ]
}

Brainstorming idea

This section list out ideas for future development.

Further re-structuring the entire thing.

  • Create a core module /core, replacing the /php and /js. The core module basically include glues.
  • The core will look for module from /module. /module contains the actual module like /module/patch. In each of the module folder... there will be something like /module/patch/{view.js, model.sql, controller.php}.
  • Core will basically glue (concat) controller.php in /module/{all}/ for the doc-editor backend, and also glue view.js for the ui
  • Installer will become a script that glues the model.sql in /module/{all}/
gsoc/2009/phdoe.1247804684.txt.gz · Last modified: 2017/09/22 13:28 (external edit)