Skip to content

Commit

Permalink
you can now edit css of the theme
Browse files Browse the repository at this point in the history
  • Loading branch information
Peter Ivanov committed Aug 28, 2013
1 parent 4df56a3 commit dc744ff
Show file tree
Hide file tree
Showing 37 changed files with 174 additions and 2,475 deletions.
37 changes: 36 additions & 1 deletion src/Microweber/Controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -683,6 +683,37 @@ public function index()
//as of aug 28
// $l = str_ireplace('<head>', '<head>' . $default_css, $l);
}



$custom_live_edit = TEMPLATE_DIR. DS . 'live_edit.css';

$custom_live_edit = normalize_path($custom_live_edit, false);
//d($custom_live_edit);
if (is_file($custom_live_edit)) {
$liv_ed_css = '<link rel="stylesheet" href="' . TEMPLATE_URL . 'live_edit.css" type="text/css" />';

$l = str_ireplace('</head>', $liv_ed_css.'</head>', $l);
}



















if ($is_editmode == true and $this->isolate_by_html_id == false and !isset($_REQUEST['isolate_content_field'])) {

if ($is_admin == true) {
Expand Down Expand Up @@ -712,7 +743,7 @@ public function index()
}


$custom_live_edit = TEMPLATES_DIR . DS . TEMPLATE_NAME . DS . 'live-edit.php';
$custom_live_edit = TEMPLATES_DIR . DS . TEMPLATE_NAME . DS . 'live_edit.php';
$custom_live_edit = normalize_path($custom_live_edit, false);
if (is_file($custom_live_edit)) {
$layout_live_edit = new $this->app->view($custom_live_edit);
Expand All @@ -725,6 +756,10 @@ public function index()
}






}
} else if ($is_editmode == false and $is_admin == true and isset($_SESSION) and !empty($_SESSION) and isset($_SESSION['back_to_editmode'])) {
if (!isset($_GET['isolate_content_field']) and !isset($_GET['content_id'])) {
Expand Down
13 changes: 12 additions & 1 deletion src/Microweber/Format.php
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,17 @@ public function clean_html($var, $do_not_strip_tags = false)
}


public function string_between($string, $start, $end)
{
$string = " " . $string;
$ini = strpos($string, $start);
if ($ini == 0) return "";
$ini += strlen($start);
$len = strpos($string, $end, $ini) - $ini;
return substr($string, $ini, $len);
}


public function replace_once($needle, $replace, $haystack)
{
// Looks for the first occurence of $needle in $haystack
Expand Down Expand Up @@ -310,7 +321,7 @@ public function random_color()
public function notif($text, $class = 'success')
{
$to_print = '<div class="mw-notification mw-' . $class . ' "><div class="mw-notification-text mw-open-module-settings">';
$to_print = $to_print. _e($text,true) . '</div></div>';
$to_print = $to_print . _e($text, true) . '</div></div>';

return $to_print;
}
Expand Down
161 changes: 37 additions & 124 deletions src/Microweber/Layouts.php
Original file line number Diff line number Diff line change
Expand Up @@ -463,19 +463,19 @@ function template_save_css($params)
if (is_string($params)) {
$params = parse_params($params);
}


$ref_page = false;
if (!isset($params['content_id'])) {
if (isset($_SERVER['HTTP_REFERER'])) {

$ref_page_url = $_SERVER['HTTP_REFERER'];
if ($ref_page_url != '') {
$ref_page = $this->app->content->get_by_url($ref_page_url, true);
$ref_page1 = $this->app->content->get_by_url($ref_page_url, true);
if (isset($ref_page1['id'])) {
$ref_page = $this->app->content->get_by_id(intval($ref_page1['id']));
}
}


}


} else {
$ref_page = $this->app->content->get_by_id(intval($params['content_id']));
}
Expand Down Expand Up @@ -505,144 +505,57 @@ function template_save_css($params)
$template = $save_page['active_site_template'];
}
$final_file_blocks = array();
if ($template != false) {
if (isset($params['selector'])) {
autoload_add(dirname(__FILE__) . DS . 'libs' . DS);


$template_folder = MW_TEMPLATES_DIR . $template . DS;
$live_edit_css = $template_folder . 'live_edit.css';

if (!is_file($live_edit_css)) {
touch($live_edit_css);
$sText = '';
} else {
$sText = file_get_contents($live_edit_css);
}


$sMyId = $params['selector'];
$oParser = new \Sabberworm\CSS\Parser($sText);
$oCss = $oParser->parse();


$selectors = $oCss->getAllRuleSets();
$sel_found = false;
foreach ($selectors as $oSelector) {

$curr_sel_sre = $oSelector->getSelector();
if ($template != false) {

if (!empty($curr_sel_sre)) {
foreach ($curr_sel_sre as $sel) {
$sel_str = $sel->__toString();
if (trim($sel_str) == trim($params['selector'])) {
$sel_found = true;
}
}
}
}
$template_folder = MW_TEMPLATES_DIR . $template . DS;
$live_edit_css = $template_folder . 'live_edit.css';
$fcont = '';
if (is_file($live_edit_css)) {
$fcont = file_get_contents($live_edit_css);
}

if ($sel_found == false) {
$new_decl = new \Sabberworm\CSS\RuleSet\DeclarationBlock();
$new_decl->setSelectors($params['selector']);
//$oCss->append($new_decl);
$selectors[] = $new_decl;
}
$css_cont = $fcont;
$css_cont_new = $css_cont;
foreach ($params as $item) {
if (isset($item['selector'])) {
$item["selector"] = str_ireplace('.element-current', '', $item["selector"]);

if (isset($params['clear'])) {

foreach ($selectors as $k => $oSelector) {
$sel = $item['selector'];
$css = $item["css"];
$delim = "\n /* $sel */ \n";
$item["css"] = str_ireplace('http://', '//', $item["css"]);
$item["css"] = str_ireplace('https://', '//', $item["css"]);

$curr_sel_sre = $oSelector->getSelector();
$is_existing = explode($delim, $css_cont_new);
if (!empty($is_existing)) {

if (!empty($curr_sel_sre)) {
foreach ($curr_sel_sre as $sel) {
$sel_str = $sel->__toString();
if (trim($sel_str) == trim($params['selector'])) {
unset($selectors[$k]);
}
}
$srings = $this->app->format->string_between($css_cont_new, $delim, $delim);
if ($srings != false) {
$css_cont_new = str_ireplace($srings, '', $css_cont_new);
$css_cont_new = str_ireplace($delim, '', $css_cont_new);
}
}

}


foreach ($selectors as $oSelector) {

$curr_sel_sre = $oSelector->getSelector();

if (!empty($curr_sel_sre)) {
foreach ($curr_sel_sre as $sel) {
$sel_str = $sel->__toString();
if (trim($sel_str) == trim($params['selector'])) {
$tmp = $oSelector->getRules();


//d($tmp);
$found_rule = false;
foreach ($tmp as $nazwa => $attrib) {

$rule = $attrib->getRule();
$rule_val = $attrib->getValue();

if (isset($params['rule']) and isset($params['rule_val'])) {
if ($rule == $params['rule']) {
$found_rule = 1;


$attrib->setValue($params['rule_val']);


}


}
//echo "<br>$rule:$rule_val;";
// echo "<br>$rule:$rule_val;";
$last = $attrib;
}
if ($found_rule == false and isset($params['rule']) and isset($params['rule_val'])) {
$new = new \Sabberworm\CSS\Rule\Rule($params['rule']);

$new->setRule($params['rule']);
$new->setValue($params['rule_val']);
$oSelector->addRule($new);
//$curr_sel_sre->add
}


}
}
}


// $rs = $oCss->getAllRuleSets($oSelector);
// d($rs);
//
//Loop over all selector parts (the comma-separated strings in a selector) and prepend the id
//$oSelector->setSelector($sMyId . ' ' . $oSelector->getSelector());
$str = $oSelector->__toString();
$final_file_blocks[] = $str;
$css_cont_new .= $delim;
$css_cont_new .= $sel . ' { ' . $item["css"] . ' }';
$css_cont_new .= $delim;
}


}

if (!empty($final_file_blocks) and isset($live_edit_css)) {
$cont = implode("\n", $final_file_blocks);
d($cont);
file_put_contents($live_edit_css, $cont);
if ($css_cont_new != '' and $css_cont != $css_cont_new) {
d($css_cont_new);
file_put_contents($live_edit_css, $css_cont_new);
}
//d($final_file_blocks);
}


// $save_page['url'] = $this->app->url->string(1);
// $save_page['title'] = $this->app->url->slug($this->app->url->string(1));
// $page_id = $this->save_content($save_page);
}


}


}
5 changes: 4 additions & 1 deletion src/Microweber/functions/common.php
Original file line number Diff line number Diff line change
Expand Up @@ -2328,4 +2328,7 @@ function html_cleanup($s, $tags = false)
}
}
return $s;
}
}



