Page MenuHomeIn-Portal Phabricator

in-portal
No OneTemporary

File Metadata

Created
Sun, Feb 2, 9:04 PM

in-portal

Index: branches/unlabeled/unlabeled-1.1.2/core/units/selectors/selectors_event_handler.php
===================================================================
--- branches/unlabeled/unlabeled-1.1.2/core/units/selectors/selectors_event_handler.php (revision 1422)
+++ branches/unlabeled/unlabeled-1.1.2/core/units/selectors/selectors_event_handler.php (revision 1423)
@@ -1,217 +1,222 @@
<?php
class SelectorsEventHandler extends InpDBEventHandler
{
/**
* Show base styles or block styles
*
* @param kEvent $event
*/
function SetCustomQuery(&$event)
{
$object =& $event->getObject();
switch ($event->Special)
{
case 'base':
$object->addFilter('type_filter', '%1$s.Type = 1');
break;
case 'block':
$object->addFilter('type_filter', '%1$s.Type = 2');
break;
}
}
/**
* Get's special of main item for linking with subitem
*
* @param kEvent $event
* @return string
*/
function getMainSpecial(&$event)
{
return '';
}
/**
* Save css-style name & description before opening css editor
*
* @param kEvent $event
*/
function OnOpenStyleEditor(&$event)
{
$this->SaveChanges($event);
$event->redirect = false;
}
/**
* Saves Changes to Item
*
* @param kEvent $event
*/
function SaveChanges(&$event)
{
$this->Application->setUnitOption($event->Prefix,'AutoLoad',false);
$object =& $event->getObject();
$items_info = $this->Application->GetVar( $event->getPrefixSpecial(true) );
if($items_info)
{
list($id,$field_values) = each($items_info);
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();
}
}
}
/**
* Save style changes from style editor
*
* @param kEvent $event
*/
function OnSaveStyle(&$event)
{
$this->SaveChanges($event);
$object =& $event->getObject();
$this->Application->SetVar($event->getPrefixSpecial().'_id', $object->GetId() );
$return_tpl = $object->GetDBField('Type') == 1 ? 'base_style_edit' : 'block_style_edit';
$this->finalizePopup($event, 'selectors.base','in-commerce/stylesheets/'.$return_tpl);
}
/**
* Extract styles
*
* @param kEvent $event
*/
function OnAfterItemLoad(&$event)
{
$object =& $event->getObject();
$selector_data = $object->GetDBField('SelectorData');
if($selector_data)
{
$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 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);
}
/**
* Unserialize data back when update was made
*
* @param kEvent $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]);
+ if( $base_selector_data[$prop_name] == $prop_value ) {
+ unset($selector_data[$prop_name]);
+ }
+ if( $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
Property changes on: branches/unlabeled/unlabeled-1.1.2/core/units/selectors/selectors_event_handler.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.1.2.5
\ No newline at end of property
+1.1.2.6
\ No newline at end of property
Index: branches/unlabeled/unlabeled-1.1.2/core/units/selectors/selectors_item.php
===================================================================
--- branches/unlabeled/unlabeled-1.1.2/core/units/selectors/selectors_item.php (revision 1422)
+++ branches/unlabeled/unlabeled-1.1.2/core/units/selectors/selectors_item.php (revision 1423)
@@ -1,27 +1,29 @@
<?php
class SelectorsItem extends kDBItem
{
/**
* Returns compiled selector for inserting into css file
*
* @return string
*/
function CompileStyle()
{
$selector_data = $this->GetDBField('SelectorData');
$ret = $this->GetDBField('Type') == STYLE_BASE ? '.' : '';
$ret .= $this->GetDBField('SelectorName')." {\n";
foreach($selector_data as $property_name => $property_value)
{
+ if ($property_value == '') continue;
$ret .= "\t$property_name: $property_value;\n";
}
+ $ret .= $this->GetDBField('AdvancedCSS')."\n";
$ret .= "}\n";
- $ret .= $this->GetDBField('AdvancedCSS')."\n";
+
return $ret;
}
}
?>
\ No newline at end of file
Property changes on: branches/unlabeled/unlabeled-1.1.2/core/units/selectors/selectors_item.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.1.2.2
\ No newline at end of property
+1.1.2.3
\ No newline at end of property
Index: branches/unlabeled/unlabeled-1.1.2/core/admin_templates/stylesheets/style_editor.tpl
===================================================================
--- branches/unlabeled/unlabeled-1.1.2/core/admin_templates/stylesheets/style_editor.tpl (revision 1422)
+++ branches/unlabeled/unlabeled-1.1.2/core/admin_templates/stylesheets/style_editor.tpl (revision 1423)
@@ -1,165 +1,175 @@
<inp2:m_set nobody="yes"/>
<inp2:m_include t="incs/header"/>
<body topmargin="0" leftmargin="8" marginheight="0" marginwidth="8" bgcolor="#FFFFFF">
<inp2:m_ParseBlock name="blue_bar" prefix="css" title_preset="style_edit" module="in-commerce" icon="icon46_style"/>
<script src="incs/colorselector.js" type="text/javascript" language="javascript"></script>
<style type="text/css">
.ColorBox
{
font-size: 1px;
border: #808080 1px solid;
width: 10px;
position: static;
height: 10px;
}
</style>
<!-- ToolBar --->
<table class="toolbar" height="30" cellspacing="0" cellpadding="0" width="100%" border="0">
<tbody>
<tr>
<td>
<script type="text/javascript">
a_toolbar = new ToolBar();
a_toolbar.AddButton( new ToolBarButton('select', '<inp2:m_phrase label="la_ToolTip_Save"/>', function() {
submit_event('selectors','OnSaveStyle');
}
) );
a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Cancel"/>', function() {
window.close();
}
) );
a_toolbar.Render();
function openColorSelector($e, $field)
{
var $div = document.getElementById('colorSelector_div');
var posx = 0;
var posy = 0;
if (!$e) var $e = window.event;
if ($e.pageX || $e.pageY)
{
posx = $e.pageX;
posy = $e.pageY;
}
else if ($e.clientX || $e.clientY)
{
posx = $e.clientX + document.body.scrollLeft;
posy = $e.clientY + document.body.scrollTop;
}
$div.style.left = posx;
$div.style.top = posy;
$div.style.display = 'block';
}
</script>
</td>
</tr>
</tbody>
</table>
<inp2:m_block name="inp_edit_color"/>
<script language="javascript">
$cs = new kColorSelector('<inp2:$prefix_InputName field="$field" subfield="$subfield"/>');
</script>
<tr class="<inp2:m_odd_even odd="table_color1" even="table_color2"/>">
<inp2:m_ParseBlock name="inp_edit_field_caption" prefix="$prefix" field="$field" title_phrase="$title_phrase" title="$title" is_last="$is_last"/>
<td>
<input type="text"
name="<inp2:$prefix_InputName field="$field" subfield="$subfield"/>"
id="<inp2:$prefix_InputName field="$field" subfield="$subfield"/>"
value="<inp2:$prefix_Field field="$field" subfield="$subfield"/>"
tabindex="<inp2:m_get param="tab_index"/>"
size="<inp2:m_param name="size"/>"
maxlength="<inp2:m_param name="maxlength"/>"
class="<inp2:m_param name="class"/>"
onkeypress="$cs.updateColor(event,'color_<inp2:$prefix_InputName field="$field" subfield="$subfield"/>')"
onblur="<inp2:m_Param name="onblur"/>">
<div id="color_<inp2:$prefix_InputName field="$field" subfield="$subfield"/>" style="display: inline; border: 1px solid #000000;" onclick="openColorSelector(event,'<inp2:$prefix_InputName field="$field" subfield="$subfield"/>');">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
</td>
<td class="error"><inp2:$prefix_Error field="$field"/>&nbsp;</td>
</tr>
<inp2:m_blockend/>
<table width="100%" border="0" cellspacing="0" cellpadding="4" class="tableborder">
<inp2:m_ParseBlock name="subsection" title="!la_FontAttributes!"/>
<inp2:m_ParseBlock name="inp_edit_color" prefix="selectors" field="SelectorData" subfield="color" title="!la_fld_FontColor!"/>
<inp2:m_ParseBlock name="inp_edit_box" prefix="selectors" field="SelectorData" subfield="font-size" title="!la_fld_FontSize!"/>
<inp2:m_ParseBlock name="inp_edit_box" prefix="selectors" field="SelectorData" subfield="font-style" title="!la_fld_FontStyle!"/>
+ <inp2:m_ParseBlock name="inp_edit_box" prefix="selectors" field="SelectorData" subfield="font-weight" title="!la_fld_FontWeight!"/>
+ <inp2:m_ParseBlock name="subsection" title="!la_BackgroundAndBorders!"/>
+ <inp2:m_ParseBlock name="inp_edit_box" prefix="selectors" field="SelectorData" subfield="background-color" title="!la_fld_BackgroundColor!"/>
+ <inp2:m_ParseBlock name="inp_edit_box" prefix="selectors" field="SelectorData" subfield="border" title="!la_fld_Border!"/>
+ <inp2:m_ParseBlock name="inp_edit_box" prefix="selectors" field="SelectorData" subfield="padding" title="!la_fld_Padding!"/>
+ <inp2:m_ParseBlock name="inp_edit_box" prefix="selectors" field="SelectorData" subfield="margin" title="!la_fld_Margins!"/>
+ <inp2:m_ParseBlock name="inp_edit_box" prefix="selectors" field="SelectorData" subfield="margin-top" title="!la_fld_MarginTop!"/>
+ <inp2:m_ParseBlock name="inp_edit_box" prefix="selectors" field="SelectorData" subfield="margin-right" title="!la_fld_MarginRight!"/>
+ <inp2:m_ParseBlock name="inp_edit_box" prefix="selectors" field="SelectorData" subfield="margin-bottom" title="!la_fld_MarginBottom!"/>
+ <inp2:m_ParseBlock name="inp_edit_box" prefix="selectors" field="SelectorData" subfield="margin-left" title="!la_fld_MarginLeft!"/>
</table>
<script language="javascript" type="text/javascript">
var $input_name = '<inp2:selectors_InputName field="SelectorData" subfield="color"/>';
var oTable = document.getElementById('colorSelector');
var iCounter = 0;
var aColors = '000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,808080,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF';
aColors = aColors.split(',');
function updateColor($event,$color_preview)
{
alert('e: '+$event+'; cp: '+$color_preview);
document.getElementById('color_'+$color_preview).style.backgroundColor = document.getElementById($color_preview).value;
}
function colorMouseOver($e)
{
if(!$e) $e = window.event;
//print_pre(this);
this.parentNode.style.backgroundColor = '#C8D3E2';
this.parentNode.style.borderColor = '#7196CC';
}
function colorMouseOut($e)
{
if(!$e) $e = window.event;
this.parentNode.style.backgroundColor = '#F6F6F6';
this.parentNode.style.borderColor = '#F6F6F6';
}
function colorClick($e)
{
if(!$e) $e = window.event;
var $color = aColors[ this.getAttribute('ColorIndex') ];
document.getElementById('color_'+$input_name).style.backgroundColor = $color;
document.getElementById($input_name).value = '#' + $color;
document.getElementById('colorSelector_div').style.display = 'none';
colorMouseOut($e);
}
while(iCounter < aColors.length)
{
var oRow=oTable.insertRow(-1);
for(var i=0; i<8 && iCounter < aColors.length; i++,iCounter++)
{
var $cell = document.createElement('TD');
$cell.innerHTML = '<div class="ColorBox" style="background-color: #'+aColors[iCounter]+'"></div>';
$cell.onmouseover = colorMouseOver;
$cell.onmouseout = colorMouseOut;
$cell.onclick = colorClick;
$cell.setAttribute('ColorIndex', iCounter);
var oDiv=oRow.insertCell(-1).appendChild($cell);
};
}
</script>
<inp2:m_include t="incs/footer"/>
\ No newline at end of file
Property changes on: branches/unlabeled/unlabeled-1.1.2/core/admin_templates/stylesheets/style_editor.tpl
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.1.2.2
\ No newline at end of property
+1.1.2.3
\ No newline at end of property

Event Timeline