Difference between revisions of "SAC:Setup OCS Custom Additions"

From OSGeo
Jump to navigation Jump to search
m (→‎Starting Template: edit locale files)
 
(8 intermediate revisions by the same user not shown)
Line 7: Line 7:
 
-------
 
-------
  
== Starting Template ==
+
== Cloning a Core Class and Templates ==
To keep it as simple as possible I will take the existing '''Accommodations''' functions, make a copy and modify them from there.  (At time of writing this was only available in CVS for upcoming OCS 2.2 release)  My new functions will be for presenting a link to '''Transportation''' items in the sidebar menu.
+
To keep it as simple as possible I will take the existing '''Accommodations''' functions, make a copy and modify them from there.  (At time of writing this was only available in CVS for upcoming OCS 2.2 release)  My new functions will be for presenting a link to '''Transportation''' items alongside Accommodations in the Conference Information section of the site (both publicly and for managers to update).
  
 
  cd OCSROOT/classes/manager/form
 
  cd OCSROOT/classes/manager/form
Line 30: Line 30:
 
  cd OCSROOT/templates/schedConf
 
  cd OCSROOT/templates/schedConf
 
  cp accommodation.tpl transportation.tpl
 
  cp accommodation.tpl transportation.tpl
  sed -i .bak 's/Accommodation/Transportation/g' accommodation.tpl
+
  sed -i .bak 's/Accommodation/Transportation/g' transportation.tpl
  sed -i .bak 's/accommodation/transportation/g' accommodation.tpl
+
  sed -i .bak 's/accommodation/transportation/g' transportation.tpl
  
Copy accommodation settings and add entries in these files:
+
Update locale.xml file to populate UI:
 
<pre>
 
<pre>
 
  locale/en_US/locale.xml:
 
  locale/en_US/locale.xml:
+
        <message key="schedConf.accommodation">Accommodation</message>
        <message key="schedConf.accommodation">Accommodation</message>
 
 
         <message key="schedConf.accommodation.title">{$schedConfAbbrev} Accommodation</message>
 
         <message key="schedConf.accommodation.title">{$schedConfAbbrev} Accommodation</message>
 
         <!-- Accommodation settings -->  ---  Whole section
 
         <!-- Accommodation settings -->  ---  Whole section
Line 43: Line 42:
 
  </pre>
 
  </pre>
  
 +
Update ManagerHandler so options appear:
 +
<pre>
 +
pages/manager/ManagerHandler.inc.php:
 +
        //
 +
        // Accommodation
 +
        //
 +
        ... entire section (2 functions)
 +
ADDED:
 +
        //     
 +
        // Transportation
 +
        //
 +
       
 +
        function transportation() {
 +
                import('pages.manager.ManagerTransportationHandler');
 +
                ManagerTransportationHandler::transportation();
 +
        }     
 +
               
 +
        function saveTransportationSettings() {
 +
                import('pages.manager.ManagerTransportationHandler');
 +
                ManagerTransportationHandler::saveTransportationSettings();
 +
        }
  
  pages/manager/ManagerHandler.inc.php
+
</pre>
 +
 
 +
Add section to:
 +
<pre>
 +
  /pages/schedConf/SchedConfHandler.inc.php:
 +
        /**
 +
        * Display conference transportation page
 +
        */
 +
        function transportation() {
 +
                list($conference, $schedConf) = SchedConfHandler::validate(true, true);
 +
 
 +
                $templateMgr = &TemplateManager::getManager();
 +
                $templateMgr->assign('pageHierarchy', array(
 +
                        array(Request::url(null, 'index', 'index'), $conference->getConferenceTitle(), true),
 +
                        array(Request::url(null, null, 'index'), $schedConf->getSchedConfTitle(), true)));
 +
                SchedConfHandler::setupSchedConfTemplate($conference,$schedConf);
 +
               
 +
                $templateMgr->assign('transportationDescription', $schedConf->getLocalizedSetting('transportationDescription'));
 +
                $templateMgr->assign('transportationFiles', $schedConf->getLocalizedSetting('transportationFiles'));
 +
 
 +
                $templateMgr->assign('helpTopicId', 'schedConf.transportation');
 +
                $templateMgr->display('schedConf/transportation.tpl');
 +
        }
 +
</pre>
 +
 
 +
Finally, add it so that the new Transportation link shows up on the main manager page, by copying the accommodation line and modifying it:
 +
<pre>
 +
templates/manager/index.tpl:
 +
                <li>&#187; <a href="{url schedConf=$schedConf->getPath() page="manager" op="accommodation"}">{translate key="manager.accommodation"}</a></li>
 +
                <li>&#187; <a href="{url schedConf=$schedConf->getPath() page="manager" op="transportation"}">{translate key="manager.transportation"}</a></li>
 +
</pre>
 +
 
 +
Okay, so there is still one more step, do similar to above, but so this shows up on the public page too.  I just threw in a dash between accommodation and transportation links since they are related:
 +
<pre>
 +
/templates/schedConf/index.tpl:
 +
  <li>&#187; <a href="{url page="schedConf" op="accommodation"}">{translate key="schedConf.accommodation"}</a> &ndash;
 +
        <a href="{url page="schedConf" op="transportation"}">{translate key="schedConf.transportation"}</a></li>
 +
</pre>
  
 +
== Cloning and Customising a Simple Block for the sidebar ==
 +