6 changes: 3 additions & 3 deletions src/Microweber/includes/api/api.js
Original file line number Diff line number Diff line change
Expand Up @@ -192,15 +192,15 @@ mw.askusertostay = false;
//handles
handles: {
module: "\
<div contenteditable='false' id='mw_handle_module' class='mw_master_handle mw-sorthandle mw-sorthandle-col mw-sorthandle-module'>\
<div contenteditable='false' id='mw_handle_module' class='mw-defaults mw_master_handle mw-sorthandle mw-sorthandle-col mw-sorthandle-module'>\
<div class='mw_col_delete mw_edit_delete_element'>\
<a class='mw_edit_btn mw_edit_delete right' href='javascript:void(0);' onclick='mw.drag.delete_element(mw.handle_module);return false;'><span></span></a>\
<a class='mw_edit_settings' href='javascript:void(0);' onclick='mw.drag.module_settings();return false;'><span class='mw-element-name-handle'></span></a>\
</div>\
<span title='Click to select this module.' class='mw-sorthandle-moveit'><?php _e("Move"); ?></span>\
</div>",
row: "\
<div contenteditable='false' class='mw_master_handle' id='mw_handle_row'>\
<div contenteditable='false' class='mw-defaults mw_master_handle' id='mw_handle_row'>\
<span title='<?php _e("Click to select this column"); ?>.' class='column_separator_title'><?php _e("Columns"); ?></span>\
<a href='javascript:;' onclick='event.preventDefault();mw.drag.create_columns(this,1);' class='mw-make-cols mw-make-cols-1 active' >1</a>\
<a href='javascript:;' onclick='event.preventDefault();mw.drag.create_columns(this,2);' class='mw-make-cols mw-make-cols-2' >2</a>\
Expand All @@ -210,7 +210,7 @@ mw.askusertostay = false;
<a class='mw_edit_delete mw_edit_btn right' onclick='mw.drag.delete_element(mw.handle_row);' href='javascript:;'><span></span></a>\
</div>",
element: "\
<div contenteditable='false' id='mw_handle_element' class='mw_master_handle mw-sorthandle mw-sorthandle-element'>\
<div contenteditable='false' id='mw_handle_element' class='mw-defaults mw_master_handle mw-sorthandle mw-sorthandle-element'>\
<div contenteditable='false' class='mw_col_delete mw_edit_delete_element'>\
<a contenteditable='false' class='mw_edit_btn mw_edit_delete' onclick='mw.drag.delete_element(mw.handle_element);'><span></span></a>\
</div>\
Expand Down

0 comments on commit dc744ff

Please sign in to comment.