Index: branches/unlabeled/unlabeled-1.1.2/core/units/selectors/selectors_tag_processor.php
===================================================================
diff -u -r1410 -r1421
--- branches/unlabeled/unlabeled-1.1.2/core/units/selectors/selectors_tag_processor.php (.../selectors_tag_processor.php) (revision 1410)
+++ branches/unlabeled/unlabeled-1.1.2/core/units/selectors/selectors_tag_processor.php (.../selectors_tag_processor.php) (revision 1421)
@@ -7,7 +7,6 @@
{
$object =& $this->Application->recallObject( $this->getPrefixSpecial(), $this->Prefix, $params );
$style_data = $object->GetDBField( $params['field'] );
- //$style_data = str_replace(array(">", "<",""", "&"), array(">","<", "\"", "&"), $style_data);
$ret = '';
@@ -53,7 +52,8 @@
$ret = parent::Field($params);
if($subfield && $subfield != '$subfield')
{
- return getArrayValue($ret,$subfield);
+ $ret = getArrayValue($ret,$subfield);
+ return $ret !== false ? $ret : '';
}
return $ret;
}
Index: branches/unlabeled/unlabeled-1.1.2/core/admin_templates/stylesheets/stylesheets_list.tpl
===================================================================
diff -u -r1412 -r1421
--- branches/unlabeled/unlabeled-1.1.2/core/admin_templates/stylesheets/stylesheets_list.tpl (.../stylesheets_list.tpl) (revision 1412)
+++ branches/unlabeled/unlabeled-1.1.2/core/admin_templates/stylesheets/stylesheets_list.tpl (.../stylesheets_list.tpl) (revision 1421)
@@ -44,13 +44,6 @@
a_toolbar.AddButton( new ToolBarSeparator('sep2') );
- a_toolbar.AddButton( new ToolBarButton('compile', '', function() {
- submit_event('css','OnCompile');
- }
- ) );
-
- a_toolbar.AddButton( new ToolBarSeparator('sep3') );
-
a_toolbar.AddButton( new ToolBarButton('view', '', function() {
show_viewmenu(a_toolbar,'view');
}
Index: branches/unlabeled/unlabeled-1.1.2/core/admin_templates/stylesheets/block_style_edit.tpl
===================================================================
diff -u
--- branches/unlabeled/unlabeled-1.1.2/core/admin_templates/stylesheets/block_style_edit.tpl (revision 0)
+++ branches/unlabeled/unlabeled-1.1.2/core/admin_templates/stylesheets/block_style_edit.tpl (revision 1421)
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ " value="2">
+
+
+
+
+
+
+
+
+
+
">
+
+
+ :
+
+ |
+
+
+ |
+ |
+
+
+
+
+
\ No newline at end of file
Index: branches/unlabeled/unlabeled-1.1.2/core/admin_templates/stylesheets/style_editor.tpl
===================================================================
diff -u -r1410 -r1421
--- branches/unlabeled/unlabeled-1.1.2/core/admin_templates/stylesheets/style_editor.tpl (.../style_editor.tpl) (revision 1410)
+++ branches/unlabeled/unlabeled-1.1.2/core/admin_templates/stylesheets/style_editor.tpl (.../style_editor.tpl) (revision 1421)
@@ -100,7 +100,6 @@
-
Index: branches/unlabeled/unlabeled-1.1.2/core/admin_templates/stylesheets/base_style_edit.tpl
===================================================================
diff -u -r1410 -r1421
--- branches/unlabeled/unlabeled-1.1.2/core/admin_templates/stylesheets/base_style_edit.tpl (.../base_style_edit.tpl) (revision 1410)
+++ branches/unlabeled/unlabeled-1.1.2/core/admin_templates/stylesheets/base_style_edit.tpl (.../base_style_edit.tpl) (revision 1421)
@@ -25,9 +25,37 @@
a_toolbar.Render();
+ function ValidateRequired()
+ {
+ var $fields = new Array('',
+ '');
+ var $ret = true;
+ var $i = 0;
+ var $value = '';
+ while($i < $fields.length)
+ {
+ $value = document.getElementById( $fields[$i] ).value;
+ $value = $value.replace(' ','');
+ if($value.length == 0)
+ {
+ $ret = false;
+ break;
+ }
+ $i++;
+ }
+ return $ret;
+ }
+
function editStyle()
{
- openSelector('selectors','',null,850,460,'OnOpenStyleEditor');
+ if( ValidateRequired() )
+ {
+ openSelector('selectors','',null,850,460,'OnOpenStyleEditor');
+ }
+ else
+ {
+ alert( RemoveTranslationLink('') );
+ }
}
@@ -41,7 +69,7 @@
" value="1">
-
+
Index: branches/unlabeled/unlabeled-1.1.2/core/units/stylesheets/stylesheets_config.php
===================================================================
diff -u -r1412 -r1421
--- branches/unlabeled/unlabeled-1.1.2/core/units/stylesheets/stylesheets_config.php (.../stylesheets_config.php) (revision 1412)
+++ branches/unlabeled/unlabeled-1.1.2/core/units/stylesheets/stylesheets_config.php (.../stylesheets_config.php) (revision 1421)
@@ -7,7 +7,18 @@
'EventHandlerClass' => Array('class'=>'StylesheetsEventHandler','file'=>'stylesheets_event_handler.php','build_event'=>'OnBuild'),
'TagProcessorClass' => Array('class'=>'kDBTagProcessor','file'=>'','build_event'=>'OnBuild'),
'AutoLoad' => true,
- 'Hooks' => Array(),
+ 'Hooks' => Array(
+ Array(
+ 'Mode' => hAFTER,
+ 'Conditional' => false,
+ 'HookToPrefix' => 'css',
+ 'HookToSpecial' => '',
+ 'HookToEvent' => Array('OnSave'),
+ 'DoPrefix' => '',
+ 'DoSpecial' => '',
+ 'DoEvent' => 'OnCompileStylesheet',
+ ),
+ ),
'QueryString' => Array(
1 => 'id',
2 => 'page',
@@ -35,11 +46,17 @@
'block_styles' => Array('prefixes' => Array('css','selectors.block_List'), 'format' => "#css_status# '#css_titlefield#' - !la_title_BlockStyles! (#selectors.block_recordcount#)"),
'base_style_edit' => Array( 'prefixes' => Array('css','selectors'),
- 'new_status_labels' => Array('selectors.base'=>'!la_title_Adding_BaseStyle!'),
- 'edit_status_labels' => Array('selectors.base'=>'!la_title_Editing_BaseStyle!'),
- 'new_titlefield' => Array('selectors.base'=>'!la_title_New_BaseStyle!'),
+ 'new_status_labels' => Array('selectors'=>'!la_title_Adding_BaseStyle!'),
+ 'edit_status_labels' => Array('selectors'=>'!la_title_Editing_BaseStyle!'),
+ 'new_titlefield' => Array('selectors'=>'!la_title_New_BaseStyle!'),
'format' => "#css_status# '#css_titlefield#' - #selectors_status# '#selectors_titlefield#'"),
-
+
+ 'block_style_edit' => Array( 'prefixes' => Array('css','selectors'),
+ 'new_status_labels' => Array('selectors'=>'!la_title_Adding_BlockStyle!'),
+ 'edit_status_labels' => Array('selectors'=>'!la_title_Editing_BlockStyle!'),
+ 'new_titlefield' => Array('selectors'=>'!la_title_New_BlockStyle!'),
+ 'format' => "#css_status# '#css_titlefield#' - #selectors_status# '#selectors_titlefield#'"),
+
'style_edit' => Array('prefixes' => Array('selectors'), 'format' => "!la_title_EditingStyle! '#selectors_titlefield#'"),
),
Index: branches/unlabeled/unlabeled-1.1.2/core/units/selectors/selectors_event_handler.php
===================================================================
diff -u -r1410 -r1421
--- branches/unlabeled/unlabeled-1.1.2/core/units/selectors/selectors_event_handler.php (.../selectors_event_handler.php) (revision 1410)
+++ branches/unlabeled/unlabeled-1.1.2/core/units/selectors/selectors_event_handler.php (.../selectors_event_handler.php) (revision 1421)
@@ -34,27 +34,6 @@
}
/**
- * Initializes newly created items
- *
- * @param kEvent $event
- */
- function OnNew(&$event)
- {
- parent::OnNew($event);
-
- $object =& $event->getObject();
- switch ($event->Special) {
- case 'base':
- $object->SetDBField('Type', 1);
- break;
-
- case 'block':
- $object->SetDBField('Type', 2);
- break;
- }
- }
-
- /**
* Save css-style name & description before opening css editor
*
* @param kEvent $event
@@ -79,9 +58,19 @@
if($items_info)
{
list($id,$field_values) = each($items_info);
- $object->Load($id);
- $object->SetFieldsFromHash($field_values);
- $object->Update();
+ if($id == 0)
+ {
+ $object->Load( $field_values['ParentId'] );
+ $object->SetFieldsFromHash($field_values);
+ $object->Create();
+ if( $object->IsTempTable() ) $object->setTempID();
+ }
+ else
+ {
+ $object->Load($id);
+ $object->SetFieldsFromHash($field_values);
+ $object->Update();
+ }
}
}
@@ -93,13 +82,13 @@
function OnSaveStyle(&$event)
{
$this->SaveChanges($event);
+
$object =& $event->getObject();
+ $this->Application->SetVar($event->getPrefixSpecial().'_id', $object->GetId() );
- $selector_data = $object->GetDBField('SelectorData');
- $object->SetDBField('SelectorData', serialize($selector_data) );
- $object->Update();
+ $return_tpl = $object->GetDBField('Type') == 1 ? 'base_style_edit' : 'block_style_edit';
- $this->finalizePopup($event,'selectors.base','in-commerce/stylesheets/base_style_edit');
+ $this->finalizePopup($event, 'selectors.base','in-commerce/stylesheets/'.$return_tpl);
}
/**
@@ -116,18 +105,26 @@
$selector_data = unserialize($selector_data);
$object->SetDBField('SelectorData', $selector_data);
}
+ else
+ {
+ $selector_data = Array();
+ }
+ $this->AddParentProperties($event, $selector_data);
}
/**
* Serialize item before saving to db
*
* @param kEvent $event
*/
- function OnBeforeItemUpdate(&$event)
+ function OnSerializeSelectorData(&$event)
{
$object =& $event->getObject();
$selector_data = $object->GetDBField('SelectorData');
if(!$selector_data) $selector_data = Array();
+
+ $selector_data = $this->RemoveParentProperties($event, $selector_data);
+
if( !IsSerialized($selector_data) ) $selector_data = serialize($selector_data);
$object->SetDBField('SelectorData', $selector_data);
@@ -138,15 +135,83 @@
*
* @param kEvent $event
*/
- function OnAfterItemUpdate(&$event)
+ function OnUnserializeSelectorData(&$event)
{
$object =& $event->getObject();
$selector_data = $object->GetDBField('SelectorData');
if(!$selector_data) $selector_data = Array();
if( IsSerialized($selector_data) ) $selector_data = unserialize($selector_data);
+ $selector_data = $this->AddParentProperties($event, $selector_data);
+
$object->SetDBField('SelectorData', $selector_data);
}
+
+ /**
+ * Populate options based on temporary table :)
+ *
+ * @param kEvent $event
+ */
+ function OnPrepareBaseStyles(&$event)
+ {
+ $object =& $event->getObject();
+
+ $parent_info = $object->getLinkedInfo();
+ $title_field = $this->Application->getUnitOption($event->Prefix,'TitleField');
+ $sql = 'SELECT '.$title_field.', '.$object->IDField.' FROM '.$object->TableName.' WHERE Type = 1 AND StylesheetId = '.$parent_info['ParentId'].' ORDER BY '.$title_field;
+ $object->Fields['ParentId']['options'] = array_merge_recursive2($object->Fields['ParentId']['options'],
+ $this->Conn->GetCol($sql,$object->IDField) );
+ }
+
+ /**
+ * Remove properties of parent style that match by value from style
+ *
+ * @param kEvent $event
+ */
+ function RemoveParentProperties(&$event, $selector_data)
+ {
+ $object =& $event->getObject();
+ $parent_id = $object->GetDBField('ParentId');
+ if($parent_id)
+ {
+ $sql = 'SELECT SelectorData FROM '.$object->TableName.' WHERE '.$object->IDField.' = '.$parent_id;
+ $base_selector_data = $this->Conn->GetOne($sql);
+
+ if( IsSerialized($base_selector_data) ) $base_selector_data = unserialize($base_selector_data);
+
+ foreach($selector_data as $prop_name => $prop_value)
+ {
+ if( $base_selector_data[$prop_name] == $prop_value ) unset($selector_data[$prop_name]);
+ }
+ $object->SetDBField('SelectorData', $selector_data);
+ return $selector_data;
+ }
+ return $selector_data;
+ }
+
+ /**
+ * Add back properties from parent style, that match this style property values
+ *
+ * @param kEvent $event
+ */
+ function AddParentProperties(&$event, $selector_data)
+ {
+ $object =& $event->getObject();
+ $parent_id = $object->GetDBField('ParentId');
+ if($parent_id)
+ {
+ $sql = 'SELECT SelectorData FROM '.$object->TableName.' WHERE '.$object->IDField.' = '.$parent_id;
+ $base_selector_data = $this->Conn->GetOne($sql);
+
+ if( IsSerialized($base_selector_data) ) $base_selector_data = unserialize($base_selector_data);
+
+ $selector_data = array_merge_recursive2($base_selector_data,$selector_data);
+
+ $object->SetDBField('SelectorData', $selector_data);
+ return $selector_data;
+ }
+ return $selector_data;
+ }
}
?>
\ No newline at end of file
Index: branches/unlabeled/unlabeled-1.1.2/core/units/selectors/selectors_config.php
===================================================================
diff -u -r1412 -r1421
--- branches/unlabeled/unlabeled-1.1.2/core/units/selectors/selectors_config.php (.../selectors_config.php) (revision 1412)
+++ branches/unlabeled/unlabeled-1.1.2/core/units/selectors/selectors_config.php (.../selectors_config.php) (revision 1421)
@@ -4,12 +4,45 @@
$config = Array(
'Prefix' => 'selectors',
- 'ItemClass' => Array('class'=>'kDBItem','file'=>'','build_event'=>'OnItemBuild'),
+ 'ItemClass' => Array('class'=>'SelectorsItem','file'=>'selectors_item.php','build_event'=>'OnItemBuild'),
'ListClass' => Array('class'=>'kDBList','file'=>'','build_event'=>'OnListBuild'),
'EventHandlerClass' => Array('class'=>'SelectorsEventHandler','file'=>'selectors_event_handler.php','build_event'=>'OnBuild'),
'TagProcessorClass' => Array('class'=>'SelectorsTagProcessor','file'=>'selectors_tag_processor.php','build_event'=>'OnBuild'),
'AutoLoad' => true,
- 'Hooks' => Array(),
+ 'Hooks' => Array(
+ Array(
+ 'Mode' => hAFTER,
+ 'Conditional' => false,
+ 'HookToPrefix' => 'selectors',
+ 'HookToSpecial' => '',
+ 'HookToEvent' => Array('OnBeforeItemUpdate','OnBeforeItemCreate'),
+ 'DoPrefix' => '',
+ 'DoSpecial' => '',
+ 'DoEvent' => 'OnSerializeSelectorData',
+ ),
+
+ Array(
+ 'Mode' => hAFTER,
+ 'Conditional' => false,
+ 'HookToPrefix' => 'selectors',
+ 'HookToSpecial' => '',
+ 'HookToEvent' => Array('OnAfterItemUpdate','OnAfterItemCreate'),
+ 'DoPrefix' => '',
+ 'DoSpecial' => '',
+ 'DoEvent' => 'OnUnserializeSelectorData',
+ ),
+
+ Array(
+ 'Mode' => hAFTER,
+ 'Conditional' => false,
+ 'HookToPrefix' => 'selectors',
+ 'HookToSpecial' => '',
+ 'HookToEvent' => Array('OnItemBuild','OnListBuild'),
+ 'DoPrefix' => '',
+ 'DoSpecial' => '',
+ 'DoEvent' => 'OnPrepareBaseStyles',
+ ),
+ ),
'QueryString' => Array(
1 => 'id',
2 => 'page',
@@ -27,7 +60,8 @@
'AutoDelete' => true,
'AutoClone' => true,
- 'ListSQLs' => Array( ''=>'SELECT * FROM %s',
+ 'ListSQLs' => Array( ''=>' SELECT %1$s.*
+ FROM %s',
), // key - special, value - list select sql
'ItemSQLs' => Array( ''=>'SELECT * FROM %s',
),
@@ -40,14 +74,14 @@
'SelectorId' => Array(),
'StylesheetId' => Array('type' => 'int','not_null' => '1','default' => '0'),
'Name' => Array('type' => 'string','not_null' => '1','default' => '','required'=>1),
- 'SelectorName' => Array('type' => 'string','not_null' => '1','default' => ''),
+ 'SelectorName' => Array('type' => 'string','not_null' => '1','default' => '','required'=>1),
'SelectorData' => Array('not_null' => '1','default' => ''),
'Description' => Array('type' => 'string','not_null' => '1','default' => ''),
'Type' => Array('type' => 'int', 'formatter'=>'kOptionsFormatter', 'options'=>Array( STYLE_BASE => 'la_BaseSelectors', STYLE_BLOCK => 'la_BlockSelectors'), 'use_phrases' => 1, 'not_null' => '1','default' => '0'),
- 'ParentId' => Array('type' => 'int','not_null' => '1','default' => '0'),
+ 'ParentId' => Array('type' => 'int', 'formatter'=>'kOptionsFormatter', 'options'=>Array(0=>''), 'not_null' => '1','default' => '0'),
),
- 'VirtualFields' => Array(),
+ 'VirtualFields' => Array( ),
'Grids' => Array(
'Default' => Array(
Index: branches/unlabeled/unlabeled-1.1.2/core/units/selectors/selectors_item.php
===================================================================
diff -u
--- branches/unlabeled/unlabeled-1.1.2/core/units/selectors/selectors_item.php (revision 0)
+++ branches/unlabeled/unlabeled-1.1.2/core/units/selectors/selectors_item.php (revision 1421)
@@ -0,0 +1,25 @@
+GetDBField('SelectorData');
+ $ret = $this->GetDBField('Type') == STYLE_BASE ? '.' : '';
+
+ $ret .= $this->GetDBField('SelectorName')." {\n";
+ foreach($selector_data as $property_name => $property_value)
+ {
+ $ret .= "\t$property_name: $property_value;\n";
+ }
+ $ret .= $this->GetDBField('AdvancedCSS');
+ $ret .= "}\n";
+ return $ret;
+ }
+ }
+?>
\ No newline at end of file
Index: branches/unlabeled/unlabeled-1.1.2/core/units/stylesheets/stylesheets_event_handler.php
===================================================================
diff -u -r1412 -r1421
--- branches/unlabeled/unlabeled-1.1.2/core/units/stylesheets/stylesheets_event_handler.php (.../stylesheets_event_handler.php) (revision 1412)
+++ branches/unlabeled/unlabeled-1.1.2/core/units/stylesheets/stylesheets_event_handler.php (.../stylesheets_event_handler.php) (revision 1421)
@@ -8,34 +8,30 @@
*
* @param kEvent $event
*/
- function OnCompile(&$event)
+ function OnCompileStylesheet(&$event)
{
$this->Application->setUnitOption($event->Prefix,'AutoLoad',false);
$object =& $event->getObject();
- $this->StoreSelectedIDs($event);
+ $ids = explode(',', $this->Application->RecallVar($event->getPrefixSpecial().'_selected_ids') );
- $ids = $this->getSelectedIDs($event);
-
- $selectors =& $this->Application->recallObject('selectors','selectors_List',Array('skip_counting'=>true,'per_page'=>-1) );
-
$ret = '/* This file is generated automatically. Don\'t edit it manually ! */'."\n\n";
if($ids)
{
+ $selector_item =& $this->Application->recallObject('selectors.item', 'selectors');
+ $parent_field = $this->Application->getUnitOption($selector_item->Prefix,'ForeignKey');
+
+ $sql = 'SELECT '.$selector_item->IDField.' FROM '.$selector_item->TableName.' WHERE '.$parent_field.' = '.$id;
+ $selectors_ids = $this->Conn->GetCol($sql);
+
foreach($ids as $id)
{
$object->Load($id);
- $selectors->linkToParent('');
- $selectors->Query();
- $selectors->GoFirst();
-
- while( !$selectors->EOL() )
+ foreach($selectors_ids as $selector_id)
{
- $selector_name = $selectors->GetDBField('Name');
- $selector_data = $selectors->GetDBField('SelectorData');
- $ret .= $this->prepareSelector($selector_name, $selector_data);
- $selectors->GoNext();
+ $selector_item->Load($selector_id);
+ $ret .= $selector_item->CompileStyle()."\n";
}
$compile_ts = time();
@@ -58,21 +54,9 @@
}
}
}
- $this->clearSelectedIDs($event);
}
- function prepareSelector($selector_name, $selector_data)
- {
- if( IsSerialized($selector_data) ) $selector_data = unserialize($selector_data);
- $ret = '.'.$selector_name." {\n";
- foreach($selector_data as $property_name => $property_value)
- {
- $ret .= "\t$property_name: $property_value;\n";
- }
-
- $ret .= "}\n\n";
- return $ret;
- }
+
}
?>
\ No newline at end of file