Blocks are the sections often used in the sidebar menus - i.e. showing you login information or a navigation menu or search box.  In this learning exercise I will clone an existing simple block (plugins/blocks/developedBy) and make one that shows the latest announcement.  I expect to find that I'll have to look at a different more complex example to learn how to get the data from the db... we'll see
 +
... underway...
  
 
[[Category:Infrastructure]]
 
[[Category:Infrastructure]]
 
[[Category:OCS]]
 
[[Category:OCS]]

Latest revision as of 00:00, 14 February 2008

For capturing some notes about trying to create a custom new set of forms for use in OCS Open Conference System. These tests are done on me local PC but will be merged into OSGeo code if/when ready.

These improvements attempt to address some of the system needs discussed in FOSS4G2008 Committee Issues

This is also a journal chronicling the adaptations.


Cloning a Core Class and Templates

To keep it as simple as possible I will take the existing Accommodations functions, make a copy and modify them from there. (At time of writing this was only available in CVS for upcoming OCS 2.2 release) My new functions will be for presenting a link to Transportation items alongside Accommodations in the Conference Information section of the site (both publicly and for managers to update).

cd OCSROOT/classes/manager/form
cp AccommodationSettingsForm.inc.php TransportationSettingsForm.inc.php

Replace all references to Accommodations and accommodations with Transportation:

sed -i .bak 's/Accommodation/Transportation/g' TransportationSettingsForm.inc.php
sed -i .bak 's/accommodation/transportation/g' TransportationSettingsForm.inc.php
cd OCSROOT/pages/manager
cp ManagerAccommodationHandler.inc.php ManagerTransportationHandler.inc.php
sed -i .bak 's/Accommodation/Transportation/g' ManagerTransportationHandler.inc.php
sed -i .bak 's/accommodation/transportation/g' ManagerTransportationHandler.inc.php
cd OCSROOT/templates/manager
cp accommodationSettings.tpl transportationSettings.tpl
sed -i .bak 's/Accommodation/Transportation/g' transportationSettings.tpl
sed -i .bak 's/accommodation/transportation/g' transportationSettings.tpl
cd OCSROOT/templates/schedConf
cp accommodation.tpl transportation.tpl
sed -i .bak 's/Accommodation/Transportation/g' transportation.tpl
sed -i .bak 's/accommodation/transportation/g' transportation.tpl

Update locale.xml file to populate UI:

 locale/en_US/locale.xml:
         <message key="schedConf.accommodation">Accommodation</message>
        <message key="schedConf.accommodation.title">{$schedConfAbbrev} Accommodation</message>
        <!-- Accommodation settings -->  ---  Whole section
        <message key="manager.accommodation">Accommodation</message> 
 

Update ManagerHandler so options appear:

 pages/manager/ManagerHandler.inc.php:
        //
        // Accommodation
        //
        ... entire section (2 functions)
ADDED:
        //      
        // Transportation
        //
        
        function transportation() {
                import('pages.manager.ManagerTransportationHandler');
                ManagerTransportationHandler::transportation();
        }       
                
        function saveTransportationSettings() {
                import('pages.manager.ManagerTransportationHandler');
                ManagerTransportationHandler::saveTransportationSettings();
        } 

Add section to:

 /pages/schedConf/SchedConfHandler.inc.php:
         /**
         * Display conference transportation page
         */
        function transportation() {
                list($conference, $schedConf) = SchedConfHandler::validate(true, true);

                $templateMgr = &TemplateManager::getManager();
                $templateMgr->assign('pageHierarchy', array(
                        array(Request::url(null, 'index', 'index'), $conference->getConferenceTitle(), true),
                        array(Request::url(null, null, 'index'), $schedConf->getSchedConfTitle(), true)));
                SchedConfHandler::setupSchedConfTemplate($conference,$schedConf);
                
                $templateMgr->assign('transportationDescription', $schedConf->getLocalizedSetting('transportationDescription'));
                $templateMgr->assign('transportationFiles', $schedConf->getLocalizedSetting('transportationFiles'));

                $templateMgr->assign('helpTopicId', 'schedConf.transportation');
                $templateMgr->display('schedConf/transportation.tpl');
        }

Finally, add it so that the new Transportation link shows up on the main manager page, by copying the accommodation line and modifying it:

 templates/manager/index.tpl:
                <li>» <a href="{url schedConf=$schedConf->getPath() page="manager" op="accommodation"}">{translate key="manager.accommodation"}</a></li>
                <li>» <a href="{url schedConf=$schedConf->getPath() page="manager" op="transportation"}">{translate key="manager.transportation"}</a></li>

Okay, so there is still one more step, do similar to above, but so this shows up on the public page too. I just threw in a dash between accommodation and transportation links since they are related:

 /templates/schedConf/index.tpl:
  <li>» <a href="{url page="schedConf" op="accommodation"}">{translate key="schedConf.accommodation"}</a> – 
        <a href="{url page="schedConf" op="transportation"}">{translate key="schedConf.transportation"}</a></li>

Cloning and Customising a Simple Block for the sidebar

Blocks are the sections often used in the sidebar menus - i.e. showing you login information or a navigation menu or search box. In this learning exercise I will clone an existing simple block (plugins/blocks/developedBy) and make one that shows the latest announcement. I expect to find that I'll have to look at a different more complex example to learn how to get the data from the db... we'll see ... underway...