Yes, I documented this heavy what we need:

http://aikiframework.org/wiki/Aiki_Robust_Update_System

Essentially, we need to compare a current installations aiki version
number to the one being updated to, and then have a function for each
version number to run commands to bring a system up to date from where
it was at...

The ccHost code on the blueprint is where I learned this method from....

So, think, your aiki is at 0.8.2.750

And, yo are installing: 0.8.9.900

Well, would make an Update class that is run upon aiki load and check
to see if there are extended classes like Update_0_8_2_751 () all the
way up to Update_0_8_9_900 which would essentially be a class with an
update function or constructor that just has commands for bringing a
previous installation up to the latest.

That would require anyone who is changing the system to add some
commands to an updated function.

Make sense? I'm not sure how wordpress or mediawiki handles this.

I think this is a good way to handle this issue, so we can use Aiki to
actually update tables, widgets, etc...

Also, could have a screen that interrupts an admin when the version
mismatch is detected and try to run all these updates.

If error, should scream loudly...

Jon

On Tue, Jun 14, 2011 at 2:57 PM, Christopher Adams <ch...@raysend.com> wrote:
> This is a nice change and all. I just want to raise the matter that
> this makes old aiki_forms tables incompatible with the new code.
>
> If you try to run the latest Aiki revision using an old aiki_forms
> table, you will encounter the following error output at the top of
> every widget:
>
> Notice: Undefined property: stdClass::$custome_header in
> /var/www/openfontlibrary.org/public/openfontlibrary/aikiframework/system/libraries/forms.php
> on line 364
>
> It might be possible to use an old aiki_forms database but replace
> rows id = 1 and id = 20 with the same rows from the new aiki_forms
> table.
>
> If we are going to be changing the database like this we really should
> do it via a migration file so that old sites have an easier upgrade
> path to the newer codebase.
>
> On Fri, Jun 10, 2011 at 1:39 PM,  <nore...@launchpad.net> wrote:
>> ------------------------------------------------------------
>> revno: 818
>> committer: Steven Garcia <steven@satellite>
>> branch nick: aikiframework
>> timestamp: Fri 2011-06-10 10:35:42 -0700
>> message:
>>  Append the aiki-site-root directory to the PHP include path while 
>> preserving existing entries. Replaced 46 occurrences of 'custome' with 
>> 'custom' accross 9 files of types including *.js, *.php, *.sql using file 
>> match pattern *. Bumped aiki fix-version number.
>> modified:
>>  src/aiki.php
>>  src/assets/apps/admin/control_panel.js
>>  src/configs/aiki-defs.inc
>>  src/index.php
>>  src/system/libraries/forms.php
>>  src/system/libraries/wiki.php
>>  src/system/sql/CreateTables.sql
>>  src/system/sql/InsertDefaults.sql
>>  src/system/sql/InsertVariable-in.sql
>>  src/system/widgets.php
>>
>>
>> --
>> lp:aikiframework
>> https://code.launchpad.net/~aikiframework-devel/aikiframework/trunk
>>
>> Your team Aiki Framework Developers is subscribed to branch lp:aikiframework.
>> To unsubscribe from this branch go to 
>> https://code.launchpad.net/~aikiframework-devel/aikiframework/trunk/+edit-subscription
>>
>> === modified file 'src/aiki.php'
>> --- src/aiki.php        2011-06-10 05:26:25 +0000
>> +++ src/aiki.php        2011-06-10 17:35:42 +0000
>> @@ -34,26 +34,31 @@
>>  */
>>  $system_folder = realpath(dirname(__FILE__));
>>
>> +// append to the include path while preserving existing entries
>> +set_include_path(
>> +    get_include_path() .
>> +    PATH_SEPARATOR .
>> +    "$system_folder" .
>> +    PATH_SEPARATOR .
>> +    "$system_folder/system");
>> +
>>  /**
>>  * @todo these should be set in some class, and are scoped wrong
>>  */
>>  if (isset($_GET['nogui'])){ $nogui = true; }
>>  if (isset($_GET['noheaders'])){ $noheaders = true; }
>> -/**
>> - * @todo custome is spelled wrong, need to track down and remove
>> - */
>> -if (isset($_GET['custome_output'])){$custome_output = true;    $noheaders = 
>> true; }
>> +if (isset($_GET['custom_output'])){$custom_output = true;      $noheaders = 
>> true; }
>>
>>  /**
>>  * @see aiki-defs.php
>>  */
>> -if (file_exists("$system_folder/configs/aiki-defs.php"))
>> -{
>> +if (file_exists("configs/aiki-defs.php")) {
>>        /**
>>         * @see config.php
>>         */
>> -       require_once("$system_folder/configs/config.php");
>> -}else{
>> +       require_once("configs/config.php");
>> +}
>> +else {
>>        /**
>>         * Aiki Framework Version
>>         * The number left or west of the dots indicates a MAJOR production 
>> type
>> @@ -66,7 +71,7 @@
>>         * When the MAJOR number is zero, this indicates an alpha or beta type
>>      * release. Each number can, but should probably not exceed 99
>>         */
>> -       define('AIKI_VERSION','0.8.8');
>> +       define('AIKI_VERSION','0.8.9');
>>  }
>>
>>  /**
>> @@ -81,16 +86,17 @@
>>  if (!defined('ENABLE_RUNTIME_INSTALLER') or ENABLE_RUNTIME_INSTALLER == 
>> TRUE)
>>  {
>>        /* use run-time installer logic */
>> -       if (file_exists("$system_folder/config.php")){
>> +       if (file_exists("config.php")) {
>>                /**
>>                 * @see config.php
>>                 */
>> -               require_once("$system_folder/config.php");
>> -       }else{
>> +               require_once("config.php");
>> +       }
>> +       else {
>>                /**
>>                 * @see installer.php
>>                 */
>> -               require("$system_folder/system/libraries/installer.php");
>> +               require("libraries/installer.php");
>>                die();
>>        }
>>  }
>> @@ -100,12 +106,12 @@
>>  *
>>  * @see index.php
>>  */
>> -require_once("$system_folder/system/database/index.php");
>> +require_once("database/index.php");
>>
>>  /**
>>  * @see core.php
>>  */
>> -require_once ("$system_folder/system/core.php");
>> +require_once ("core.php");
>>
>>  /**
>>  * Global creation of the aiki instance.
>>
>> === modified file 'src/assets/apps/admin/control_panel.js'
>> --- src/assets/apps/admin/control_panel.js      2011-06-06 05:34:28 +0000
>> +++ src/assets/apps/admin/control_panel.js      2011-06-10 17:35:42 +0000
>> @@ -208,8 +208,8 @@
>>        $('.pagetitle').hide();
>>        $('.remove_container').hide();
>>        $('.widget_cache_timeout').hide();
>> -       $('.custome_output').hide();
>> -       $('.custome_header').hide();
>> +       $('.custom_output').hide();
>> +       $('.custom_header').hide();
>>        $('.is_father').hide();
>>        $('.father_widget').hide();
>>        $('.display_urls').hide();
>> @@ -225,8 +225,8 @@
>>        $('.pagetitle').show();
>>        $('.remove_container').show();
>>        $('.widget_cache_timeout').show();
>> -       $('.custome_output').show();
>> -       $('.custome_header').show();
>> +       $('.custom_output').show();
>> +       $('.custom_header').show();
>>        $('.is_father').show();
>>        $('.father_widget').show();
>>        $('.display_urls').show();
>>
>> === modified file 'src/configs/aiki-defs.inc'
>> --- src/configs/aiki-defs.inc   2011-06-09 01:11:03 +0000
>> +++ src/configs/aiki-defs.inc   2011-06-10 17:35:42 +0000
>> @@ -19,7 +19,7 @@
>>  *
>>  * IMPORTANT
>>  *
>> - * The values for the define statements in this file are generated
>> + * Some of the values for the define statements in this file are generated
>>  * automatically when the autoconf configure script is executed.
>>  * These are ment to be used as the default configuration. Please,
>>  * be aware that the configuration is expected change during run-time.
>> @@ -85,4 +85,4 @@
>>  /**
>>  * Aiki Log Level
>>  */
>> -define("AIKI_LOG_LEVEL", "@AIKI_LOG_LEVEL@");
>> +define("AIKI_LOG_LEVEL", "@AIKI_LOG_LEVEL@");
>> \ No newline at end of file
>>
>> === modified file 'src/index.php'
>> --- src/index.php       2011-06-10 05:26:25 +0000
>> +++ src/index.php       2011-06-10 17:35:42 +0000
>> @@ -59,7 +59,7 @@
>>  /**
>>  * @todo fix the misspelling
>>  */
>> -if ($layout->widget_custome_output){
>> +if ($layout->widget_custom_output){
>>        $noheaders = true;
>>  }
>>
>>
>> === modified file 'src/system/libraries/forms.php'
>> --- src/system/libraries/forms.php      2011-06-08 23:20:44 +0000
>> +++ src/system/libraries/forms.php      2011-06-10 17:35:42 +0000
>> @@ -224,7 +224,7 @@
>>                                        case "staticselect":
>>
>>                                                $form .= '<label 
>> for="'.$intwalker[0].'">'.$intwalker['1'].'</label>';
>> -                                               if (($intwalker[2] == 
>> "custome" or $intwalker[2] == "custom") and $intwalker[3]){
>> +                                               if (($intwalker[2] == 
>> "custom" or $intwalker[2] == "custom") and $intwalker[3]){
>>                                                        $form .= '<select 
>> name="'.$intwalker[0].'" dir="'; if (isset 
>> ($get_permission_and_man_info['3'])){$form .= 
>> $get_permission_and_man_info['3'];} $form .= '">';
>>                                                        $explodeStaticSelect 
>> = explode("&", $intwalker[3]);
>>                                                        foreach 
>> ($explodeStaticSelect as $option){
>>
>> === modified file 'src/system/libraries/wiki.php'
>> --- src/system/libraries/wiki.php       2011-06-07 03:10:07 +0000
>> +++ src/system/libraries/wiki.php       2011-06-10 17:35:42 +0000
>> @@ -367,8 +367,8 @@
>>
>>                if ($toc){
>>
>> -                       $custome_toc_place = preg_match_all("/\[toc\]/", 
>> $text, $tocmatches);
>> -                       if ($custome_toc_place > 0 ){
>> +                       $custom_toc_place = preg_match_all("/\[toc\]/", 
>> $text, $tocmatches);
>> +                       if ($custom_toc_place > 0 ){
>>                                $text = str_replace("[toc]", "<div 
>> id='toc'>__content__<ul>".$toc."</ul></div>", $text);
>>                        }else{
>>                                $text = "<div 
>> id='toc'>__content__<ul>".$toc."</ul></div>".$text;
>>
>> === modified file 'src/system/sql/CreateTables.sql'
>> --- src/system/sql/CreateTables.sql     2011-04-30 13:57:56 +0000
>> +++ src/system/sql/CreateTables.sql     2011-06-10 17:35:42 +0000
>> @@ -239,8 +239,8 @@
>>   `permissions` text NOT NULL,
>>   `remove_container` int(1) NOT NULL,
>>   `widget_cache_timeout` int(11) NOT NULL,
>> -  `custome_output` int(1) NOT NULL,
>> -  `custome_header` text NOT NULL,
>> +  `custom_output` int(1) NOT NULL,
>> +  `custom_header` text NOT NULL,
>>   `is_active` int(1) NOT NULL,
>>   `widget_owner` int(9) unsigned NOT NULL default '2',
>>   `widget_privilege` varchar(1) NOT NULL default 'w',
>>
>> === modified file 'src/system/sql/InsertDefaults.sql'
>> --- src/system/sql/InsertDefaults.sql   2010-12-18 00:38:13 +0000
>> +++ src/system/sql/InsertDefaults.sql   2011-06-10 17:35:42 +0000
>> @@ -67,7 +67,7 @@
>>  -- ------------------------------------------------------
>>
>>  INSERT INTO `aiki_forms` (`id`, `app_id`, `form_method`, `form_action`, 
>> `form_dir`, `form_table`, `form_name`, `form_array`, `form_html`, 
>> `form_query`) VALUES
>> -(1, 0, '', '', '', 'aiki_widgets', 'widgets_simple_editor', 
>> 'a:16:{s:9:"tablename";s:12:"aiki_widgets";s:4:"pkey";s:2:"id";s:10:"textinput2";s:26:"widget_name|SystemGOD:Name";s:7:"hidden3";s:47:"widget_site|SystemGOD:widget
>>  
>> site:value:default";s:13:"staticselect4";s:62:"widget_target|SystemGOD:Target:custome:body>body&header>header";s:7:"hidden5";s:43:"widget_type|SystemGOD:widget
>>  type:value:div";s:13:"staticselect6";s:48:"is_father|SystemGOD:Is 
>> Father:custome:No>0&Yes>1";s:10:"selection7";s:123:"father_widget|SystemGOD:Father
>>  Widget:aiki_widgets:id:widget_name:where display_urls NOT RLIKE (admin) and 
>> is_father != (0)";s:10:"textinput8";s:36:"display_order|SystemGOD:Render 
>> Order";s:10:"textblock9";s:36:"display_urls|SystemGOD:Address 
>> (url)";s:11:"textblock10";s:36:"normal_select|SystemGOD:Select 
>> Query";s:11:"textblock11";s:24:"widget|SystemGOD:Content";s:11:"textblock12";s:17:"css|SystemGOD:CSS";s:11:"textinput13";s:42:"records_in_page|SystemGOD:Records
>>  per 
>> page";s:14:"staticselect14";s:45:"is_active|SystemGOD:Active:custome:Yes>1&No>0";s:6:"submit";s:3:"Add";}',
>>  '', ''),
>> +(1, 0, '', '', '', 'aiki_widgets', 'widgets_simple_editor', 
>> 'a:16:{s:9:"tablename";s:12:"aiki_widgets";s:4:"pkey";s:2:"id";s:10:"textinput2";s:26:"widget_name|SystemGOD:Name";s:7:"hidden3";s:47:"widget_site|SystemGOD:widget
>>  
>> site:value:default";s:13:"staticselect4";s:62:"widget_target|SystemGOD:Target:custom:body>body&header>header";s:7:"hidden5";s:43:"widget_type|SystemGOD:widget
>>  type:value:div";s:13:"staticselect6";s:48:"is_father|SystemGOD:Is 
>> Father:custom:No>0&Yes>1";s:10:"selection7";s:123:"father_widget|SystemGOD:Father
>>  Widget:aiki_widgets:id:widget_name:where display_urls NOT RLIKE (admin) and 
>> is_father != (0)";s:10:"textinput8";s:36:"display_order|SystemGOD:Render 
>> Order";s:10:"textblock9";s:36:"display_urls|SystemGOD:Address 
>> (url)";s:11:"textblock10";s:36:"normal_select|SystemGOD:Select 
>> Query";s:11:"textblock11";s:24:"widget|SystemGOD:Content";s:11:"textblock12";s:17:"css|SystemGOD:CSS";s:11:"textinput13";s:42:"records_in_page|SystemGOD:Records
>>  per 
>> page";s:14:"staticselect14";s:45:"is_active|SystemGOD:Active:custom:Yes>1&No>0";s:6:"submit";s:3:"Add";}',
>>  '', ''),
>>  (4, 0, '', '', '', 'aiki_dictionary', 'aiki_dictionary', 
>> 'a:7:{s:9:"tablename";s:15:"aiki_dictionary";s:4:"pkey";s:7:"term_id";s:10:"textinput1";s:23:"app_id|SystemGOD:app
>>  id";s:10:"textinput2";s:31:"short_term|SystemGOD:short 
>> term";s:10:"textblock3";s:35:"lang_english|SystemGOD:lang 
>> english";s:10:"textblock4";s:33:"lang_arabic|SystemGOD:lang 
>> arabic";s:10:"textblock5";s:33:"lang_german|SystemGOD:lang german";}', '', 
>> ''),
>>  (6, 0, '', '', '', 'aiki_forms', 'aiki_forms', 
>> 'a:11:{s:9:"tablename";s:10:"aiki_forms";s:4:"pkey";s:2:"id";s:10:"textinput1";s:23:"app_id|SystemGOD:app
>>  id";s:10:"textinput2";s:33:"form_method|SystemGOD:form 
>> method";s:10:"textinput3";s:33:"form_action|SystemGOD:form 
>> action";s:10:"textinput4";s:27:"form_dir|SystemGOD:form 
>> dir";s:10:"textinput5";s:31:"form_table|SystemGOD:form 
>> table";s:10:"textinput6";s:29:"form_name|SystemGOD:form 
>> name";s:10:"textblock7";s:31:"form_array|SystemGOD:form 
>> array";s:10:"textblock8";s:29:"form_html|SystemGOD:form 
>> html";s:10:"textblock9";s:31:"form_query|SystemGOD:form query";}', '', ''),
>>  (9, 0, '', '', '', 'aiki_languages', 'aiki_languages', 
>> 'a:8:{s:9:"tablename";s:14:"aiki_languages";s:4:"pkey";s:2:"id";s:10:"textinput1";s:19:"name|SystemGOD:name";s:10:"textinput2";s:27:"sys_name|SystemGOD:sys
>>  name";s:10:"textinput3";s:31:"short_name|SystemGOD:short 
>> name";s:10:"textinput4";s:17:"dir|SystemGOD:dir";s:10:"textinput5";s:21:"align|SystemGOD:align";s:10:"textinput6";s:31:"is_default|SystemGOD:is
>>  default";}', '', ''),
>> @@ -75,7 +75,7 @@
>>  (13, 0, '', '', '', 'aiki_sites', 'aiki_sites', 
>> 'a:6:{s:9:"tablename";s:10:"aiki_sites";s:4:"pkey";s:7:"site_id";s:10:"textinput1";s:29:"site_name|SystemGOD:site
>>  name";s:10:"textinput2";s:37:"site_shortcut|SystemGOD:site 
>> shortcut";s:10:"textinput3";s:29:"is_active|SystemGOD:is 
>> active";s:10:"textblock4";s:43:"if_closed_output|SystemGOD:if closed 
>> output";}', '', ''),
>>  (17, 0, '', '', '', 'aiki_users', 'aiki_users', 
>> 'a:5:{s:9:"tablename";s:10:"aiki_users";s:4:"pkey";s:6:"userid";s:10:"textinput2";s:27:"username|SystemGOD:username";s:9:"password4";s:44:"password|SystemGOD:password:password:md5|md5";s:10:"textinput6";s:21:"email|SystemGOD:email";}',
>>  '', ''),
>>  (18, 0, '', '', '', 'aiki_users_groups', 'aiki_users_groups', 
>> 'a:6:{s:9:"tablename";s:17:"aiki_users_groups";s:4:"pkey";s:2:"id";s:10:"textinput1";s:23:"app_id|SystemGOD:app
>>  
>> id";s:10:"textinput2";s:19:"name|SystemGOD:name";s:10:"textinput3";s:45:"group_permissions|SystemGOD:group
>>  permissions";s:10:"textinput4";s:33:"group_level|SystemGOD:group level";}', 
>> '', ''),
>> -(20, 0, '', '', '', 'aiki_widgets', 'aiki_widgets', 
>> 'a:31:{s:9:"tablename";s:12:"aiki_widgets";s:4:"pkey";s:2:"id";s:10:"textinput2";s:26:"widget_name|SystemGOD:Name";s:10:"selection3";s:61:"widget_site|SystemGOD:Site:aiki_sites:site_shortcut:site_name";s:13:"staticselect4";s:62:"widget_target|SystemGOD:Target:custome:body>body&header>header";s:13:"staticselect5";s:213:"widget_type|SystemGOD:Type:custome:div>div&none>0&span>span&paragraph>p&link>a&---html
>>  
>> 5--->0&header>header&nav>nav&article>article&aside>aside&figure>figure&footer>footer&section>section&address>address&abbr>abbr";s:10:"textinput6";s:36:"display_order|SystemGOD:Render
>>  Order";s:10:"textinput7";s:32:"style_id|SystemGOD:Style 
>> (class)";s:13:"staticselect8";s:48:"is_father|SystemGOD:Is 
>> Father:custome:No>0&Yes>1";s:10:"selection9";s:123:"father_widget|SystemGOD:Father
>>  Widget:aiki_widgets:id:widget_name:where display_urls NOT RLIKE (admin) and 
>> is_father != (0)";s:11:"textblock10";s:36:"display_urls|SystemGOD:Address 
>> (URL)";s:11:"textblock11";s:29:"kill_urls|SystemGOD:Kill 
>> urls";s:11:"textblock12";s:36:"normal_select|SystemGOD:Select 
>> Query";s:11:"textblock13";s:51:"authorized_select|SystemGOD:Authorized 
>> Select Query";s:11:"textblock14";s:40:"if_no_results|SystemGOD:No Results 
>> Error";s:11:"textblock15";s:24:"widget|SystemGOD:Content";s:11:"textblock16";s:17:"css|SystemGOD:CSS";s:11:"textblock17";s:36:"nogui_widget|SystemGOD:nogui
>>  Content";s:11:"textinput18";s:53:"display_in_row_of|SystemGOD:Display 
>> results in row 
>> of";s:11:"textinput19";s:42:"records_in_page|SystemGOD:Records per 
>> page";s:11:"textinput20";s:46:"link_example|SystemGOD:Pagination Link 
>> Example";s:11:"textblock21";s:30:"pagetitle|SystemGOD:Page 
>> title";s:14:"staticselect22";s:65:"is_admin|SystemGOD:Require special 
>> permissions:custome:No>0&Yes>1";s:11:"textblock23";s:45:"if_authorized|SystemGOD:If
>>  authorized 
>> content";s:11:"textblock24";s:39:"permissions|SystemGOD:Permissions 
>> Group";s:14:"staticselect25";s:62:"remove_container|SystemGOD:Remove 
>> Container:custome:No>0&Yes>1";s:11:"textinput26";s:44:"widget_cache_timeout|SystemGOD:Cache
>>  Timeout";s:14:"staticselect27";s:57:"custome_output|SystemGOD:Custom 
>> Output:custome:No>0&Yes>1";s:11:"textblock28";s:48:"custome_header|SystemGOD:Send
>>  Custom http 
>> header";s:14:"staticselect29";s:45:"is_active|SystemGOD:Active:custome:Yes>1&No>0";s:6:"submit";s:4:"Save";}',
>>  '', '');
>> +(20, 0, '', '', '', 'aiki_widgets', 'aiki_widgets', 
>> 'a:31:{s:9:"tablename";s:12:"aiki_widgets";s:4:"pkey";s:2:"id";s:10:"textinput2";s:26:"widget_name|SystemGOD:Name";s:10:"selection3";s:61:"widget_site|SystemGOD:Site:aiki_sites:site_shortcut:site_name";s:13:"staticselect4";s:62:"widget_target|SystemGOD:Target:custom:body>body&header>header";s:13:"staticselect5";s:213:"widget_type|SystemGOD:Type:custom:div>div&none>0&span>span&paragraph>p&link>a&---html
>>  
>> 5--->0&header>header&nav>nav&article>article&aside>aside&figure>figure&footer>footer&section>section&address>address&abbr>abbr";s:10:"textinput6";s:36:"display_order|SystemGOD:Render
>>  Order";s:10:"textinput7";s:32:"style_id|SystemGOD:Style 
>> (class)";s:13:"staticselect8";s:48:"is_father|SystemGOD:Is 
>> Father:custom:No>0&Yes>1";s:10:"selection9";s:123:"father_widget|SystemGOD:Father
>>  Widget:aiki_widgets:id:widget_name:where display_urls NOT RLIKE (admin) and 
>> is_father != (0)";s:11:"textblock10";s:36:"display_urls|SystemGOD:Address 
>> (URL)";s:11:"textblock11";s:29:"kill_urls|SystemGOD:Kill 
>> urls";s:11:"textblock12";s:36:"normal_select|SystemGOD:Select 
>> Query";s:11:"textblock13";s:51:"authorized_select|SystemGOD:Authorized 
>> Select Query";s:11:"textblock14";s:40:"if_no_results|SystemGOD:No Results 
>> Error";s:11:"textblock15";s:24:"widget|SystemGOD:Content";s:11:"textblock16";s:17:"css|SystemGOD:CSS";s:11:"textblock17";s:36:"nogui_widget|SystemGOD:nogui
>>  Content";s:11:"textinput18";s:53:"display_in_row_of|SystemGOD:Display 
>> results in row 
>> of";s:11:"textinput19";s:42:"records_in_page|SystemGOD:Records per 
>> page";s:11:"textinput20";s:46:"link_example|SystemGOD:Pagination Link 
>> Example";s:11:"textblock21";s:30:"pagetitle|SystemGOD:Page 
>> title";s:14:"staticselect22";s:65:"is_admin|SystemGOD:Require special 
>> permissions:custom:No>0&Yes>1";s:11:"textblock23";s:45:"if_authorized|SystemGOD:If
>>  authorized 
>> content";s:11:"textblock24";s:39:"permissions|SystemGOD:Permissions 
>> Group";s:14:"staticselect25";s:62:"remove_container|SystemGOD:Remove 
>> Container:custom:No>0&Yes>1";s:11:"textinput26";s:44:"widget_cache_timeout|SystemGOD:Cache
>>  Timeout";s:14:"staticselect27";s:57:"custom_output|SystemGOD:Custom 
>> Output:custom:No>0&Yes>1";s:11:"textblock28";s:48:"custom_header|SystemGOD:Send
>>  Custom http 
>> header";s:14:"staticselect29";s:45:"is_active|SystemGOD:Active:custom:Yes>1&No>0";s:6:"submit";s:4:"Save";}',
>>  '', '');
>>
>>  -- ------------------------------------------------------
>>
>>
>> === modified file 'src/system/sql/InsertVariable-in.sql'
>> --- src/system/sql/InsertVariable-in.sql        2011-06-05 07:35:00 +0000
>> +++ src/system/sql/InsertVariable-in.sql        2011-06-10 17:35:42 +0000
>> @@ -40,7 +40,7 @@
>>
>>  -- ------------------------------------------------------
>>
>> -INSERT INTO `aiki_widgets` (`id`, `app_id`, `widget_name`, `widget_site`, 
>> `widget_target`, `widget_type`, `display_order`, `style_id`, `is_father`, 
>> `father_widget`, `display_urls`, `kill_urls`, `normal_select`, 
>> `authorized_select`, `if_no_results`, `widget`, `css`, `nogui_widget`, 
>> `display_in_row_of`, `records_in_page`, `link_example`, `pagetitle`, 
>> `is_admin`, `if_authorized`, `permissions`, `remove_container`, 
>> `widget_cache_timeout`, `custome_output`, `custome_header`, `is_active`, 
>> `widget_owner`, `widget_privilege`) VALUES
>> +INSERT INTO `aiki_widgets` (`id`, `app_id`, `widget_name`, `widget_site`, 
>> `widget_target`, `widget_type`, `display_order`, `style_id`, `is_father`, 
>> `father_widget`, `display_urls`, `kill_urls`, `normal_select`, 
>> `authorized_select`, `if_no_results`, `widget`, `css`, `nogui_widget`, 
>> `display_in_row_of`, `records_in_page`, `link_example`, `pagetitle`, 
>> `is_admin`, `if_authorized`, `permissions`, `remove_container`, 
>> `widget_cache_timeout`, `custom_output`, `custom_header`, `is_active`, 
>> `widget_owner`, `widget_privilege`) VALUES
>>  (1, 1, 'header', 'default', 'body', 'div', 1, '', '0', 6, 'admin', '', '', 
>> '', '', '(#(header:Location: [root]/login|false|301)#)', '#header {\r\n    
>> height: 28px;\r\n    background: #eeeeee;\r\n    position: relative;\r\n    
>> border-bottom:1px solid #666666;\r\n    border-top:1px solid #666666;\r\n    
>> text-align:center;\r\n}\r\n\r\n#main-navigation {\r\n           position: 
>> relative;\r\n float:left;\r\n line-height:25px;\r\n}\r\n\r\n#main-navigation 
>> li{\r\n  float:left;\r\n line-height:25px;\r\n   margin-right: 10px;\r\n 
>> margin-left: 10px;\r\n}\r\n\r\n#main-navigation li a img{\r\n   
>> margin-top:5px;\r\n}\r\n\r\n#main-navigation .aiki-icon {\r\n   
>> margin-left:-5px;\r\n   margin-right:-10px;\r\n}\r\n\r\n#main-navigation 
>> a.active{\r\n  font-weight:bold;\r\n}\r\n\r\n#user-navigation {\r\n          
>>   position: relative;\r\n float:right;\r\n        
>> line-height:25px;\r\n}\r\n\r\n#user-navigation li{\r\n  float:left;\r\n 
>> line-height:25px;\r\n   \r\n}\r\n\r\n#user-navigation li a, #user-navigation 
>> li strong{\r\n     margin-right: 10px;\r\n margin-left: 
>> 10px;\r\n}\r\n\r\n#user-navigation li a img{\r\n   
>> margin-top:5px;\r\n}\r\n\r\n#user-navigation .aiki-icon {\r\n   
>> margin-left:-5px;\r\n   margin-right:-10px;\r\n}\r\n\r\n#user-navigation 
>> a.active{\r\n  font-weight:bold;\r\n}\r\n\r\n#tree-menu {\r\n  
>> border-bottom: 1px dashed 
>> #d3d7cf;\r\ndisplay:block;\r\nposition:relative;\r\n}\r\n\r\n#tree-menu 
>> li{\r\n       float:left;\r\n line-height:25px;\r\n   
>> \r\n}\r\n\r\n#tree-menu li a{\r\n       margin-right: 5px;\r\n  margin-left: 
>> 5px;\r\n}\r\n\r\n#tree-menu li a img{\r\n  margin-top:5px;\r\n     
>> height:12px;\r\n        margin-right:2px;\r\n}\r\n\r\n#widget-tree {\r\n     
>>    text-align:left;\r\n}', '', 0, 0, '', 'aiki AdminPanel', 1, "   <ul 
>> id='main-navigation' class='clearfix'>\r\n          <li><a href='#' 
>> class='aiki-icon' id='aiki-icon-button'><img 
>> src='[root]/assets/apps/admin/images/aiki-icon.png' /></a></li>\r\n          
>>       <li><a href='#' id='structur_button'>Structure</a></li>\r\n<li><a 
>> href='#' id='system_button'>System</a></li>\r\n       
>> </ul>\r\n\r\n(ajax_a(structur_button;\r\n['[root]/index.php?widget=structur_accordion','#ui-layout-west',
>>  
>> 'structur_accordion()']\r\n)ajax_a)\r\n\r\n(ajax_a(system_button;\r\n['[root]/index.php?widget=system_accordion','#ui-layout-west',
>>  'system_accordion()']\r\n)ajax_a)\r\n\r\n <ul id='user-navigation' 
>> class='clearfix'>\r\n          <li><a rev='#widget-form' 
>> href='[root]/admin_tools/edit/17/[userid]' rel='edit_record'>[username]</a> 
>> @ <a href='[root]'>[root]</a>| </li> \r\n <li><a 
>> href='http://www.aikiframework.org/'>aiki framework 
>> @VERSION@.@REVISION@</a>|</li> \r\n <li><a 
>> href='[root]/admin_tools/logout'>Logout</a></li>\r\n      </ul>\r\n\r\n<div 
>> id='dialog' title='About Aikiframework'>\r\n  <p>\r\n         <img 
>> src='[root]/assets/apps/admin/images/logo.png' />\r\n              <br /><br 
>> />\r\n                <h2>aiki framework @VERSION@.@REVISION@</h2>\r\n       
>>          <br />\r\n              <a 
>> href='http://www.aikiframework.org'>http://www.aikiframework.org</a>\r\n     
>>         <br /><br />\r\n                <h2>Credits:</h2>       \r\n         
>>    Bassel Safadi<br />\r\n  Jon Phillips<br />\r\n Christopher Adams<br 
>> />\r\n Barry Threw<br />\r\n       Michi Krnac<br />\r\n Ronaldo Barbachano 
>> <br />\r\n Brad Phillips<br />\r\n Steven Garcia  <br />\r\n Roger Martín 
>> <br />\r\n   Vera Lobatcheva<br />\r\n Fabricatorz, LLC<br />\r\n AikiLab 
>> Singapore<br />\r\n</p>\r\n</div>", 'SystemGOD', 0, 0, 0, '', 1, 2, 'w'),
>>  (2, 1, 'terminal', 'default', 'body', 'div', 2, '', 0, 6, 'admin', '', '', 
>> '', '', '', '#terminal {\r\n    height: 300px;\r\n    left: 1px;\r\n    
>> overflow: auto;\r\n    position: absolute;\r\n    width: 
>> 100%;\r\n}\r\n#terminal p{\r\npadding: 2px;\r\n}', '', 0, 0, '', '', 1, '', 
>> 'SystemGOD', 0, 0, 0, '', 1, 2, 'w'),
>>  (3, 1, 'structur_accordion', 'default', 'body', 'div', 6, '', '0', 7, 
>> 'admin', '', '', '', '', '', '', '', 0, 0, '', '', 1, '<h3><a href="#" 
>> id="urls_widgets">Urls & Widgets</a></h3>\r\n<div>\r\n    <ul id="tree-menu" 
>> class="clearfix">\r\n                <li><a href="#" 
>> id="create_new_widget"><img 
>> src="[root]/assets/apps/admin/images/icons/layout_add.png" />Create 
>> Widget</a></li>\r\n     </ul>\r\n       <div id="widgettree" 
>> class="demo"></div>\r\n</div>\r\n\r\n<h3><a href="#" 
>> id="database_forms">Databases & Forms</a></h3>\r\n<div>\r\n   <ul 
>> id="tree-menu" class="clearfix">\r\n                <li><a href="#" 
>> id="create_new_table"><img 
>> src="[root]/assets/apps/admin/images/icons/database.png" />Create 
>> Table</a></li>\r\n         <li><a href="#" id="create_new_form"><img 
>> src="[root]/assets/apps/admin/images/icons/application_form.png" />Create 
>> Form</a></li>\r\n   </ul>\r\n<div id="databaseformstree" 
>> class="demo"></div>\r\n</div>\r\n', 'SystemGOD', 0, 0, 0, '', 1, 2, 'w'),
>>
>> === modified file 'src/system/widgets.php'
>> --- src/system/widgets.php      2011-06-07 03:10:07 +0000
>> +++ src/system/widgets.php      2011-06-10 17:35:42 +0000
>> @@ -49,7 +49,7 @@
>>        public $widgets_css;
>>
>>        // Boolean: is the widget require custom output.
>> -       public $widget_custome_output;
>> +       public $widget_custom_output;
>>
>>        // Stores the head output of a widget.
>>        public $head_output;
>> @@ -122,7 +122,7 @@
>>
>>
>>        private function createWidget($widget_id, $widget_group=''){
>> -               global $db, $aiki,$url, $page, $site, $custome_output;
>> +               global $db, $aiki,$url, $page, $site, $custom_output;
>>
>>                if ($widget_group){
>>
>> @@ -152,21 +152,21 @@
>>                                        $this->widgets_css .= $widget->id.'_';
>>                                }
>>
>> -                               if ($widget->custome_output){
>> -                                       $custome_output = true;
>> -                                       $this->widget_custome_output = true;
>> +                               if ($widget->custom_output){
>> +                                       $custom_output = true;
>> +                                       $this->widget_custom_output = true;
>>                                }
>>
>> -                               if ($widget->custome_header and 
>> $widget->custome_header != ''){
>> -                                       $custome_headers = explode("\n", 
>> $widget->custome_header);
>> -                                       foreach ($custome_headers as 
>> $custome_header){
>> -                                               if ($custome_header != ""){
>> -                                                       
>> header("$custome_header");
>> +                               if ($widget->custom_header and 
>> $widget->custom_header != ''){
>> +                                       $custom_headers = explode("\n", 
>> $widget->custom_header);
>> +                                       foreach ($custom_headers as 
>> $custom_header){
>> +                                               if ($custom_header != ""){
>> +                                                       
>> header("$custom_header");
>>                                                }
>>                                        }
>>                                }
>>
>> -                               if (!$custome_output and 
>> $widget->widget_type and $widget->remove_container != 1){
>> +                               if (!$custom_output and $widget->widget_type 
>> and $widget->remove_container != 1){
>>                                        $this->widget_html .= "\n <!--start 
>> {$widget->widget_name}({$widget->id})--> \n";
>>                                        $this->widget_html .= 
>> "<$widget->widget_type id=\"$widget->widget_name\"";
>>                                        if ($widget->style_id){
>> @@ -209,7 +209,7 @@
>>                                        }
>>                                }
>>
>> -                               if (!$custome_output and 
>> $widget->widget_type and $widget->remove_container != 1){
>> +                               if (!$custom_output and $widget->widget_type 
>> and $widget->remove_container != 1){
>>                                        $this->widget_html .= 
>> "\n</$widget->widget_type>\n";
>>                                        $this->widget_html .= "\n 
>> <!--{$widget->widget_name}({$widget->id}) end--> \n";
>>                                }
>> @@ -251,7 +251,7 @@
>>
>>
>>        private function createWidgetContent($widget, $output_to_string='', 
>> $normal_select=''){
>> -               global $aiki, $db, $url, $membership, $nogui, 
>> $custome_output, $config;
>> +               global $aiki, $db, $url, $membership, $nogui, 
>> $custom_output, $config;
>>
>>                if (isset($_GET['page'])){
>>                        $page = addslashes($_GET['page']);
>> @@ -540,7 +540,7 @@
>>                                        {
>>
>>
>> -                                               if (!$custome_output){
>> +                                               if (!$custom_output){
>>                                                        $widgetContents .= 
>> "\n<!-- The Beginning of a Record -->\n";
>>                                                }
>>                                                $widget->widget = $newwidget;
>> @@ -559,7 +559,7 @@
>>
>>
>>                                                $widgetContents .= 
>> $widget->widget;
>> -                                               if (!$custome_output){
>> +                                               if (!$custom_output){
>>                                                        $widgetContents .= 
>> "\n<!-- The End of a Record -->\n";
>>                                                }
>>                                        }
>> @@ -731,7 +731,7 @@
>>                                }
>>                        }
>>
>> -                       if ($membership->permissions == "SystemGOD" and 
>> $widget->widget and $config['show_edit_widgets'] == 1 and 
>> $widget->widget_target == 'body' and !preg_match("/admin/", 
>> $widget->display_urls) and $widget->custome_output == 0){
>> +                       if ($membership->permissions == "SystemGOD" and 
>> $widget->widget and $config['show_edit_widgets'] == 1 and 
>> $widget->widget_target == 'body' and !preg_match("/admin/", 
>> $widget->display_urls) and $widget->custom_output == 0){
>>                                $processed_widget = $processed_widget."<a 
>> href='".$config['url']."admin_tools/edit/20/".$widget->id."' 
>> style='position: absolute; z-index: 100000; background: none repeat scroll 
>> 0% 0% rgb(204, 204, 204); padding: 3px; -moz-border-radius: 3px 3px 3px 3px; 
>> color: rgb(0, 0, 0);'>Edit Widget: ".$widget->widget_name."</a>";
>>                        }
>>
>>
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~aikiframework-devel
>> Post to     : aikiframework-devel@lists.launchpad.net
>> Unsubscribe : https://launchpad.net/~aikiframework-devel
>> More help   : https://help.launchpad.net/ListHelp
>>
>>
>
>
>
> --
> ———
> christopher adams
> 86 186 1172 0021 | 1 646 201 3335
> 49 15 156 219931 | 886 953 036 630
> chris.raysend.com
>
> _______________________________________________
> Mailing list: https://launchpad.net/~aikiframework-devel
> Post to     : aikiframework-devel@lists.launchpad.net
> Unsubscribe : https://launchpad.net/~aikiframework-devel
> More help   : https://help.launchpad.net/ListHelp
>



-- 
Jon Phillips
http://rejon.org/ | http://fabricatorz.com/
chat/skype: kidproto | irc: rejon
+1.415.830.3884 (global) | +1-510-499-0894 (sf)
+86-187-1003-9974 (beijing)

_______________________________________________
Mailing list: https://launchpad.net/~aikiframework-devel
Post to     : aikiframework-devel@lists.launchpad.net
Unsubscribe : https://launchpad.net/~aikiframework-devel
More help   : https://help.launchpad.net/ListHelp

Reply via email to