Пример #1
0
 public function save_edit($post_data)
 {
     $is_module = false;
     $is_admin = $this->app->user_manager->is_admin();
     if ($post_data) {
         if (isset($post_data['json_obj'])) {
             $obj = json_decode($post_data['json_obj'], true);
             $post_data = $obj;
         }
         if (isset($post_data['mw_preview_only'])) {
             $is_no_save = true;
             unset($post_data['mw_preview_only']);
         }
         $is_no_save = false;
         $is_draft = false;
         if (isset($post_data['is_draft'])) {
             unset($post_data['is_draft']);
             $is_draft = 1;
         }
         $the_field_data_all = $post_data;
     } else {
         return array('error' => 'no POST?');
     }
     $ustr2 = $this->app->url_manager->string(1, 1);
     if (isset($ustr2) and trim($ustr2) == 'favicon.ico') {
         return false;
     }
     $ref_page = $ref_page_url = false;
     if (isset($_SERVER['HTTP_REFERER'])) {
         $ref_page = $ref_page_url = $_SERVER['HTTP_REFERER'];
     }
     if (isset($post_data['id']) and intval($post_data['id']) > 0) {
         $page_id = intval($post_data['id']);
     } elseif ($ref_page != '') {
         //removing hash from url
         if (strpos($ref_page_url, '#')) {
             $ref_page = $ref_page_url = substr($ref_page_url, 0, strpos($ref_page_url, '#'));
         }
         $ref_page2 = $ref_page = $this->get_by_url($ref_page_url);
         if ($ref_page2 == false) {
             $ustr = $this->app->url_manager->string(1);
             if ($this->app->modules->is_installed($ustr)) {
                 $ref_page = false;
             }
         } else {
             $ref_page = $ref_page2;
         }
         if (isset($ustr) and trim($ustr) == 'favicon.ico') {
             return false;
         } elseif ($ustr2 == '' or $ustr2 == '/') {
             $ref_page = $this->homepage();
             if ($ref_page_url) {
                 $page_url_ref = $this->app->url_manager->param('content_id', $ref_page_url);
                 if ($page_url_ref !== false) {
                     if ($page_url_ref == 0) {
                         return false;
                     }
                 }
             }
         }
         if ($ref_page == false) {
             $guess_page_data = new \Microweber\Controllers\DefaultController();
             // $guess_page_data =  new  $this->app->controller($this->app);
             $ref_page_url = strtok($ref_page_url, '?');
             $guess_page_data->page_url = $ref_page_url;
             $guess_page_data->return_data = true;
             $guess_page_data->create_new_page = true;
             $pd = $guess_page_data->index();
             $ustr = $this->app->url_manager->string(1);
             $is_module = false;
             $pd['url'] = $ustr;
             if (isset($pd['active_site_template']) and $pd['active_site_template'] == template_name()) {
                 $pd['active_site_template'] = '';
             }
             if ($this->app->modules->is_installed($ustr)) {
                 $is_module = true;
                 $save_page['layout_file'] = 'clean.php';
                 $save_page['subtype'] = 'module';
                 $hp_id = $this->app->content_manager->homepage();
                 if (isset($hp_id['id'])) {
                     $page_id = $hp_id['id'];
                 } else {
                     $page_id = 1;
                 }
                 $is_module = 1;
                 $save_page = false;
             }
             if ($is_admin == true and is_array($pd) and $is_module == false) {
                 $save_page = $pd;
                 if (!isset($_GET['mw_quick_edit'])) {
                     if (isset($ref_page_url) and $ref_page_url != false) {
                         $save_page['url'] = $ref_page_url;
                     } else {
                         $save_page['url'] = $this->app->url_manager->string(1);
                     }
                     $title = str_replace('%20', ' ', $this->app->url_manager->string(1));
                     if ($title == 'editor_tools/wysiwyg' or $title == 'api/module' or $title == 'admin/view:content') {
                         return false;
                     }
                     $save_page['title'] = $title;
                     if ($save_page['url'] == '' or $save_page['url'] == '/' or $save_page['url'] == $this->app->url_manager->site()) {
                         $save_page['url'] = 'home';
                         $home_exists = $this->homepage();
                         if ($home_exists == false) {
                             $save_page['is_home'] = 1;
                         }
                     }
                 }
                 if ($save_page['title'] == '') {
                     $save_page['title'] = 'Home';
                 }
                 if (!isset($save_page['is_active'])) {
                     $save_page['is_active'] = 1;
                 }
                 if (isset($save_page['content_type']) and $save_page['content_type'] == 'page') {
                     if (!isset($save_page['subtype'])) {
                         $save_page['subtype'] = 'static';
                         if (!isset($save_page['layout_file']) or $save_page['layout_file'] == false) {
                             $save_page['layout_file'] = 'inherit';
                         }
                     }
                 }
                 if ($save_page != false) {
                     $page_id = $this->save_content_admin($save_page);
                 }
             }
         } else {
             $page_id = $ref_page['id'];
             $ref_page['custom_fields'] = $this->custom_fields($page_id, false);
         }
     }
     $author_id = user_id();
     if ($is_admin == false and $page_id != 0 and $author_id != 0) {
         $page_data_to_check_author = $this->get_by_id($page_id);
         if (!isset($page_data_to_check_author['created_by']) or $page_data_to_check_author['created_by'] != $author_id) {
             return array('error' => 'You dont have permission to edit this content');
         }
     } else {
         if ($is_admin == false) {
             return array('error' => 'Not logged in as admin to use ' . __FUNCTION__);
         }
     }
     $save_as_draft = false;
     if (isset($post_data['save_draft'])) {
         $save_as_draft = true;
         unset($post_data['save_draft']);
     }
     $json_print = array();
     foreach ($the_field_data_all as $the_field_data) {
         $save_global = false;
         $save_layout = false;
         if (isset($page_id) and $page_id != 0 and !empty($the_field_data)) {
             $save_global = false;
             $content_id = $page_id;
             $url = $this->app->url_manager->string(true);
             $some_mods = array();
             if (isset($the_field_data) and is_array($the_field_data) and isset($the_field_data['attributes'])) {
                 if ($the_field_data['html'] != '') {
                     $field = false;
                     if (isset($the_field_data['attributes']['field'])) {
                         $field = trim($the_field_data['attributes']['field']);
                     }
                     if (isset($the_field_data['attributes']['data-field'])) {
                         $field = $the_field_data['attributes']['field'] = trim($the_field_data['attributes']['data-field']);
                     }
                     if ($field != false) {
                         $page_element_id = $field;
                     }
                     if (!isset($the_field_data['attributes']['rel'])) {
                         $the_field_data['attributes']['rel_type'] = 'content';
                     } else {
                         $the_field_data['attributes']['rel_type'] = $the_field_data['attributes']['rel'];
                     }
                     if (isset($the_field_data['attributes']['rel-id'])) {
                         $content_id = $the_field_data['attributes']['rel-id'];
                     } elseif (isset($the_field_data['attributes']['rel_id'])) {
                         $content_id = $the_field_data['attributes']['rel_id'];
                     } elseif (isset($the_field_data['attributes']['data-rel-id'])) {
                         $content_id = $the_field_data['attributes']['data-rel-id'];
                     } elseif (isset($the_field_data['attributes']['data-rel_id'])) {
                         $content_id = $the_field_data['attributes']['data-rel_id'];
                     }
                     $save_global = false;
                     if (isset($the_field_data['attributes']['rel_type']) and (trim($the_field_data['attributes']['rel_type']) == 'global' or trim($the_field_data['attributes']['rel_type'])) == 'module') {
                         $save_global = true;
                     } else {
                         $save_global = false;
                     }
                     if (isset($the_field_data['attributes']['rel_type']) and trim($the_field_data['attributes']['rel_type']) == 'layout') {
                         $save_global = false;
                         $save_layout = true;
                     } else {
                         $save_layout = false;
                     }
                     if (isset($the_field_data['attributes']['rel'])) {
                         $the_field_data['attributes']['rel_type'] = $the_field_data['attributes']['rel'];
                     }
                     if (!isset($the_field_data['attributes']['data-id'])) {
                         $the_field_data['attributes']['data-id'] = $content_id;
                     }
                     $save_global = 1;
                     if (isset($the_field_data['attributes']['rel_type']) and isset($the_field_data['attributes']['data-id'])) {
                         $rel_ch = trim($the_field_data['attributes']['rel_type']);
                         switch ($rel_ch) {
                             case 'content':
                                 $save_global = false;
                                 $save_layout = false;
                                 $content_id_for_con_field = $content_id = $the_field_data['attributes']['data-id'];
                                 break;
                             case 'page':
                             case 'post':
                                 $save_global = false;
                                 $save_layout = false;
                                 $content_id_for_con_field = $content_id = $page_id;
                                 break;
                             default:
                                 break;
                         }
                     }
                     $inh = false;
                     if (isset($the_field_data['attributes']['rel_type']) and $the_field_data['attributes']['rel_type'] == 'inherit') {
                         $save_global = false;
                         $save_layout = false;
                         $content_id = $page_id;
                         $inh = $this->get_inherited_parent($page_id);
                         if ($inh != false) {
                             $content_id_for_con_field = $content_id = $inh;
                         }
                     } else {
                         if (isset($the_field_data['attributes']['rel_type']) and $the_field_data['attributes']['rel_type'] == 'page') {
                             $save_global = false;
                             $save_layout = false;
                             $content_id = $page_id;
                             $check_if_page = $this->get_by_id($content_id);
                             if (is_array($check_if_page) and isset($check_if_page['content_type']) and isset($check_if_page['parent']) and $check_if_page['content_type'] != '' and intval($check_if_page['parent']) != 0 and $check_if_page['content_type'] != 'page') {
                                 $inh = $check_if_page['parent'];
                                 if ($inh != false) {
                                     $content_id_for_con_field = $content_id = $inh;
                                 }
                             }
                         }
                     }
                     $save_layout = false;
                     if (isset($post_data['id'])) {
                         $content_id_for_con_field = $post_data['id'];
                     } elseif ($inh == false and !isset($content_id_for_con_field)) {
                         if (is_array($ref_page) and isset($ref_page['parent']) and isset($ref_page['content_type']) and $ref_page['content_type'] == 'post') {
                             $content_id_for_con_field = intval($ref_page['parent']);
                         } else {
                             $content_id_for_con_field = intval($ref_page['id']);
                         }
                     }
                     $html_to_save = $the_field_data['html'];
                     $html_to_save = $content = mw()->parser->make_tags($html_to_save);
                     if ($save_global == false and $save_layout == false) {
                         if ($content_id) {
                             $for_histroy = $ref_page;
                             $old = false;
                             $field123 = str_ireplace('custom_field_', '', $field);
                             if (stristr($field, 'custom_field_')) {
                                 $old = $for_histroy['custom_fields'][$field123];
                             } else {
                                 if (isset($for_histroy['custom_fields'][$field123])) {
                                     $old = $for_histroy['custom_fields'][$field123];
                                 } elseif (isset($for_histroy[$field])) {
                                     $old = $for_histroy[$field];
                                 }
                             }
                             $history_to_save = array();
                             $history_to_save['table'] = 'content';
                             $history_to_save['id'] = $content_id;
                             $history_to_save['value'] = $old;
                             $history_to_save['field'] = $field;
                             $cont_field = array();
                             $cont_field['rel_type'] = 'content';
                             $cont_field['rel_id'] = $content_id_for_con_field;
                             $cont_field['value'] = $html_to_save;
                             $cont_field['field'] = $field;
                             if ($is_draft != false) {
                                 $cont_id = $content_id_for_con_field;
                                 $cont_field['is_draft'] = 1;
                                 $cont_field['rel_type'] = $rel_ch;
                                 $cont_field['url'] = $url;
                                 $to_save_draft = true;
                                 if (isset($cont_field['value'])) {
                                     $draftmd5 = md5($cont_field['value']);
                                     $draftmd5_last = $this->app->user_manager->session_get('content_draft_save_md5');
                                     if ($draftmd5_last == $draftmd5) {
                                         $to_save_draft = false;
                                     } else {
                                         $this->app->user_manager->session_set('content_draft_save_md5', $draftmd5);
                                     }
                                 }
                                 if ($to_save_draft) {
                                     $cont_field1 = $this->save_content_field($cont_field);
                                 }
                             } else {
                                 if ($field != 'content') {
                                     $cont_field1 = $this->save_content_field($cont_field);
                                 }
                             }
                             $this->app->event_manager->trigger('mw.content.save_edit', $cont_field);
                             $to_save = array();
                             $to_save['id'] = $content_id;
                             $is_native_fld = $this->app->database_manager->get_fields('content');
                             if (in_array($field, $is_native_fld)) {
                                 $to_save[$field] = $html_to_save;
                             }
                             if ($is_no_save != true and $is_draft == false) {
                                 $json_print[] = $to_save;
                                 $saved = $this->save_content_admin($to_save);
                             }
                         } else {
                             if (isset($category_id)) {
                                 print __FILE__ . __LINE__ . ' category is not implemented ... not ready yet';
                             }
                         }
                     } else {
                         $cont_field = array();
                         $cont_field['rel_type'] = $the_field_data['attributes']['rel_type'];
                         $cont_field['rel_id'] = 0;
                         if (isset($the_field_data['attributes']['rel-id'])) {
                             $cont_field['rel_id'] = $the_field_data['attributes']['rel-id'];
                         } elseif (isset($the_field_data['attributes']['rel_id'])) {
                             $cont_field['rel_id'] = $the_field_data['attributes']['rel_id'];
                         } elseif (isset($the_field_data['attributes']['data-rel-id'])) {
                             $cont_field['rel_id'] = $the_field_data['attributes']['data-rel-id'];
                         } elseif ($cont_field['rel_type'] != 'global' and isset($the_field_data['attributes']['content-id'])) {
                             $cont_field['rel_id'] = $the_field_data['attributes']['content-id'];
                         } elseif ($cont_field['rel_type'] != 'global' and isset($the_field_data['attributes']['data-id'])) {
                             $cont_field['rel_id'] = $the_field_data['attributes']['data-id'];
                         } elseif (isset($the_field_data['attributes']['data-rel_id'])) {
                             $cont_field['rel_id'] = $the_field_data['attributes']['data-rel_id'];
                         }
                         $cont_field['value'] = $this->app->parser->make_tags($html_to_save);
                         if ((!isset($the_field_data['attributes']['field']) or $the_field_data['attributes']['field'] == '') and isset($the_field_data['attributes']['data-field'])) {
                             $the_field_data['attributes']['field'] = $the_field_data['attributes']['data-field'];
                         }
                         $cont_field['field'] = $the_field_data['attributes']['field'];
                         if ($is_draft != false) {
                             $cont_field['is_draft'] = 1;
                             $cont_field['url'] = $this->app->url_manager->string(true);
                             $cont_field_new = $this->save_content_field($cont_field);
                         } else {
                             $cont_field_new = $this->save_content_field($cont_field);
                         }
                         if ($save_global == true and $save_layout == false) {
                             $json_print[] = $cont_field;
                             $history_to_save = array();
                             $history_to_save['table'] = 'global';
                             $history_to_save['value'] = $cont_field['value'];
                             $history_to_save['field'] = $field;
                             $history_to_save['page_element_id'] = $page_element_id;
                         }
                     }
                 }
             }
         }
     }
     if (isset($opts_saved)) {
         $this->app->cache_manager->delete('options');
     }
     return $json_print;
 }
Пример #2
0
     $name or exit('0');
     $name = convert($name, 'UTF-8', DT_CHARSET);
     template_name($fileid, $name);
     exit('1');
     break;
 case 'download':
     $fileid or msg();
     $file_ext = $bakid ? '.' . $bakid . '.bak' : '.htm';
     file_down($template_root . '/' . $fileid . $file_ext);
     break;
 case 'delete':
     $fileid or msg();
     $file_ext = $bakid ? '.' . $bakid . '.bak' : '.htm';
     file_del($template_root . '/' . $fileid . $file_ext);
     if (!$bakid) {
         template_name();
     }
     dmsg('删除成功', $this_forward);
     break;
 case 'cache':
     cache_clear('php', 'dir', 'tpl');
     dmsg('更新成功', $this_forward);
     break;
 default:
     $dirs = $files = $templates = $baks = array();
     if (substr($template_root, -1) != '/') {
         $template_root .= '/';
     }
     $files = glob($template_root . '*');
     if (!$files) {
         msg('模板文件不存在,请先创建', "?file={$file}&action=add&dir={$dir}");
Пример #3
0
                $possible_dir = normalize_path($possible_dir, false);
                ?>
                        <?php 
                if (is_dir($possible_dir)) {
                    ?>
                            <?php 
                    $options = array();
                    $options['for_modules'] = 1;
                    $options['path'] = $possible_dir;
                    $templates = mw()->layouts_manager->get_all($options);
                    ?>
                            <?php 
                    if (is_array($templates)) {
                        ?>
                                <?php 
                        if ($site_template['dir_name'] == template_name()) {
                            ?>
                                    <optgroup label="<?php 
                            print $site_template['name'];
                            ?>
">
                                        <?php 
                            foreach ($templates as $item) {
                                ?>
                                            <?php 
                                if (strtolower($item['name']) != 'default') {
                                    ?>
                                                <?php 
                                    $opt_val = $site_template['dir_name'] . '/' . 'modules/' . $mod_name . $item['layout_file'];
                                    ?>
                                                <?php 
Пример #4
0
?>
"
             name="headerbg"
             id="headerbg"
             data-property="color" />

<?php 
/*
   <select id="mw_set_template_style">
	  <option value="css/styles/spacelab.css">spacelab</option>
	  <option value="css/styles/superhero.css">superhero</option>
	  	  <option value="css/styles/amelia.css">superhero</option>

	  </select>

	  <input type="text"
             class="tpl-field"
             data-selector="@import"
             value = "<?php if(isset($data['import']) and isset($data['import']['value'])){ print $data['import']['value']; } ?>"
             name="import"
             id="import_css"
             />*/
?>
<div class="mw_clear"></div>
<br />
<module type="content/views/layout_selector_custom_css" template="<?php 
print template_name();
?>
" />