function settings_form() { global $user; global $DB; $navibars = new navibars(); $naviforms = new naviforms(); $navibars->title(t(14, 'Settings')); $navibars->add_actions('<a href="#" onclick="navigate_tabform_submit(0);"><img height="16" align="absmiddle" width="16" src="img/icons/silk/accept.png"> ' . t(34, 'Save') . '</a>'); $navibars->form(); $navibars->add_tab(t(43, "General")); $navibars->add_tab_content($naviforms->hidden('form-sent', 'true')); $navibars->add_tab_content_row(array('<label>ID</label>', '<span>' . $user->id . '</span>')); $navibars->add_tab_content_row(array('<label>' . t(1, 'User') . '</label>', '<span>' . $user->username . '</span>')); $navibars->add_tab_content_row(array('<label>' . t(2, 'Password') . '</label>', '<input type="password" name="user-password" value="" size="32" />', '<span class="navigate-form-row-info">' . t(48, "Leave blank to keep the current value") . '</span>')); $navibars->add_tab_content_row(array('<label>' . t(44, 'E-Mail') . '</label>', $naviforms->textfield('user-email', $user->email))); if ($user->profile == 1 && false) { // Profile selector $DB->query('SELECT id, name FROM nv_profiles'); $data = $DB->result(); $select = $naviforms->select_from_object_array('user-profile', $data, 'id', 'name', $user->profile); $navibars->add_tab_content_row(array('<label>' . t(45, 'Profile') . '</label>', $select)); } else { $user_profile_name = $DB->query_single('name', 'nv_profiles', ' id = ' . intval($user->profile)); $navibars->add_tab_content_row(array('<label>' . t(45, 'Profile') . '</label>', '<span>' . $user_profile_name . '</span>')); } // Language selector $DB->query('SELECT code, name FROM nv_languages WHERE nv_dictionary != ""'); $data = $DB->result(); $select = $naviforms->select_from_object_array('user-language', $data, 'code', 'name', $user->language); $navibars->add_tab_content_row(array('<label>' . t(46, 'Language') . '</label>', $select)); $timezones = property::timezones(); if (empty($user->timezone)) { $user->timezone = date_default_timezone_get(); } $navibars->add_tab_content_row(array('<label>' . t(97, 'Timezone') . '</label>', $naviforms->selectfield("user-timezone", array_keys($timezones), array_values($timezones), $user->timezone))); // Decimal separator $data = array(0 => json_decode('{"code": ",", "name": ", ---> 1234,25"}'), 1 => json_decode('{"code": ".", "name": ". ---> 1234.25"}'), 2 => json_decode('{"code": "\'", "name": "\' ---> 1234\'25"}')); $select = $naviforms->select_from_object_array('user-decimal_separator', $data, 'code', 'name', $user->decimal_separator); $navibars->add_tab_content_row(array('<label>' . t(49, 'Decimal separator') . '</label>', $select)); // Date format $data = array(0 => json_decode('{"code": "Y-m-d H:i", "name": "' . date(Y) . '-12-31 23:59"}'), 1 => json_decode('{"code": "d-m-Y H:i", "name": "31-12-' . date(Y) . ' 23:59"}'), 2 => json_decode('{"code": "m-d-Y H:i", "name": "12-31-' . date(Y) . ' 23:59"}'), 3 => json_decode('{"code": "Y/m/d H:i", "name": "' . date(Y) . '/12/31 23:59"}'), 4 => json_decode('{"code": "d/m/Y H:i", "name": "31/12/' . date(Y) . ' 23:59"}'), 5 => json_decode('{"code": "m/d/Y H:i", "name": "12/31/' . date(Y) . ' 23:59"}')); $select = $naviforms->select_from_object_array('user-date_format', $data, 'code', 'name', $user->date_format); $navibars->add_tab_content_row(array('<label>' . t(50, 'Date format') . '</label>', $select)); return $navibars->generate(); }
function items_form($item) { global $user; global $DB; global $website; global $layout; global $theme; global $events; global $current_version; $navibars = new navibars(); $naviforms = new naviforms(); $layout->navigate_media_browser(); // we can use media browser in this function $extra_actions = array(); if (empty($item->id)) { $navibars->title(t(22, 'Items') . ' / ' . t(38, 'Create')); } else { $navibars->title(t(22, 'Items') . ' / ' . t(170, 'Edit') . ' [' . $item->id . ']'); } $navibars->add_actions(array('<a href="#" onclick="javascript: navigate_media_browser();" title="Ctrl+M"> <img height="16" align="absmiddle" width="16" src="img/icons/silk/images.png"> ' . t(36, 'Media') . ' </a>')); if (empty($item->id)) { $navibars->add_actions(array($user->permission('items.create') == 'true' ? '<a href="#" onclick="navigate_items_tabform_submit(1);" title="Ctrl+S"> <img height="16" align="absmiddle" width="16" src="img/icons/silk/accept.png"> ' . t(34, 'Save') . ' </a>' : "")); } else { $navibars->add_actions(array($user->permission('items.edit') == 'true' || $item->author == $user->id ? '<a href="#" onclick="navigate_items_tabform_submit(1);" title="Ctrl+S"> <img height="16" align="absmiddle" width="16" src="img/icons/silk/accept.png"> ' . t(34, 'Save') . ' </a>' : "", $user->permission("items.delete") == 'true' ? '<a href="#" onclick="navigate_delete_dialog();"> <img height="16" align="absmiddle" width="16" src="img/icons/silk/cancel.png"> ' . t(35, 'Delete') . ' </a>' : "")); $extra_actions[] = '<a href="#" onclick="navigate_items_preview();"><img height="16" align="absmiddle" width="16" src="img/icons/silk/monitor.png"> ' . t(274, 'Preview') . '</a>'; if ($user->permission("items.create") != 'false') { $extra_actions[] = '<a href="?fid=items&act=duplicate&id=' . $item->id . '"><img height="16" align="absmiddle" width="16" src="img/icons/silk/page_copy.png"> ' . t(477, 'Duplicate') . '</a>'; } $layout->add_script(' function navigate_delete_dialog() { navigate_confirmation_dialog( function() { window.location.href = "?fid=items&act=delete&id=' . $item->id . '"; }, null, null, "' . t(35, 'Delete') . '" ); } '); } if (!empty($item->id)) { $notes = grid_notes::comments('item', $item->id); $navibars->add_actions(array('<a href="#" onclick="javascript: navigate_display_notes_dialog();"> <span class="navigate_grid_notes_span" style=" width: 20px; line-height: 16px; ">' . count($notes) . '</span> <img src="img/skins/badge.png" width="20px" height="18px" style="margin-top: -2px;" class="grid_note_edit" align="absmiddle" /> ' . t(168, 'Notes') . ' </a>')); } if (!empty($item->id)) { // we attach an event to "items" which will be fired by navibars to put an extra button $events->add_actions('items', array('item' => &$item, 'navibars' => &$navibars), $extra_actions); } if (!empty($item->id)) { $layout->navigate_notes_dialog('item', $item->id); } $navibars->add_actions(array(!empty($item->id) ? '<a href="?fid=items&act=edit"><img height="16" align="absmiddle" width="16" src="img/icons/silk/add.png"> ' . t(38, 'Create') . '</a>' : '', '<a href="?fid=items&act=list"><img height="16" align="absmiddle" width="16" src="img/icons/silk/application_view_list.png"> ' . t(39, 'List') . '</a>', 'search_form')); // languages $ws_languages = $website->languages(); $navibars->form('', 'fid=items&act=edit&id=' . $item->id); $layout->add_script("\r\n \$(document).on('keydown.ctrl_s', function (evt) { navigate_items_tabform_submit(1); return false; } );\r\n \$(document).on('keydown.ctrl_m', function (evt) { navigate_media_browser(); return false; } );\r\n "); $layout->add_script(' var template_sections = []; '); $navibars->add_tab(t(43, "Main")); // tab #0 $navibars->add_tab_content($naviforms->hidden('form-sent', 'true')); $navibars->add_tab_content($naviforms->hidden('id', $item->id)); $navibars->add_tab_content_row(array('<label>ID</label>', '<span>' . (!empty($item->id) ? $item->id : t(52, '(new)')) . '</span>')); if (empty($item->id)) { $item->date_to_display = core_time(); } $navibars->add_tab_content_row(array('<label>' . t(551, 'Date to display') . '</label>', $naviforms->datefield('date_to_display', $item->date_to_display, true))); $navibars->add_tab_content_row(array('<label>' . t(85, 'Date published') . '</label>', $naviforms->datefield('date_published', $item->date_published, true))); $navibars->add_tab_content_row(array('<label>' . t(90, 'Date unpublished') . '</label>', $naviforms->datefield('date_unpublish', $item->date_unpublish, true))); $navibars->add_tab_content_row(array('<label>' . t(364, 'Access') . '</label>', $naviforms->selectfield('access', array(0 => 0, 1 => 2, 2 => 1, 3 => 3), array(0 => t(254, 'Everybody'), 1 => t(362, 'Not signed in'), 2 => t(361, 'Web users only'), 3 => t(512, 'Selected web user groups')), $item->access, 'navigate_webuser_groups_visibility($(this).val());', false, array(1 => t(363, 'Users who have not yet signed in'))))); $webuser_groups = webuser_group::all_in_array(); $navibars->add_tab_content_row(array('<label>' . t(506, "Groups") . '</label>', $naviforms->multiselect('groups', array_keys($webuser_groups), array_values($webuser_groups), $item->groups)), 'webuser-groups-field'); $layout->add_script(' function navigate_webuser_groups_visibility(access_value) { if(access_value==3) $("#webuser-groups-field").show(); else $("#webuser-groups-field").hide(); } navigate_webuser_groups_visibility(' . $item->access . '); '); $permission_options = array(0 => t(69, 'Published'), 1 => t(70, 'Private'), 2 => t(81, 'Hidden')); if ($user->permission("items.publish") == 'false') { if (!isset($item->permission)) { $item->permission = 1; } $navibars->add_tab_content_row(array('<label>' . t(68, 'Status') . '</label>', $permission_options[$item->permission], $naviforms->hidden("permission", $item->permission))); } else { $navibars->add_tab_content_row(array('<label>' . t(68, 'Status') . '</label>', $naviforms->selectfield('permission', array_keys($permission_options), array_values($permission_options), $item->permission, '', false, array(0 => t(360, 'Visible to everybody'), 1 => t(359, 'Visible only to Navigate CMS users'), 2 => t(358, 'Hidden to everybody'))), '<span id="status_info" class="ui-icon ui-icon-alert" data-message="' . t(618, 'Change the status to Published to see the item on the future publication date currently assigned', false, true) . '" style="display: none; float: none; vertical-align: middle; "></span>')); } if (empty($item->id)) { $item->author = $user->id; } $author_webuser = $DB->query_single('username', 'nv_users', ' id = ' . $item->author); $navibars->add_tab_content($naviforms->hidden('item-author', $item->author)); $navibars->add_tab_content_row(array('<label>' . t(266, 'Author') . '</label>', $naviforms->textfield('item-author-text', $author_webuser))); // script#1 if ($item->date_modified > 0) { $navibars->add_tab_content_row(array('<label>' . t(227, 'Date modified') . '</label>', core_ts2date($item->date_modified, true))); } if ($item->date_created > 0) { $navibars->add_tab_content_row(array('<label>' . t(226, 'Date created') . '</label>', core_ts2date($item->date_created, true))); } $navibars->add_tab_content_row(array('<label>' . t(280, 'Page views') . '</label>', $item->views), "div_page_views"); $navibars->add_tab(t(87, "Association")); // tab #1 $navibars->add_tab_content_row(array('<label>' . t(87, "Association") . '</label>', $naviforms->buttonset('association', array('free' => t(100, 'Free'), 'category' => t(78, 'Category')), empty($item->id) ? 'category' : $item->association, "navigate_change_association(this);"))); $hierarchy = structure::hierarchy(0); $categories_list = structure::hierarchyList($hierarchy, $item->category); if (empty($categories_list)) { $categories_list = '<ul><li value="0">' . t(428, '(no category)') . '</li></ul>'; } $navibars->add_tab_content_row(array('<label>' . t(78, 'Category') . '</label>', $naviforms->dropdown_tree('category', $categories_list, $item->category, 'navigate_item_category_change')), 'div_category_tree'); $layout->add_script(' function navigate_item_category_change(id) { $.ajax( { url: NAVIGATE_APP + "?fid=" + navigate_query_parameter("fid") + "&act=96&id=" + id, dataType: "json", data: {}, success: function(data, textStatus, xhr) { item_category_path = data; } }); } '); $navibars->add_tab_content_row(array('<label>' . t(162, 'Embedding') . '</label>', $naviforms->buttonset('embedding', array('1' => t(163, 'Embedded'), '0' => t(164, 'Own path')), empty($item->id) ? '1' : intval($item->embedding), "navigate_change_association();"), '<span id="embedding_info" class="ui-icon ui-icon-info" data-message-title-1="' . t(163, 'Embedded', false, true) . '" data-message-content-1="' . t(165, 'Full content is shown on category page. Ex. "Who we are?"', false, true) . '" data-message-title-2="' . t(164, 'Own path', false, true) . '" data-message-content-2="' . t(166, 'The content is accessed through its own url. Ex. "News"', false, true) . '" style="float: left; margin-left: -4px;"> </span>'), 'div_category_embedded'); $navibars->add_tab_content_row(array('<label>' . t(22, 'Elements') . '</label>', '<button style="float: left;">' . t(171, 'Order') . '</button>', '<span id="order_info" class="ui-icon ui-icon-info" data-message="' . t(425, 'Order elements of a category (unless the template forces other sorting)', false, true) . '" style="float: left; margin-left: 2px;"> </span>', '<div id="items_order_window" style="display: none;"></div>'), 'div_category_order'); $layout->add_script(' $("#div_category_order button").button( { icons: { primary: "ui-icon-arrowthick-2-n-s" } }).on("click", function(e) { e.stopPropagation(); e.preventDefault(); navigate_status(navigate_t(6, "Loading") + "...", "loader"); $("#items_order_window").load("?fid=items&act=items_order&category=" + $("#category").val() + "&_bogus=" + new Date().getTime(), function() { navigate_status(navigate_t(42, "Ready"), "ready"); $("#items_order_window").dialog({ modal: true, title: "' . t(171, 'Order') . '", width: 600, height: 500, buttons: { "' . t(58, 'Cancel') . '": function() { $(this).dialog("destroy"); }, "' . t(190, 'Ok') . '": function() { var dialog = this; // save $.post( "?fid=items&act=items_order&category=" + $("#category").val() + "&_bogus=" + new Date().getTime(), { "items-order": $("#items-order").val() }, function(response) { if(response=="true") { $(dialog).dialog("destroy"); } else { $("<div>"+response+"</div>").dialog({ modal: true, title: "' . t(56, "Unexpected error") . '" }); } } ); } } }); }); }); '); $templates = template::elements('element'); $template_select = $naviforms->select_from_object_array('template', $templates, 'id', 'title', $item->template); $navibars->add_tab_content_row(array('<label>' . t(79, 'Template') . '</label>', $template_select, '<span id="template_info" class="ui-icon ui-icon-alert" data-message="' . t(619, "Template changed, please Save now to see the changes in the next tabs", false, true) . '" style="display: none; float: none; vertical-align: middle; "></span>'), 'div_template_select'); $layout->add_script(' var last_check = []; var active_languages = ["' . implode('", "', array_keys($ws_languages)) . '"]; $("#div_template_select").hide(); '); // script#3 if (!empty($item->id)) { $navibars->add_tab(t(9, "Content")); // tab #2 $navibars->add_tab_content_row(array('<label>' . t(63, 'Languages') . '</label>', $naviforms->buttonset('language_selector', $ws_languages, $website->languages_list[0], "navigate_items_select_language(this);"))); $template = $item->load_template(); $translate_extensions = extension::list_installed('translate', false); foreach ($website->languages_list as $lang) { $navibars->add_tab_content('<div class="language_fields" id="language_fields_' . $lang . '" style=" display: none; ">'); $navibars->add_tab_content_row(array('<label>' . t(67, 'Title') . '</label>', $naviforms->textfield('title-' . $lang, @$item->dictionary[$lang]['title']))); $open_live_site = ''; if (!empty($item->paths[$lang])) { $open_live_site = ' <a target="_blank" href="' . $website->absolute_path(true) . $item->paths[$lang] . '"><img src="img/icons/silk/world_go.png" align="absmiddle" /></a>'; } $navibars->add_tab_content_row(array('<label>' . t(75, 'Path') . $open_live_site . '</label>', $naviforms->textfield('path-' . $lang, @$item->paths[$lang], NULL, 'navigate_items_path_check(this, event);'), '<span> </span>'), 'div_path_' . $lang); if (!isset($template->sections)) { $template->sections[] = array(0 => array('id' => 'main', 'name' => '#main#', 'editor' => 'tinymce', 'width' => '960px')); } if (!is_array($template->sections)) { $template->sections = array(); } // compatibility fix: auto-correct template sections with missing ID (only "code" provided) for ($s = 0; $s < count($template->sections); $s++) { if (!isset($template->sections[$s]['id'])) { $template->sections[$s]['id'] = $template->sections[$s]['code']; } } foreach ($template->sections as $section) { if (is_object($section)) { $section = (array) $section; } // ignore empty sections if (empty($section)) { continue; } if ($section['editor'] == 'tinymce') { $translate_menu = ''; if (!empty($translate_extensions)) { $translate_extensions_titles = array(); $translate_extensions_actions = array(); foreach ($translate_extensions as $te) { if ($te['enabled'] == '0') { continue; } $translate_extensions_titles[] = $te['title']; $translate_extensions_actions[] = 'javascript: navigate_tinymce_translate_' . $te['code'] . '(\'section-' . $section['id'] . '-' . $lang . '\', \'' . $lang . '\');'; } if (!empty($translate_extensions_actions)) { $translate_menu = $naviforms->splitbutton('translate_' . $lang, '<img src="img/icons/silk/comment.png" align="absmiddle"> ' . t(188, 'Translate'), $translate_extensions_actions, $translate_extensions_titles); } } $navibars->add_tab_content_row(array('<label>' . template::section_name($section['name']) . '<span class="editor_selector" for="section-' . $section['id'] . '-' . $lang . '">' . '<i class="fa fa-border fa-fw fa-lg fa-file-text-o active" data-action="tinymce" title="' . t(614, "Edit with TinyMCE") . '"></i> ' . '<i class="fa fa-border fa-fw fa-lg fa-code" data-action="html" title="' . t(615, "Edit as source code") . '"></i> ' . '<i class="fa fa-border fa-fw fa-lg fa-eraser" data-action="clear" title="' . t(208, "Remove all content") . '"></i>' . '</span>' . '</label>', $naviforms->editorfield('section-' . $section['id'] . '-' . $lang, @$item->dictionary[$lang]['section-' . $section['id']], $section['width'] + 48 . 'px', $lang), '<div style="clear:both; margin-top:5px; float:left; margin-bottom: 10px;">', '<label> </label>', $translate_menu, '<button onclick="navigate_items_copy_from_dialog(\'section-' . $section['id'] . '-' . $lang . '\'); return false;"><img src="img/icons/silk/page_white_copy.png" align="absmiddle"> ' . t(189, 'Copy from') . '...</button> ', '<button onclick="navigate_items_copy_from_history_dialog(\'section-' . $section['id'] . '-' . $lang . '\', \'' . $section['id'] . '\', \'' . $lang . '\', \'' . $section['editor'] . '\'); return false;"><img src="img/icons/silk/time_green.png" align="absmiddle"> ' . t(40, 'History') . '</button> ', !empty($theme->content_samples) ? '<button onclick="navigate_items_copy_from_theme_samples(\'section-' . $section['id'] . '-' . $lang . '\', \'' . $section['id'] . '\', \'' . $lang . '\', \'' . $section['editor'] . '\'); return false;"><img src="img/icons/silk/rainbow.png" align="absmiddle"> ' . t(553, 'Fragments') . ' | ' . $theme->title . '</button> ' : '', '</div>', '<br />'), '', 'lang="' . $lang . '"'); } else { if ($section['editor'] == 'html') { $navibars->add_tab_content_row(array('<label>' . template::section_name($section['name']) . '</label>', $naviforms->scriptarea('section-' . $section['id'] . '-' . $lang, @$item->dictionary[$lang]['section-' . $section['id']], 'html', ' width: ' . $section['width'] . 'px'), '<div style="clear:both; margin-top:5px; float:left; margin-bottom: 10px;">', '<label> </label>', '<button onclick="navigate_items_copy_from_history_dialog(\'section-' . $section['id'] . '-' . $lang . '\', \'' . $section['id'] . '\', \'' . $lang . '\', \'' . $section['editor'] . '\'); return false;"><img src="img/icons/silk/time_green.png" align="absmiddle"> ' . t(40, 'History') . '</button> ', !empty($theme->content_samples) ? '<button onclick="navigate_items_copy_from_theme_samples(\'section-' . $section['id'] . '-' . $lang . '\', \'' . $section['id'] . '\', \'' . $lang . '\', \'' . $section['editor'] . '\'); return false;"><img src="img/icons/silk/rainbow.png" align="absmiddle"> ' . t(553, 'Fragments') . ' | ' . $theme->title . '</button> ' : '', '</div>', '<br />'), '', 'lang="' . $lang . '"'); } else { $translate_menu = ''; if (!empty($translate_extensions)) { $translate_extensions_titles = array(); $translate_extensions_actions = array(); foreach ($translate_extensions as $te) { if ($te['enabled'] == '0') { continue; } $translate_extensions_titles[] = $te['title']; $translate_extensions_actions[] = 'javascript: navigate_textarea_translate_' . $te['code'] . '(\'section-' . $section['id'] . '-' . $lang . '\', \'' . $lang . '\');'; } if (!empty($translate_extensions_actions)) { $translate_menu = $naviforms->splitbutton('translate_' . $lang, '<img src="img/icons/silk/comment.png" align="absmiddle"> ' . t(188, 'Translate'), $translate_extensions_actions, $translate_extensions_titles); } } $navibars->add_tab_content_row(array('<label>' . template::section_name($section['name']) . '</label>', $naviforms->textarea('section-' . $section['id'] . '-' . $lang, @$item->dictionary[$lang]['section-' . $section['id']], 8, 48, ' width: ' . $section['width'] . 'px'), '<div style="clear:both; margin-top:5px; margin-bottom: 10px; ">', '<label> </label>', $translate_menu, '<button onclick="navigate_items_copy_from_history_dialog(\'section-' . $section['id'] . '-' . $lang . '\', \'' . $section['id'] . '\', \'' . $lang . '\', \'' . $section['editor'] . '\'); return false;"><img src="img/icons/silk/time_green.png" align="absmiddle"> ' . t(40, 'History') . '</button> ', !empty($theme->content_samples) ? '<button onclick="navigate_items_copy_from_theme_samples(\'section-' . $section['id'] . '-' . $lang . '\', \'' . $section['id'] . '\', \'' . $lang . '\', \'' . $section['editor'] . '\'); return false;"><img src="img/icons/silk/rainbow.png" align="absmiddle"> ' . t(553, 'Fragments') . ' | ' . $theme->title . '</button> ' : '', '</div>'), '', 'lang="' . $lang . '"'); } } } if ($template->tags == 1 || $template->tags == 'true') { $tags_copy_select = ''; $tags_copy_select_pre = ''; $tags_copy_select_after = ''; // allow copying tags between languages? if (count($website->languages_list) > 1) { $tags_copy_select = $naviforms->selectfield('', array_keys($ws_languages), array_values($ws_languages), '', '', false, '', ' width: auto; position: absolute; margin-top: 1px; ', false); $tags_copy_select = ' <div style=" position: relative; margin-left: 600px; margin-top: -57px; width: 200px; height: 68px; "> <a href="#" class="uibutton" title="' . t(189, "Copy from") . '…" onclick=" navigate_items_tags_copy_from_language($(this).next().val(), \'' . $lang . '\'); return false; "> <img src="img/icons/silk/page_white_copy.png" width="16" height="16" align="absmiddle" style=" cursor: pointer; " /> </a> ' . $tags_copy_select . ' </div> '; } $tags_top_list = ' <div style=" position: relative; margin-left: 600px; margin-top: -93px; width: 200px; height: 92px; "> <a href="#" class="uibutton" onclick=" navigate_items_tags_ranking(\'' . $lang . '\', this); return false; "> <img src="img/icons/silk/award_star_gold_3.png" width="16" height="16" align="absmiddle" style=" cursor: pointer; " /> ' . t(613, "Most used") . ' </a> </div> '; $navibars->add_tab_content_row(array('<label>' . t(265, 'Tags') . '</label>', $naviforms->textfield('tags-' . $lang, @$item->dictionary[$lang]['tags']), $tags_top_list, $tags_copy_select)); } $layout->add_script(' $("#tags-' . $lang . '").tagit({ removeConfirmation: true, allowSpaces: true, singleField: true, singleFieldDelimiter: ",", placeholderText: "+", autocomplete: { delay: 0, minLength: 1, source: "?fid=items&act=json_tags_search&lang=' . $lang . '" }, afterTagAdded: function(event, ui) { var tags = $(this).tagit("assignedTags"); if(tags.length > 0) tags = tags.join(","); else tags = ""; $("#tags-' . $lang . '") .val(tags) .trigger("change"); }, afterTagRemoved: function(event, ui) { var tags = $(this).tagit("assignedTags"); if(tags.length > 0) tags = tags.join(","); else tags = ""; $("#tags-' . $lang . '") .val(tags) .trigger("change"); } }); $("#tags-' . $lang . '").next().sortable({ items: ">li:not(.tagit-new)", update: function(ui, event) { var tags = []; $("#tags-' . $lang . '").next().find("span.tagit-label").each(function() { if($(this).text() != "") tags.push($(this).text()); }); if(tags.length > 0) tags = tags.join(","); else tags = ""; $("#tags-' . $lang . '").val(tags); $("#tags-' . $lang . '").trigger("change"); } }); '); // script#4 $navibars->add_tab_content('</div>'); } // translate content_samples titles if (is_array($theme->content_samples)) { for ($i = 0; $i < count($theme->content_samples); $i++) { $theme->content_samples[$i]->title = $theme->t($theme->content_samples[$i]->title); } } $layout->add_script(' var template_sections = ' . json_encode($template->sections) . '; var theme_content_samples = ' . json_encode($theme->content_samples) . '; var website_theme = "' . $website->theme . '"; '); $category = new structure(); $category->paths = array(); if (!empty($item->category)) { $category->load($item->category); } $layout->add_script(' var item_category_path = ' . json_encode($category->paths) . '; var item_id = "' . $item->id . '"; '); // script#5 // select the first language of the website as the default origin when copying content $default_language = array_keys($ws_languages); $default_language = $default_language[0]; $layout->add_content(' <div id="navigate_items_copy_from" style=" display: none; "> <div class="navigate-form-row"> <label>' . t(191, 'Source') . '</label> ' . $naviforms->buttonset('navigate_items_copy_from_type', array('language' => t(46, 'Language'), 'item' => t(180, 'Item')), '0', "navigate_items_copy_from_change_origin(this);") . ' </div> <div class="navigate-form-row" style=" display: none; "> <label>' . t(46, 'Language') . '</label> ' . $naviforms->selectfield('navigate_items_copy_from_language_selector', array_keys($ws_languages), array_values($ws_languages), $default_language) . ' </div> <div class="navigate-form-row" style=" display: none; "> <label>' . t(79, 'Template') . '</label> ' . $naviforms->select_from_object_array('navigate_items_copy_from_template', $templates, 'id', 'title', '', '') . ' </div> <div class="navigate-form-row" style=" display: none; "> <label>' . t(67, 'Title') . '</label> ' . $naviforms->textfield('navigate_items_copy_from_title') . ' ' . $naviforms->hidden('navigate_items_copy_from_item_id', '') . ' </div> <div class="navigate-form-row" style=" display: none; "> <label>' . t(239, 'Section') . '</label> ' . $naviforms->select_from_object_array('navigate_items_copy_from_section', array(), 'id', 'name', '') . ' </div> </div> <div id="navigate_items_copy_from_history" style=" display: none; "> <div class="navigate-form-row"> <label>' . t(196, 'Date & time') . '</label> <select id="navigate_items_copy_from_history_options" name="navigate_items_copy_from_history_options" onchange="navigate_items_copy_from_history_preview(this.value, $(this).attr(\'type\'));"> </select> <a href="#" onclick="navigate_items_copy_from_history_remove();"><img src="img/icons/silk/cancel.png" align="absmiddle"></a> </div> <div class="navigate-form-row"> <!--<div id="navigate_items_copy_from_history_text" name="navigate_items_copy_from_history_text" style="border: 1px solid #CCCCCC; float: left; height: auto; min-height: 20px; overflow: auto; width: 97%; padding: 3px; background: #f7f7f7;"> </div> --> <textarea style="display: none;" id="navigate_items_copy_from_history_stylesheets">' . $website->content_stylesheets('link_tag') . '</textarea> <iframe id="navigate_items_copy_from_history_text" name="navigate_items_copy_from_history_text" src="about:blank" style="border: 1px solid #CCCCCC; float: left; height: 300px; min-height: 20px; overflow: auto; width: 97%; padding: 3px; "> </iframe> <div id="navigate_items_copy_from_history_text_raw" style=" display: none; "></div> </div> </div> <div id="navigate_items_copy_from_theme_samples" style=" display: none; "> <div class="navigate-form-row"> <label>' . t(79, 'Template') . '</label> <select id="navigate_items_copy_from_theme_samples_options" name="navigate_items_copy_from_theme_samples_options" onchange="navigate_items_copy_from_theme_samples_preview(this.value, $(this).attr(\'type\'), $(this).find(\'option:selected\').attr(\'source\'));"> </select> </div> <div class="navigate-form-row"> <div id="navigate_items_copy_from_theme_samples_text" name="navigate_items_copy_from_theme_samples_text" style="border: 1px solid #CCCCCC; float: left; height: auto; min-height: 20px; overflow: auto; width: 97%; padding: 3px; background: #f7f7f7;"> </div> <div id="navigate_items_copy_from_theme_samples_text_raw" style=" display: none; "></div> </div> </div> '); // script will be bound to onload event at the end of this php function (after getScript is done) $onload_language = $_REQUEST['tab_language']; if (empty($onload_language)) { $onload_language = $website->languages_list[0]; } $layout->add_script(' function navigate_items_onload() { navigate_items_select_language("' . $onload_language . '"); navigate_change_association("' . (empty($item->id) ? 'category' : $item->association) . '"); setTimeout(function() { $(navigate_codemirror_instances).each(function() { this.refresh(); } ); }, 500); }; '); /* IMAGE GALLERIES */ if ($template->gallery === 'true' || $template->gallery > 0) { $navibars->add_tab(t(210, "Gallery")); // tab #3 $access = array(0 => '', 1 => '<img src="img/icons/silk/lock.png" align="absmiddle" title="' . t(361, 'Web users only') . '" />', 2 => '<img src="img/icons/silk/user_gray.png" align="absmiddle" title="' . t(363, 'Users who have not yet signed up or signed in') . '" />', 3 => '<img src="img/icons/silk/group_key.png" align="absmiddle" title="' . t(512, "Selected web user groups") . '" />'); $permissions = array(0 => '', 1 => '<img src="img/icons/silk/world_dawn.png" align="absmiddle" title="' . t(70, 'Private') . '" />', 2 => '<img src="img/icons/silk/world_night.png" align="absmiddle" title="' . t(81, 'Hidden') . '" />'); if (!is_array($item->galleries[0])) { $item->galleries[0] = array(); } $gallery_elements_order = implode('#', array_keys($item->galleries[0])); $navibars->add_tab_content($naviforms->hidden('items-gallery-elements-order', $gallery_elements_order)); $gallery = '<ul id="items-gallery-elements" class="items-gallery">'; $ids = array_keys($item->galleries[0]); //$default_img = 'data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='; // transparent pixel $default_img = 'img/icons/ricebowl/mimetypes/image.png'; for ($g = 0; $g < count($ids); $g++) { $f = new file(); $f->load($ids[$g]); $gallery .= ' <li> <div id="items-gallery-item-' . $ids[$g] . '-droppable" class="navigate-droppable ui-corner-all" data-file-id="' . $f->id . '"> <div class="file-access-icons">' . $access[$f->access] . $permissions[$f->permission] . '</div> <img title="' . $ids[$g] . '" src="' . $default_img . '" data-src="' . NAVIGATE_DOWNLOAD . '?wid=' . $website->id . '&id=' . $ids[$g] . '&disposition=inline&width=75&height=75" width="75" height="75" /> </div> <div class="navigate-droppable-cancel" style="display: block;"><img src="img/icons/silk/cancel.png" /></div> </li> '; } // empty element $gallery .= ' <li class="gallery-item-empty-droppable"> <div id="items-gallery-item-empty-droppable" class="navigate-droppable ui-corner-all"> <img src="img/icons/misc/dropbox.png" vspace="18" /> </div> </li> '; $gallery .= '</ul>'; // now the image captions foreach ($item->galleries[0] as $image_id => $image_dictionary) { if (!is_array($image_dictionary)) { $image_dictionary = array(); } foreach ($website->languages_list as $lang) { $gallery .= $naviforms->hidden('items-gallery-item-' . $image_id . '-dictionary-' . $lang, $image_dictionary[$lang]); } } $navibars->add_tab_content_row(array('<label>' . t(210, 'Gallery') . '</label>', '<div>' . $gallery . '</div>')); $layout->add_content(' <ul id="contextmenu-gallery-items" style="display: none" class="ui-corner-all"> <li id="contextmenu-gallery-items-properties"><a href="#"><span class="ui-icon ui-icon-contact"></span>' . t(213, "Image caption") . '</a></li> <li id="contextmenu-gallery-items-permissions"><a href="#"><span class="ui-icon ui-icon-key"></span>' . t(17, "Permissions") . '</a></li> <li id="contextmenu-gallery-items-focalpoint"><a href="#"><span class="ui-icon ui-icon-image"></span>' . t(540, "Focal point") . '</a></li> <li id="contextmenu-gallery-items-description"><a href="#"><span class="ui-icon ui-icon-comment"></span>' . t(334, 'Description') . '</a></li> <li><!--divider--></li> <li id="contextmenu-gallery-items-remove"><a href="#"><span class="ui-icon ui-icon-minus"></span>' . t(627, 'Remove') . '</a></li> <li id="contextmenu-gallery-items-move-beginning"><a href="#"><span class="ui-icon ui-icon-arrowthickstop-1-n"></span>' . t(628, 'Move to the beginning') . '</a></li> <li id="contextmenu-gallery-items-move-end"><a href="#"><span class="ui-icon ui-icon-arrowthickstop-1-s"></span>' . t(629, 'Move to the end') . '</a></li> </ul> '); // script#6 $layout->add_script(' $(window).on("load", function() { new LazyLoad({ threshold: 200, container: $("#items-gallery-elements-order").parent()[0], elements_selector: "#items-gallery-elements img", throttle: 40, data_src: "src", show_while_loading: true }); }); '); $captions_form = ' <div id="navigate_items_gallery_captions_form" style=" display: none; "> <div class="navigate-form-row"> <label>' . t(157, 'Image') . '</label> ' . $naviforms->dropbox('navigate_items_gallery_captions_form_image', '', 'image', true) . ' </div> '; $caption_langs = array_values($website->languages_list); foreach ($caption_langs as $caption_language) { $captions_form .= ' <div class="navigate-form-row"> <label>' . language::name_by_code($caption_language) . '</label> ' . $naviforms->textfield('navigate_items_gallery_captions_form_image_' . $caption_language, '') . ' </div> '; } $captions_form .= ' </div> '; $layout->add_content($captions_form); } // Properties TAB (only if needed) $properties_html = ''; if ($item->association == 'free' && !empty($item->template) && $item->template != '0') { // we already know the properties to show: template is set on item $properties_html = navigate_property_layout_form('item', $item->template, 'item', $item->id); } else { if ($item->association == 'category' && $item->embedding == 0 && !empty($item->template)) { // we already know the properties to show: template is set on item $properties_html = navigate_property_layout_form('item', $item->template, 'item', $item->id); } else { if ($item->association == 'category' && $item->category > 0) { // we have to get the template set in the category of the item $template_id = $DB->query_single('template', 'nv_structure', ' id = ' . protect($item->category) . ' AND website = ' . $website->id); $properties_html = navigate_property_layout_form('item', $template_id, 'item', $item->id); } } } if (!empty($properties_html)) { $navibars->add_tab(t(77, "Properties")); // tab #4 $navibars->add_tab_content($properties_html); } if ($template->comments > 0 || $template->comments == 'true' || $template->comments === true || is_object($template->comments)) { $navibars->add_tab(t(250, "Comments")); // tab #5 $navibars->add_tab_content_row(array('<label>' . t(252, 'Comments enabled to') . '</label>', $naviforms->selectfield('item-comments_enabled_to', array(0 => 0, 1 => 1, 2 => 2), array(0 => t(253, 'Nobody'), 1 => t(24, 'Registered users'), 2 => t(254, 'Everyone')), $item->comments_enabled_to))); $moderator_id = ''; if (!empty($item->comments_moderator)) { $moderator_username = $DB->query_single('username', 'nv_users', ' id = ' . $item->comments_moderator); if (!empty($moderator_username)) { $moderator_username = array($moderator_username); $moderator_id = array($item->comments_moderator); } } $navibars->add_tab_content_row(array('<label>' . t(255, 'Moderator') . '</label>', $naviforms->selectfield('item-comments_moderator', $moderator_id, $moderator_username, $item->comments_moderator, null, false, null, null, false), '<span style="display: none;" id="item-comments_moderator-helper">' . t(535, "Find user by name") . '</span>', '<div class="subcomment"><img align="absmiddle" src="' . NAVIGATE_URL . '/img/icons/silk/information.png" /> ' . t(256, 'Leave blank to accept all comments') . '</div>')); // script#7 // comments list // removed filter: AND nvwu.website = nvc.website ... reason: the webuser could be from another website if sharing webusers is enabled // TODO: retrieve comments by AJAX call to avoid memory issues. right now we just retrieve the first 500 comments $DB->query('SELECT nvc.*, nvwu.username, nvwu.avatar FROM nv_comments nvc LEFT OUTER JOIN nv_webusers nvwu ON nvwu.id = nvc.user WHERE nvc.website = ' . protect($website->id) . ' AND nvc.item = ' . protect($item->id) . ' ORDER BY nvc.date_created ASC LIMIT 500'); $comments = $DB->result(); $comments_total = count($comments); for ($c = 0; $c < $comments_total; $c++) { if ($comments[$c]->status == 2) { $comment_status = 'hidden'; } else { if ($comments[$c]->status == 1) { $comment_status = 'private'; } else { if ($comments[$c]->status == -1) { $comment_status = 'new'; } else { $comment_status = 'public'; } } } $navibars->add_tab_content_row(array('<span class="items-comment-label">' . core_ts2date($comments[$c]->date_created, true) . '<br />' . '<strong>' . (empty($comments[$c]->username) ? $comments[$c]->name : $comments[$c]->username) . '</strong>' . '<br />' . $comments[$c]->ip . '</span>', '<div id="items-comment-' . $comments[$c]->id . '" class="items-comment-message items-comment-status-' . $comment_status . '">' . nl2br($comments[$c]->message) . '</div>', empty($comments[$c]->avatar) ? '' : '<img style=" margin-left: 5px; " src="' . NAVIGATE_DOWNLOAD . '?wid=' . $website->id . '&id=' . $comments[$c]->avatar . '&disposition=inline&width=46&height=46" />')); } $navibars->add_tab_content(' <div id="items-comments-toolbar"> <img id="items-comments-toolbar-publish" src="' . NAVIGATE_URL . '/img/icons/silk/accept.png" title="' . t(258, 'Publish') . '" /> <img id="items-comments-toolbar-unpublish" src="' . NAVIGATE_URL . '/img/icons/silk/delete.png" title="' . t(259, 'Unpublish') . '" /> <img id="items-comments-toolbar-delete" src="' . NAVIGATE_URL . '/img/icons/silk/decline.png" title="' . t(35, 'Delete') . '" /> </div> '); // script#8 // comments moderation } if ($item->votes > 0) { $navibars->add_tab(t(352, "Votes")); // tab #6 $score = $item->score / $item->votes; $navibars->add_tab_content_panel('<img src="img/icons/silk/chart_pie.png" align="absmiddle" /> ' . t(337, 'Summary'), array('<div class="navigate-panels-summary ui-corner-all"><h2>' . $item->votes . '</h2><br />' . t(352, 'Votes') . '</div>', '<div class="navigate-panels-summary ui-corner-all""><h2>' . $score . '</h2><br />' . t(353, 'Score') . '</div>', '<div style=" float: left; margin-left: 8px; "><a href="#" class="uibutton" id="items_votes_webuser">' . t(15, 'Users') . '</a></div>', '<div style=" float: right; margin-right: 8px; "><a href="#" class="uibutton" id="items_votes_reset">' . t(354, 'Reset') . '</a></div>', '<div id="items_votes_webuser_window" style=" display: none; width: 600px; height: 350px; "></div>'), 'navigate-panel-web-summary', '385px', '200px'); $layout->add_script(' $("#items_votes_reset").on("click", function() { navigate_confirmation_dialog( function() { $.post("?fid=items&act=votes_reset&id=' . $item->id . '", function(data) { $("#navigate-panel-web-summary").addClass("ui-state-disabled"); navigate_notification("' . t(355, 'Votes reset') . '"); }); }, "' . t(497, "Do you really want to erase this data?") . '", null, "' . t(354, 'Reset') . '" ); }); $("#items_votes_webuser").on("click", function() { $( "#items_votes_webuser_window" ).dialog( { title: "' . t(357, 'User votes') . '", width: 700, height: 400, modal: true, open: function() { $( "#items_votes_webuser_window" ).html("<table id=\\"items_votes_webuser_grid\\"></table>"); $( "#items_votes_webuser_window" ).append("<div id=\\"items_votes_webuser_grid_pager\\"></div>"); jQuery("#items_votes_webuser_grid").jqGrid( { url: "?fid=' . $_REQUEST['fid'] . '&act=votes_by_webuser&id=' . $item->id . '", editurl: "?fid=' . $_REQUEST['fid'] . '&act=votes_by_webuser&id=' . $item->id . '", datatype: "json", mtype: "GET", pager: "#items_votes_webuser_grid_pager", colNames:["ID", "' . t(86, 'Date') . '", "' . t(1, 'Username') . '"], colModel:[ {name:"id", index:"id", width: 75, align: "left", sortable:true, editable:false, hidden: true}, {name:"date",index:"date", width: 180, align: "center", sortable:true, editable:false}, {name:"username", index:"username", align: "left", width: 380, sortable:true, editable:false} ], scroll: 1, loadonce: false, autowidth: true, forceFit: true, rowNum: 12, rowList: [12], viewrecords: true, multiselect: true, sortname: "date", sortorder: "desc" }); $("#items_votes_webuser_grid").jqGrid( "navGrid", "#items_votes_webuser_grid_pager", { add: false, edit: false, del: true, search: false } ); } }); }); '); $navibars->add_tab_content_panel('<img src="img/icons/silk/chart_line.png" align="absmiddle" /> ' . t(353, 'Score'), array('<div id="navigate-panel-web-score-graph" style=" margin: 8px; height: 150px; width: 360px; "></div>'), 'navigate-panel-web-score', '385px', '200px'); $votes_by_score = webuser_vote::object_votes_by_score('item', $item->id); $gdata = array(); $colors = array('#0a2f42', '#62bbe8', '#1d8ec7', '#44aee4', '#bbe1f5'); foreach ($votes_by_score as $vscore) { $gdata[] = (object) array('label' => $vscore->value, 'data' => (int) $vscore->votes, 'color' => $colors[$vscore->value % count($colors)]); } $navibars->add_tab_content(' <div class="hidden" id="navigate-panel-web-data-score">' . json_encode($gdata) . '</div> '); $navibars->add_tab_content_panel('<img src="img/icons/silk/chart_line.png" align="absmiddle" /> ' . t(352, 'Votes') . ' (' . t(356, 'last 90 days') . ')', array('<div id="navigate-panel-web-votes-graph" style=" margin: 8px; height: 150px; width: 360px; "></div>'), 'navigate-panel-web-votes', '385px', '200px'); $votes_by_date = webuser_vote::object_votes_by_date('item', $item->id, 90); $navibars->add_tab_content(' <div class="hidden" id="navigate-panel-web-data-votes_by_date">' . json_encode($votes_by_date) . '</div> '); // script#9 } $nvweb_preview = NAVIGATE_PARENT . NAVIGATE_FOLDER . '/web/nvweb.php?preview=true&wid=' . $website->id . '&route='; $layout->add_script(' function navigate_items_preview() { // navigate_items_disable_spellcheck(); not needed in tinymce 4? navigate_periodic_event_delegate(); // force saving current data in history var url = "' . $nvweb_preview . '"; var active_language = $("input[name=\'language_selector[]\']:checked").val(); if($("#template").parent().css("display")=="block") url = url + "node/' . $item->id . '&lang=" + active_language + "&template=" + $("#template").val(); else // category URL url = url + item_category_path[active_language].slice(1); setTimeout(function() { window.open(url); }, 1000); } '); $events->trigger('items', 'edit', array('item' => &$item, 'navibars' => &$navibars, 'naviforms' => &$naviforms)); } $layout->add_script(' $.getScript("lib/packages/items/items.js?r=' . $current_version->revision . '", function() { if(typeof navigate_items_onload == "function") navigate_items_onload(); }); '); return $navibars->generate(); }
function webusers_form($item) { global $user; global $DB; global $website; global $theme; global $layout; global $events; $navibars = new navibars(); $naviforms = new naviforms(); $layout->navigate_media_browser(); // we can use media browser in this function if (empty($item->id)) { $navibars->title(t(24, 'Web users') . ' / ' . t(38, 'Create')); } else { $navibars->title(t(24, 'Web users') . ' / ' . t(170, 'Edit') . ' [' . $item->id . ']'); } $navibars->add_actions(array('<a href="#" onclick="javascript: navigate_media_browser();"><img height="16" align="absmiddle" width="16" src="img/icons/silk/images.png"> ' . t(36, 'Media') . '</a>')); $navibars->add_actions(array('<a href="?fid=' . $_REQUEST['fid'] . '&act=webuser_groups_list"><img height="16" align="absmiddle" width="16" src="img/icons/silk/group.png"> ' . t(506, 'Groups') . '</a>')); if (!empty($item->id)) { $notes = grid_notes::comments('webuser', $item->id); $navibars->add_actions(array('<a href="#" onclick="javascript: navigate_display_notes_dialog();"><span class="navigate_grid_notes_span" style=" width: 20px; line-height: 16px; ">' . count($notes) . '</span><img src="img/skins/badge.png" width="20px" height="18px" style="margin-top: -2px;" class="grid_note_edit" align="absmiddle" /> ' . t(168, 'Notes') . '</a>')); } if (empty($item->id)) { $navibars->add_actions(array('<a href="#" onclick="navigate_tabform_submit(1);"><img height="16" align="absmiddle" width="16" src="img/icons/silk/accept.png"> ' . t(34, 'Save') . '</a>')); } else { $navibars->add_actions(array('<a href="#" onclick="navigate_tabform_submit(1);"><img height="16" align="absmiddle" width="16" src="img/icons/silk/accept.png"> ' . t(34, 'Save') . '</a>', '<a href="#" onclick="navigate_delete_dialog();"><img height="16" align="absmiddle" width="16" src="img/icons/silk/cancel.png"> ' . t(35, 'Delete') . '</a>')); $delete_html = array(); $delete_html[] = '<div id="navigate-delete-dialog" class="hidden">' . t(57, 'Do you really want to delete this item?') . '</div>'; $delete_html[] = '<script language="javascript" type="text/javascript">'; $delete_html[] = 'function navigate_delete_dialog()'; $delete_html[] = '{'; $delete_html[] = '$("#navigate-delete-dialog").removeClass("hidden");'; $delete_html[] = '$("#navigate-delete-dialog").dialog({ resizable: true, height: 150, width: 300, modal: true, title: "' . t(59, 'Confirmation') . '", buttons: { "' . t(35, 'Delete') . '": function() { $(this).dialog("close"); window.location.href = "?fid=' . $_REQUEST['fid'] . '&act=remove&id=' . $item->id . '"; }, "' . t(58, 'Cancel') . '": function() { $(this).dialog("close"); } } });'; $delete_html[] = '}'; $delete_html[] = '</script>'; $navibars->add_content(implode("\n", $delete_html)); } $navibars->add_actions(array(!empty($item->id) ? '<a href="?fid=webusers&act=2"><img height="16" align="absmiddle" width="16" src="img/icons/silk/add.png"> ' . t(38, 'Create') . '</a>' : '', '<a href="?fid=webusers&act=0"><img height="16" align="absmiddle" width="16" src="img/icons/silk/application_view_list.png"> ' . t(39, 'List') . '</a>', 'search_form')); $navibars->form(); $navibars->add_tab(t(43, "Main")); $navibars->add_tab_content($naviforms->hidden('form-sent', 'true')); $navibars->add_tab_content($naviforms->hidden('id', $item->id)); $navibars->add_tab_content_row(array('<label>ID</label>', '<span>' . (!empty($item->id) ? $item->id : t(52, '(new)')) . '</span>')); $navibars->add_tab_content_row(array('<label>' . t(246, 'Avatar') . '</label>', $naviforms->dropbox('webuser-avatar', $item->avatar, "image"))); $navibars->add_tab_content_row(array('<label>' . t(1, 'User') . '</label>', $naviforms->textfield('webuser-username', $item->username, false, false, 'autocomplete="off"'))); $navibars->add_tab_content_row(array('<label>' . t(2, 'Password') . '</label>', '<input type="password" name="webuser-password" autocomplete="off" value="" size="32" />', '<span class="navigate-form-row-info">' . t(48, "Leave blank to keep the current value") . '</span>')); // force removing the browser saved password $layout->add_script(' setTimeout(function() { $("input[name=webuser-password]").val(""); }, 10); '); $navibars->add_tab_content_row(array('<label>' . t(44, 'E-Mail') . '</label>', $naviforms->textfield('webuser-email', $item->email), $item->email_verification_date > 0 ? '<span class="navigate-form-row-info" title="' . core_ts2date($item->email_verification_date, true) . '"><img src="img/icons/silk/tick.png" align="absmiddle" /> ' . t(37, "E-Mail confirmed") . '</span>' : '')); if (!empty($item->joindate)) { $navibars->add_tab_content_row(array('<label>' . t(247, 'Date joined') . '</label>', core_ts2date($item->joindate, true))); } if (!empty($item->lastseen)) { $navibars->add_tab_content_row(array('<label>' . t(563, 'Last seen') . '</label>', core_ts2date($item->lastseen, true))); } $navibars->add_tab_content_row(array('<label>' . t(249, 'Newsletter') . '</label>', $naviforms->checkbox('webuser-newsletter', $item->newsletter))); $webuser_access = array('0' => t(321, "Allowed"), '1' => t(47, "Blocked"), '2' => t(622, "Date range")); $navibars->add_tab_content_row(array('<label>' . t(364, 'Access') . '</label>', $naviforms->selectfield('webuser-access', array_keys($webuser_access), array_values($webuser_access), $item->access, 'navigate_webusers_change_access();'))); if (empty($item->access_begin)) { $item->access_begin = ''; } $navibars->add_tab_content_row(array('<label> <img src="img/icons/silk/date_go.png" /> ' . t(623, 'Begin') . '</label>', $naviforms->datefield('webuser-access-begin', $item->access_begin, true, ' width:200px; '))); if (empty($item->access_end)) { $item->access_end = ''; } $navibars->add_tab_content_row(array('<label> <img src="img/icons/silk/date_delete.png" /> ' . t(624, 'End') . '</label>', $naviforms->datefield('webuser-access-end', $item->access_end, true, ' width:200px; '))); $layout->add_script(' function navigate_webusers_change_access() { $("#webuser-access-begin").parent().hide(); $("#webuser-access-end").parent().hide(); if($("#webuser-access").val() == "2") { $("#webuser-access-begin").parent().show(); $("#webuser-access-end").parent().show(); } } navigate_webusers_change_access(); '); // private_comment is deprecated in NV 2.0 if (!empty($item->private_comment)) { $navibars->add_tab_content_row(array('<label>' . t(538, 'Private comment') . '</label>', $naviforms->textarea('webuser-private_comment', $item->private_comment))); } $navibars->add_tab(t(506, "Groups")); $webuser_groups = webuser_group::all_in_array(); $navibars->add_tab_content_row(array('<label>' . t(506, "Groups") . '</label>', $naviforms->multiselect('webuser-groups', array_keys($webuser_groups), array_values($webuser_groups), $item->groups))); $navibars->add_tab(t(308, "Personal")); $navibars->add_tab_content_row(array('<label>' . t(159, 'Name') . '</label>', $naviforms->textfield('webuser-fullname', $item->fullname))); $navibars->add_tab_content_row(array('<label>' . t(160, 'Type') . ' / ' . t(304, 'Gender') . '</label>', $naviforms->buttonset('webuser-gender', array('male' => '<img src="img/icons/silk/male.png" align="absbottom" /> ' . t(305, 'Male'), 'female' => '<img src="img/icons/silk/female.png" align="absbottom" /> ' . t(306, 'Female'), 'company' => '<img src="img/icons/silk/building.png" align="absbottom" /> ' . t(592, 'Company'), '' => '<img src="img/icons/silk/help.png" align="absbottom" /> ' . t(307, 'Unspecified')), $item->gender))); $navibars->add_tab_content_row(array('<label>' . t(248, 'Birthdate') . '</label>', $naviforms->datefield('webuser-birthdate', $item->birthdate, false))); $countries = property::countries(); $country_names = array_values($countries); $country_codes = array_keys($countries); // include "country not defined" item array_unshift($country_codes, ''); array_unshift($country_names, '(' . t(307, "Unspecified") . ')'); $navibars->add_tab_content_row(array('<label>' . t(224, 'Country') . '</label>', $naviforms->selectfield("webuser-country", $country_codes, $country_names, strtoupper($item->country)))); $timezones = property::timezones(); if (empty($item->timezone)) { $item->timezone = date_default_timezone_get(); } $navibars->add_tab_content_row(array('<label>' . t(97, 'Timezone') . '</label>', $naviforms->selectfield("webuser-timezone", array_keys($timezones), array_values($timezones), $item->timezone))); $layout->add_script(' var webuser_country = "' . $item->country . '"; $("#webuser-country").bind("change blur", function() { if($(this).val() != webuser_country) { webuser_country = $(this).val(); $.getJSON("?fid=' . $_REQUEST['fid'] . '", { country: $(this).val(), act: 90 }, function(data) { $("#webuser-timezone").find("option").remove(); $.each(data, function(value, text) { $("<option />", { value: value, html: text }).appendTo("#webuser-timezone"); }); }); } }); '); // Language selector $data = language::language_names(false); $select = $naviforms->selectfield('webuser-language', array_keys($data), array_values($data), $item->language); $navibars->add_tab_content_row(array('<label>' . t(46, 'Language') . '</label>', $select)); $navibars->add_tab(t(233, "Address")); $navibars->add_tab_content_row(array('<label>' . t(233, 'Address') . '</label>', $naviforms->textfield('webuser-address', $item->address))); $navibars->add_tab_content_row(array('<label>' . t(319, 'Location') . '</label>', $naviforms->textfield('webuser-location', $item->location))); $navibars->add_tab_content_row(array('<label>' . t(318, 'Zip code') . '</label>', $naviforms->textfield('webuser-zipcode', $item->zipcode))); $navibars->add_tab_content_row(array('<label>' . t(320, 'Phone') . '</label>', $naviforms->textfield('webuser-phone', $item->phone))); $navibars->add_tab(t(309, "Social")); $navibars->add_tab_content_row(array('<label>' . t(177, 'Website') . '</label>', $naviforms->textfield('webuser-social_website', $item->social_website))); if (!empty($theme->webusers['properties'])) { $properties_html = navigate_property_layout_form('webuser', $theme->name, 'webuser', $item->id); if (!empty($properties_html)) { $navibars->add_tab(t(77, "Properties")); $navibars->add_tab_content($properties_html); } } if (!empty($item->id)) { $layout->navigate_notes_dialog('webuser', $item->id); } $events->trigger('webuser', 'edit', array('webuser' => &$item, 'navibars' => &$navibars, 'naviforms' => &$naviforms)); return $navibars->generate(); }
function block_group_form($item) { global $DB; global $website; global $layout; global $theme; global $current_version; $navibars = new navibars(); $naviforms = new naviforms(); if (empty($item->id)) { $navibars->title(t(23, 'Blocks') . ' / ' . t(506, 'Groups') . ' / ' . t(38, 'Create')); } else { $navibars->title(t(23, 'Blocks') . ' / ' . t(506, 'Groups') . ' / ' . t(170, 'Edit') . ' [' . $item->id . ']'); } if (empty($item->id)) { $navibars->add_actions(array('<a href="#" onclick="navigate_tabform_submit(0);"><img height="16" align="absmiddle" width="16" src="img/icons/silk/accept.png"> ' . t(34, 'Save') . '</a>')); } else { $navibars->add_actions(array('<a href="#" onclick="navigate_tabform_submit(0);"><img height="16" align="absmiddle" width="16" src="img/icons/silk/accept.png"> ' . t(34, 'Save') . '</a>', '<a href="#" onclick="navigate_delete_dialog();"><img height="16" align="absmiddle" width="16" src="img/icons/silk/cancel.png"> ' . t(35, 'Delete') . '</a>')); $layout->add_script(' function navigate_delete_dialog() { navigate_confirmation_dialog( function() { window.location.href = "?fid=blocks&act=block_group_delete&id=' . $item->id . '"; }, null, null, "' . t(35, 'Delete') . '" ); } '); } $navibars->add_actions(array('<a href="?fid=' . $_REQUEST['fid'] . '&act=0"><img height="16" align="absmiddle" width="16" src="img/icons/silk/brick.png"> ' . t(23, 'Blocks') . '</a>', '<a href="?fid=' . $_REQUEST['fid'] . '&act=block_types_list"><img height="16" align="absmiddle" width="16" src="img/icons/silk/brick_edit.png"> ' . t(167, 'Types') . '</a>')); if (!empty($item->id)) { $notes = grid_notes::comments('block_group', $item->id); $navibars->add_actions(array('<a href="#" onclick="javascript: navigate_display_notes_dialog();"><span class="navigate_grid_notes_span" style=" width: 20px; line-height: 16px; ">' . count($notes) . '</span><img src="img/skins/badge.png" width="20px" height="18px" style="margin-top: -2px;" class="grid_note_edit" align="absmiddle" /> ' . t(168, 'Notes') . '</a>')); } $navibars->add_actions(array(!empty($item->id) ? '<a href="?fid=' . $_REQUEST['fid'] . '&act=block_group_edit"><img height="16" align="absmiddle" width="16" src="img/icons/silk/add.png"> ' . t(38, 'Create') . '</a>' : '', '<a href="?fid=' . $_REQUEST['fid'] . '&act=block_groups_list"><img height="16" align="absmiddle" width="16" src="img/icons/silk/application_view_list.png"> ' . t(39, 'List') . '</a>')); $navibars->form(); if (!empty($item->id)) { $navibars->add_tab(t(23, "Blocks")); $allowed_types = array(); if (!empty($item->code)) { for ($bg = 0; $bg < count($theme->block_groups); $bg++) { if ($theme->block_groups[$bg]->id == $item->code) { if (isset($theme->block_groups[$bg]->allowed_types)) { $allowed_types = $theme->block_groups[$bg]->allowed_types; } break; } } } $blocks_selected = array(); if (!is_array($item->blocks)) { $item->blocks = array(); } $navibars->add_tab_content($naviforms->hidden('blocks_group_selection', json_encode($item->blocks))); $navibars->add_tab_content($naviforms->hidden('blocks-order', "")); $block_types = block::types(); $lang = $website->languages_published[0]; $extensions_blocks = extension::blocks(); for ($p = 0; $p < count($item->blocks); $p++) { unset($block); switch ($item->blocks[$p]['type']) { case "block": $block = new block(); $block->load($item->blocks[$p]['id']); if (empty($block) || empty($block->type)) { continue; } $blocks_selected[] = ' <div class="block_group_block ui-state-default" data-block-id="' . $block->id . '" data-block-type="block" data-block-uid="' . $item->blocks[$p]['uid'] . '"> <div class="actions"> <a href="?fid=blocks&act=edit&id=' . $block->id . '"><img src="' . NAVIGATE_URL . '/img/icons/silk/pencil.png" /></a> <a href="#" onclick="navigate_blocks_selection_remove(this);"><img src="' . NAVIGATE_URL . '/img/icons/silk/cancel.png" /></a> </div> <div class="title">' . $block->dictionary[$lang]['title'] . '</div> <div class="subcomment"><span style="float: right;">ID ' . $block->id . '</span><img src="img/icons/silk/brick.png" /> ' . $theme->t($block->type) . '</div> </div> '; break; case "block_type": for ($bt = 0; $bt < count($block_types); $bt++) { if ($block_types[$bt]['id'] == $item->blocks[$p]['id']) { $block = $block_types[$bt]; break; } } $blocks_selected[] = ' <div class="block_group_block ui-state-default" data-block-id="' . $block['code'] . '" data-block-type="block_type" data-block-uid="' . $item->blocks[$p]['uid'] . '"> <div class="actions"> <a href="#" data-block-group="' . $block['block_group'] . '" data-block-type-code="' . $block['code'] . '" data-block-type-title="(span)" onclick="navigate_blocks_block_type_title(this);"><img src="' . NAVIGATE_URL . '/img/icons/silk/text_horizontalrule.png" /><span class="hidden">' . $item->blocks[$p]['title'] . '</span></a> <a href="#" onclick="navigate_blocks_selection_remove(this);"><img src="' . NAVIGATE_URL . '/img/icons/silk/cancel.png" /></a> </div> <div class="title" title="' . $block['description'] . '">' . $block['title'] . '</div> <div class="subcomment"> <span style="float: right;">ID ' . $block['code'] . '</span> <img src="img/icons/silk/brick_link.png" /> ' . $block['count'] . ' ' . ($block['count'] == 1 ? t(437, "Block") : t(23, "Blocks")) . ' </div> </div> '; break; case "block_group_block": if (is_array($theme->block_groups)) { foreach ($theme->block_groups as $key => $bg) { for ($i = 0; $i < count($bg->blocks); $i++) { if ($bg->blocks[$i]->id == $item->blocks[$p]['id']) { $block = array('code' => $bg->blocks[$i]->id, 'type' => $bg->blocks[$i]->id, 'title' => $theme->t($bg->blocks[$i]->title), 'description' => $theme->t($bg->blocks[$i]->description), 'properties' => $bg->blocks[$i]->properties, 'block_group' => $bg->id); break; } } } } $blocks_selected[] = ' <div class="block_group_block ui-state-default" data-block-id="' . $block['code'] . '" data-block-type="block_group_block" data-block-uid="' . $item->blocks[$p]['uid'] . '"> <div class="actions"> ' . (empty($block['properties']) ? '' : '<a href="#" data-block-group="' . $block['block_group'] . '" data-block-group-block="' . $block['code'] . '" data-block-group-action="settings" onclick="navigate_blocks_group_block_settings(this);"><img src="' . NAVIGATE_URL . '/img/icons/silk/cog.png" /></a>') . ' <a href="#" onclick="navigate_blocks_selection_remove(this);"><img src="' . NAVIGATE_URL . '/img/icons/silk/cancel.png" /></a> </div> <div class="title" title="' . $block['description'] . '">' . $block['title'] . '</div> <div class="subcomment"><span style="float: right;">ID ' . $block['type'] . '</span><img src="img/icons/silk/bricks.png" /> ' . $theme->t($block['type']) . '</div> </div> '; break; case "extension": $block = $item->blocks[$p]; for ($be = 0; $be < count($extensions_blocks); $be++) { if ($block['id'] == $extensions_blocks[$be]->id) { $extension = new extension(); $extension->load($block['extension']); $blocks_selected[] = ' <div class="block_group_block ui-state-default" data-block-id="' . $block['id'] . '" data-block-type="extension" data-block-extension="' . $block['extension'] . '" data-block-uid="' . $item->blocks[$p]['uid'] . '"> <div class="actions"> ' . (empty($extensions_blocks[$be]->properties) ? '' : '<a href="#" data-block-group="' . $item->code . '" data-block-id="' . $block['id'] . '" data-block-extension="' . $block['extension'] . '" data-block-group-action="settings" onclick="navigate_block_group_extension_block_settings(this);"><img src="' . NAVIGATE_URL . '/img/icons/silk/cog.png" /></a>') . ' <a href="#" onclick="navigate_blocks_selection_remove(this);"><img src="' . NAVIGATE_URL . '/img/icons/silk/cancel.png" /></a> </div> <div class="title">' . $extension->t($extensions_blocks[$be]->title) . '</div> <div class="subcomment"><span style="float: right;">ID ' . $block['id'] . '</span><img src="img/icons/silk/plugin.png" /> ' . $extension->title . '</div> </div> '; break; } } break; } } $blocks_selected = implode("\n", $blocks_selected); $navibars->add_tab_content('<div id="block_group_selected_blocks" style="width: 49%; float: left; margin-right: 2%;"> <div class="ui-accordion ui-widget ui-helper-reset"> <h3 class="ui-accordion-header ui-state-default ui-accordion-icons ui-accordion-header-active ui-state-active ui-corner-top"> <img src="img/icons/silk/bricks.png" style="vertical-align: middle;" /> ' . t(405, 'Selection') . ' </h3> <div class="ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content-active">' . $blocks_selected . '</div> </div> <div class="subcomment"> <img src="img/icons/silk/information.png" align="absmiddle" /> ' . t(72, "Drag any row to assign priorities") . ' </div> </div>'); // **** ADD specific BLOCKS **** $sql = ' SELECT b.type, b.id, d.text as title FROM nv_blocks b LEFT JOIN nv_webdictionary d ON b.id = d.node_id AND d.node_type = "block" AND d.subtype = "title" AND d.lang = "' . $website->languages_list[0] . '" AND d.website = ' . $website->id . ' WHERE b.website = ' . $website->id . ' ORDER BY b.id DESC'; $DB->query($sql); $block_elements = $DB->result(); $block_group_blocks = array(); for ($bg = 0; $bg < count($theme->block_groups); $bg++) { if ($theme->block_groups[$bg]->id == $item->code) { $block_group_blocks = $theme->block_groups[$bg]->blocks; } } // blocks available in the accordion $navibars->add_tab_content('<div id="blocks_available_wrapper" style="float: left; width: 49%; "> <div id="blocks_available_accordion"> <h3><i class="fa fa-fw fa-cube"></i> ' . t(437, 'Block') . '</h3> <div> ' . implode("\n", array_map(function ($b) use($allowed_types) { global $theme; $classes = 'block_group_block ui-state-default'; if (!empty($allowed_types) && !in_array($b->type, $allowed_types)) { $classes .= ' ui-state-disabled hidden'; } $html = '<div class="' . $classes . '" data-block-id="' . $b->id . '" data-block-type="block">' . '<div class="actions"> <a href="?fid=blocks&act=edit&id=' . $b->id . '"><img src="' . NAVIGATE_URL . '/img/icons/silk/pencil.png" /></a> <a href="#" onclick="navigate_blocks_selection_remove(this);"><img src="' . NAVIGATE_URL . '/img/icons/silk/cancel.png" /></a> </div>' . '<div class="title">' . $b->title . '</div>' . '<div class="subcomment"><span style="float: right;">ID ' . $b->id . '</span><img src="img/icons/silk/brick.png" /> ' . $theme->t($b->type) . '</div>' . '</div>'; return $html; }, $block_elements)) . ' <div class="navigate-block_group-accordion-info-link hidden"><i class="fa fa-eye-slash"></i> <a href="#">' . t(646, "Show all unselectable blocks") . '</a></div> </div> <h3><i class="fa fa-fw fa-cubes"></i> ' . t(543, 'Block type') . '</h3> <div> ' . implode("\n", array_map(function ($b) use($allowed_types) { $classes = 'block_group_block ui-state-default'; if (!empty($allowed_types) && !in_array($b['id'], $allowed_types)) { $classes .= ' ui-state-disabled'; } $html = '<div class="' . $classes . '" data-block-id="' . $b['id'] . '" data-block-type="block_type">' . '<div class="actions"> <a href="#" data-block-group="' . $b['block_group'] . '" data-block-type-code="' . $b['code'] . '" data-block-type-title="(span)" onclick="navigate_blocks_block_type_title(this);"><img src="' . NAVIGATE_URL . '/img/icons/silk/text_horizontalrule.png" /><span class="hidden">' . $b['block_type_title'] . '</span></a> <a href="#" onclick="navigate_blocks_selection_remove(this);"><img src="' . NAVIGATE_URL . '/img/icons/silk/cancel.png" /></a> </div>' . '<div class="title">' . $b['title'] . '</div>' . '<div class="subcomment"> <span style="float: right;">' . $b['count'] . ' ' . ($b['count'] == 1 ? t(437, "Block") : t(23, "Blocks")) . '</span> <img src="img/icons/silk/brick_link.png" /> ID ' . $b['id'] . '</div>' . '</div>'; return $html; }, $block_types)) . ' </div> <h3><i class="fa fa-fw fa-plus-square-o"></i> ' . t(556, 'Block from group') . ' [' . $theme->t($item->code) . ']</h3> <div> ' . implode("\n", array_map(function ($b) use($item) { global $theme; $html = '<div class="block_group_block ui-state-default" data-block-id="' . $b->id . '" data-block-type="block_group_block" title="' . $theme->t(@$b->description) . '">' . '<div class="actions"> ' . (empty($b->properties) ? '' : '<a href="#" data-block-group="' . $item->code . '" data-block-group-block="' . $b->id . '" data-block-group-action="settings" onclick="navigate_blocks_group_block_settings(this);"><img src="' . NAVIGATE_URL . '/img/icons/silk/cog.png" /></a>') . ' <a href="#" onclick="navigate_blocks_selection_remove(this);"><img src="' . NAVIGATE_URL . '/img/icons/silk/cancel.png" /></a> </div>' . '<div class="title">' . $theme->t($b->title) . '</div>' . '<div class="subcomment"> <span style="float: right;">ID ' . $b->id . '</span> <img src="img/icons/silk/bricks.png" />' . '</div>' . '</div>'; return $html; }, $block_group_blocks)) . ' </div> <h3><i class="fa fa-fw fa-puzzle-piece"></i> ' . t(327, 'Extensions') . '</h3> <div> ' . implode("\n", array_map(function ($b) use($allowed_types, $item) { $classes = 'block_group_block ui-state-default'; $extension = new extension(); $extension->load($b->_extension); $html = '<div class="' . $classes . '" data-block-id="' . $b->id . '" data-block-type="extension" data-block-extension="' . $b->_extension . '">' . '<div class="actions"> ' . (empty($b->properties) ? '' : '<a href="#" data-block-group="' . $item->code . '" data-block-group-block="' . $b->id . '" data-block-group-action="settings" onclick="navigate_block_group_extension_block_settings(this);"><img src="' . NAVIGATE_URL . '/img/icons/silk/cog.png" /></a>') . ' <a href="#" onclick="navigate_blocks_selection_remove(this);"><img src="' . NAVIGATE_URL . '/img/icons/silk/cancel.png" /></a> </div>' . '<div class="title">' . $extension->t($b->title) . '</div>' . '<div class="subcomment"><span style="float: right;">ID ' . $b->id . '</span><img src="img/icons/silk/plugin.png" /> ' . $extension->title . '</div>' . '</div>'; return $html; }, $extensions_blocks)) . ' </div> </div> <div class="subcomment"> <img src="img/icons/silk/information.png" align="absmiddle" /> ' . t(638, "Disabled blocks are not compatible with the current block group type") . ' </div> </div>'); $block_group_block_types_form = ""; foreach ($website->languages_list as $lang) { $block_group_block_types_form .= ' <div data-lang="' . $lang . '" class="navigate-form-row"> <label style="width: 48px; "><span title="' . language::name_by_code($lang) . '" class="navigate-form-row-language-info"><img align="absmiddle" src="img/icons/silk/comment.png">' . $lang . '</span></label> <input type="text" style=" width: 340px;" name="block_type_title_value[' . $lang . ']" value=""> </div> '; } $navibars->add_tab_content(' <div id="navigate-block-groups-block-type-title" class="hidden"> ' . $block_group_block_types_form . ' <div class="subcomment" style="margin-left: 0;"><img src="img/icons/silk/information.png" /> ' . t(641, "It will only be shown if the template supports it") . '</div> </div> '); $layout->add_script(' function navigate_blocks_block_type_title(el) { var title = $(el).find("span").text(); try { title = jQuery.parseJSON(title); } catch(e) { // not json; do nothing } $("#navigate-block-groups-block-type-title").find("input[type=text]").each(function() { if(typeof(title)=="object") $(this).val(title[$(this).parent().data("lang")]); else $(this).val(title); }); $("#navigate-block-groups-block-type-title").removeClass("hidden"); $("#navigate-block-groups-block-type-title").dialog({ title: navigate_t(67, "Title"), modal: true, width: 428, buttons: [ { text: navigate_t(190, "Ok"), icons: { primary: "ui-icon-check" }, click: function() { var new_value = {}; $("#navigate-block-groups-block-type-title") .find(\'input[type="text"]\').each( function() { new_value[$(this).parent().data("lang")] = $(this).val(); } ); $(el).find("span").text(JSON.stringify(new_value)); blocks_selection_update(); $( this ).dialog( "close" ); } }, { text: navigate_t(58, "Cancel"), icons: { primary: "ui-icon-close" }, click: function() { $( this ).dialog( "close" ); } } ] }); } '); } $navibars->add_tab(t(457, "Information")); $navibars->add_tab_content($naviforms->hidden('form-sent', 'true')); $navibars->add_tab_content($naviforms->hidden('id', $item->id)); $navibars->add_tab_content_row(array('<label>ID</label>', '<span>' . (!empty($item->id) ? $item->id : t(52, '(new)')) . '</span>')); $navibars->add_tab_content_row(array('<label>' . t(67, 'Title') . '</label>', $naviforms->textfield('title', $item->title))); $blgroups = array(); for ($blg = 0; $blg < count($theme->block_groups); $blg++) { $blgroups[$theme->block_groups[$blg]->id] = ''; if (!empty($theme->block_groups[$blg]->description)) { $blgroups[$theme->block_groups[$blg]->id] = $theme->t($theme->block_groups[$blg]->description); } } if (!in_array($item->code, $blgroups)) { $blgroups[$item->code] = $item->code; } $navibars->add_tab_content_row(array('<label>' . t(237, 'Code') . '</label>', $naviforms->selectfield('code', array_keys($blgroups), array_keys($blgroups), $item->code, NULL, NULL, array_values($blgroups), "", true, true))); // DEPRECATED field, will be removed. Please use the Notes feature if (!empty($item->notes)) { $navibars->add_tab_content_row(array('<label>' . t(168, 'Notes') . '</label>', $naviforms->textarea('notes', $item->notes))); } if (!empty($item->id)) { $layout->navigate_notes_dialog('block_group', $item->id); } $layout->add_script(' $.getScript("lib/packages/blocks/blocks.js?r=' . $current_version->revision . '", function() { block_groups_onload(); }); '); return $navibars->generate(); }
function functions_form($item) { global $user; global $DB; global $website; global $layout; $navibars = new navibars(); $naviforms = new naviforms(); if (empty($item->id)) { $navibars->title(t(244, 'Menus') . ' / ' . t(38, 'Create')); } else { $navibars->title(t(244, 'Menus') . ' / ' . t(170, 'Edit') . ' [' . $item->id . ']'); } if (empty($item->id)) { $navibars->add_actions(array('<a href="#" onclick="navigate_tabform_submit(1);"><img height="16" align="absmiddle" width="16" src="img/icons/silk/accept.png"> ' . t(34, 'Save') . '</a>')); } else { $navibars->add_actions(array('<a href="#" onclick="navigate_tabform_submit(1);"><img height="16" align="absmiddle" width="16" src="img/icons/silk/accept.png"> ' . t(34, 'Save') . '</a>', '<a href="#" onclick="navigate_delete_dialog();"><img height="16" align="absmiddle" width="16" src="img/icons/silk/cancel.png"> ' . t(35, 'Delete') . '</a>')); $layout->add_script(' function navigate_delete_dialog() { navigate_confirmation_dialog( function() { window.location.href = "?fid=menus&act=delete&id=' . $item->id . '"; }, null, null, "' . t(35, 'Delete') . '" ); } '); } $navibars->add_actions(array(!empty($item->id) ? '<a href="?fid=menus&act=2"><img height="16" align="absmiddle" width="16" src="img/icons/silk/add.png"> ' . t(38, 'Create') . '</a>' : '', '<a href="?fid=menus&act=0"><img height="16" align="absmiddle" width="16" src="img/icons/silk/application_view_list.png"> ' . t(39, 'List') . '</a>', 'search_form')); $navibars->form(); $navibars->add_tab(t(43, "Main")); $navibars->add_tab_content($naviforms->hidden('form-sent', 'true')); $navibars->add_tab_content($naviforms->hidden('id', $item->id)); $navibars->add_tab_content_row(array('<label>ID</label>', '<span>' . (!empty($item->id) ? $item->id : t(52, '(new)')) . '</span>')); $navibars->add_tab_content_row(array('<label>' . t(237, 'Code') . '</label>', $naviforms->textfield('codename', $item->codename))); $navibars->add_tab_content_row(array('<label>' . t(242, 'Icon') . '</label>', $naviforms->textfield('icon', $item->icon), '<img src="' . NAVIGATE_URL . '/' . $item->icon . '" align="absmiddle" />')); $navibars->add_tab_content_row(array('<label>#' . t(67, 'Title') . ' (lid)</label>', $naviforms->textfield('lid', $item->lid), empty($item->lid) ? '' : '<em>' . $item->lid . ': <strong>' . t($item->lid, $item->lid) . '</strong></em>')); $navibars->add_tab_content_row(array('<label>' . t(245, 'Notes') . '</label>', $naviforms->textarea('notes', $item->notes))); $navibars->add_tab_content_row(array('<label>' . t(65, 'Enabled') . '</label>', $naviforms->checkbox('enabled', $item->enabled))); $navibars->add_tab(t(200, "Options")); $functions = nv_function::load_all_functions(); $func_cats = array_unique($DB->result('category')); sort($func_cats); $sortable_assigned = array(); $sortable_unassigned = array(); $sortable_assigned[] = '<ul id="sortable_assigned" class="connectedSortable">'; $sortable_unassigned[] = '<ul id="sortable_unassigned" class="connectedSortable">'; if (empty($item->functions)) { $item->functions = array(); } // already included menus on the profile foreach ($item->functions as $f) { foreach ($functions as $function) { if ($function->id == $f) { if ($function->enabled == '1') { $sortable_assigned[] = '<li class="ui-state-highlight" value="' . $function->id . '" category="' . $function->category . '"><img src="' . NAVIGATE_URL . '/' . $function->icon . '" align="absmiddle" /> ' . t($function->lid, $function->lid) . '</li>'; } else { $sortable_assigned[] = '<li class="ui-state-highlight ui-state-disabled" value="' . $function->id . '" category="' . $function->category . '"><img src="' . NAVIGATE_URL . '/' . $function->icon . '" align="absmiddle" /> ' . t($function->lid, $function->lid) . '</li>'; } } } } // the other menus not included on the profile foreach ($functions as $function) { if (!in_array($function->id, $item->functions)) { if ($function->enabled == '1') { $sortable_unassigned[] = '<li class="ui-state-default" value="' . $function->id . '" category="' . $function->category . '"><img src="' . NAVIGATE_URL . '/' . $function->icon . '" align="absmiddle" /> ' . t($function->lid, $function->lid) . '</li>'; } else { $sortable_unassigned[] = '<li class="ui-state-default ui-state-disabled" value="' . $function->id . '" category="' . $function->category . '"><img src="' . NAVIGATE_URL . '/' . $function->icon . '" align="absmiddle" /> ' . t($function->lid, $function->lid) . '</li>'; } } } $sortable_assigned[] = '</ul>'; $sortable_unassigned[] = '</ul>'; //$navibars->add_tab_content('<pre>'.print_r($item->menus, true).'</pre>'); // margin-top: 12px; margin-left: 5px; float: left; // position: absolute; margin-left: 483px; margin-top: -9px; width: 291px; height: 20px; $navibars->add_tab_content_row(array('<label>' . t(78, 'Category') . '</label>', $naviforms->selectfield('menus_functions_category_select', $func_cats, $func_cats, 'web', "navigate_menus_change_functions_category();", false))); $navibars->add_tab_content($naviforms->hidden("menu-functions", implode('#', $item->functions))); $navibars->add_tab_content_row(array('<label>' . t(240, 'Functions') . '</label>', implode("\n", $sortable_assigned), implode("\n", $sortable_unassigned))); $layout->add_script(' $("#menus_functions_category_select").css({ "width": "300px", "margin-left": "303px" }); $("#sortable_assigned").sortable({ connectWith: ".connectedSortable", receive: function(event, ui) { $(ui.item).addClass("ui-state-highlight"); $(ui.item).removeClass("ui-state-default"); }, update: function() { $("#menu-functions").val(""); $("#sortable_assigned li").each(function() { $("#menu-functions").val($("#menu-functions").val() + $(this).attr("value") + "#"); }); } }).disableSelection(); $("#sortable_unassigned").sortable({ connectWith: ".connectedSortable", receive: function(event, ui) { $(ui.item).addClass("ui-state-default"); $(ui.item).removeClass("ui-state-highlight"); } }).disableSelection(); function navigate_menus_change_functions_category() { var cat = $("#menus_functions_category_select").val(); $("#sortable_unassigned li").each(function() { if($(this).attr("category")==cat) $(this).show(); else $(this).hide(); }); } navigate_menus_change_functions_category(); '); return $navibars->generate(); }
function navigate_property_layout_scripts($website_id = "") { global $layout; global $website; global $current_version; $ws = $website; if (!empty($website_id) && $website->id != $website_id) { $ws = new website(); $ws->load($website_id); } $ws_languages = $ws->languages(); $default_language = array_keys($ws_languages); $default_language = $default_language[0]; $naviforms = new naviforms(); $layout->add_content(' <div id="navigate-properties-copy-from-dialog" style=" display: none; "> <div class="navigate-form-row"> <label>' . t(191, 'Source') . '</label> ' . $naviforms->buttonset('navigate_properties_copy_from_dialog_type', array('language' => t(46, 'Language'), 'item' => t(180, 'Item'), 'structure' => t(16, 'Structure')), '0', "navigate_properties_copy_from_change_origin(this);") . ' </div> <div class="navigate-form-row" style=" display: none; "> <label>' . t(46, 'Language') . '</label> ' . $naviforms->selectfield('navigate_properties_copy_from_language_selector', array_keys($ws_languages), array_values($ws_languages), $default_language, "navigate_properties_copy_from_change_language(this);") . ' </div> <div class="navigate-form-row" style=" display: none; "> <label>' . t(67, 'Title') . '</label> ' . $naviforms->textfield('navigate_properties_copy_from_item_title') . ' <button id="navigate_properties_copy_from_item_reload"><i class="fa fa-repeat"></i></button> ' . $naviforms->hidden('navigate_properties_copy_from_item_id', '') . ' </div> <div class="navigate-form-row" style=" display: none; "> <label>' . t(67, 'Title') . '</label> ' . $naviforms->textfield('navigate_properties_copy_from_structure_title') . ' <button id="navigate_properties_copy_from_structure_reload"><i class="fa fa-repeat"></i></button> ' . $naviforms->hidden('navigate_properties_copy_from_structure_id', '') . ' </div> <div class="navigate-form-row" style=" display: none; "> <label>' . t(239, 'Section') . '</label> ' . $naviforms->select_from_object_array('navigate_properties_copy_from_section', array(), 'code', 'name', '') . ' </div> </div> '); $layout->add_script(' $.getScript("lib/packages/properties/properties.js?r=' . $current_version->revision . '", function() { $(".navigate-form-row-property-action").on("click", function(e) { var that = this; e.stopPropagation(); e.preventDefault(); if(!$(this).parent().hasClass("navigate-form-row")) that = $(this).parent(); navigate_properties_copy_from_dialog(that); }); }); '); }
function users_form($item) { global $DB; global $layout; global $current_version; $navibars = new navibars(); $naviforms = new naviforms(); if (empty($item->id)) { $navibars->title(t(15, 'Users') . ' / ' . t(38, 'Create')); } else { $navibars->title(t(15, 'Users') . ' / ' . t(170, 'Edit') . ' [' . $item->id . ']'); } if (empty($item->id)) { $navibars->add_actions(array('<a href="#" onclick="navigate_tabform_submit(1);"><img height="16" align="absmiddle" width="16" src="img/icons/silk/accept.png"> ' . t(34, 'Save') . '</a>')); } else { $navibars->add_actions(array('<a href="#" onclick="navigate_tabform_submit(1);"><img height="16" align="absmiddle" width="16" src="img/icons/silk/accept.png"> ' . t(34, 'Save') . '</a>', '<a href="#" onclick="navigate_delete_dialog();"><img height="16" align="absmiddle" width="16" src="img/icons/silk/cancel.png"> ' . t(35, 'Delete') . '</a>')); $delete_html = array(); $delete_html[] = '<div id="navigate-delete-dialog" class="hidden">' . t(57, 'Do you really want to delete this item?') . '</div>'; $delete_html[] = '<script language="javascript" type="text/javascript">'; $delete_html[] = 'function navigate_delete_dialog()'; $delete_html[] = '{'; $delete_html[] = '$("#navigate-delete-dialog").removeClass("hidden");'; $delete_html[] = '$("#navigate-delete-dialog").dialog({ resizable: true, height: 150, width: 300, modal: true, title: "' . t(59, 'Confirmation') . '", buttons: { "' . t(35, 'Delete') . '": function() { $(this).dialog("close"); window.location.href = "?fid=users&act=4&id=' . $item->id . '"; }, "' . t(58, 'Cancel') . '": function() { $(this).dialog("close"); } } });'; $delete_html[] = '}'; $delete_html[] = '</script>'; $navibars->add_content(implode("\n", $delete_html)); } $navibars->add_actions(array(!empty($item->id) ? '<a href="?fid=users&act=2"><img height="16" align="absmiddle" width="16" src="img/icons/silk/add.png"> ' . t(38, 'Create') . '</a>' : '', '<a href="?fid=users&act=0"><img height="16" align="absmiddle" width="16" src="img/icons/silk/application_view_list.png"> ' . t(39, 'List') . '</a>', 'search_form')); $navibars->form(); $navibars->add_tab(t(43, "Main")); $navibars->add_tab_content($naviforms->hidden('form-sent', 'true')); $navibars->add_tab_content($naviforms->hidden('id', $item->id)); $navibars->add_tab_content_row(array('<label>ID</label>', '<span>' . (!empty($item->id) ? $item->id : t(52, '(new)')) . '</span>')); $navibars->add_tab_content_row(array('<label>' . t(1, 'User') . '</label>', $naviforms->textfield('user-username', $item->username))); $navibars->add_tab_content_row(array('<label>' . t(2, 'Password') . '</label>', '<input type="password" name="user-password" value="" size="32" autocomplete="off" />', '<span class="navigate-form-row-info">' . t(48, "Leave blank to keep the current value") . '</span>')); // force removing the browser saved password $layout->add_script(' setTimeout(function() { $("input[name=user-password]").val(""); }, 10); '); $navibars->add_tab_content_row(array('<label>' . t(44, 'E-Mail') . '</label>', '<input type="text" name="user-email" value="' . $item->email . '" size="64" />')); // Profile selector $DB->query('SELECT id, name FROM nv_profiles'); $data = $DB->result(); $select = $naviforms->select_from_object_array('user-profile', $data, 'id', 'name', $item->profile); $navibars->add_tab_content_row(array('<label>' . t(45, 'Profile') . '</label>', $select)); // Language selector $DB->query('SELECT code, name FROM nv_languages WHERE nv_dictionary != ""'); $data = $DB->result(); $select = $naviforms->select_from_object_array('user-language', $data, 'code', 'name', $item->language); $navibars->add_tab_content_row(array('<label>' . t(46, 'Language') . '</label>', $select)); $timezones = property::timezones(); if (empty($item->timezone)) { $item->timezone = date_default_timezone_get(); } $navibars->add_tab_content_row(array('<label>' . t(97, 'Timezone') . '</label>', $naviforms->selectfield("user-timezone", array_keys($timezones), array_values($timezones), $item->timezone))); // Decimal separator $data = array(0 => json_decode('{"code": ",", "name": ", ---> 1234,25"}'), 1 => json_decode('{"code": ".", "name": ". ---> 1234.25"}'), 2 => json_decode('{"code": "\'", "name": "\' ---> 1234\'25"}')); $select = $naviforms->select_from_object_array('user-decimal_separator', $data, 'code', 'name', $item->decimal_separator); $navibars->add_tab_content_row(array('<label>' . t(49, 'Decimal separator') . '</label>', $select)); // Thousands separator $data = array(0 => json_decode('{"code": "", "name": "(' . strtolower(t(581, "None")) . ') ---> 1234567"}'), 1 => json_decode('{"code": ",", "name": ", ---> 1,234,567"}'), 2 => json_decode('{"code": ".", "name": ". ---> 1.234.567"}')); $select = $naviforms->select_from_object_array('user-thousands_separator', $data, 'code', 'name', $item->thousands_separator); $navibars->add_tab_content_row(array('<label>' . t(644, 'Thousands separator') . '</label>', $select)); // Date format $data = array(0 => json_decode('{"code": "Y-m-d H:i", "name": "' . date(Y) . '-12-31 23:59"}'), 1 => json_decode('{"code": "d-m-Y H:i", "name": "31-12-' . date(Y) . ' 23:59"}'), 2 => json_decode('{"code": "m-d-Y H:i", "name": "12-31-' . date(Y) . ' 23:59"}'), 3 => json_decode('{"code": "Y/m/d H:i", "name": "' . date(Y) . '/12/31 23:59"}'), 4 => json_decode('{"code": "d/m/Y H:i", "name": "31/12/' . date(Y) . ' 23:59"}'), 5 => json_decode('{"code": "m/d/Y H:i", "name": "12/31/' . date(Y) . ' 23:59"}')); $layout->add_script(' $("#user-decimal_separator,#user-thousands_separator").on("change", function() { $("#user-decimal_separator").parent().find("label:first").removeClass("ui-state-error"); $("#user-thousands_separator").parent().find("label:first").removeClass("ui-state-error"); if($("#user-decimal_separator").val()==$("#user-thousands_separator").val()) { $("#user-decimal_separator").parent().find("label:first").addClass("ui-state-error"); $("#user-thousands_separator").parent().find("label:first").addClass("ui-state-error"); } }); $("#user-decimal_separator").trigger("change"); // force checking on load '); $select = $naviforms->select_from_object_array('user-date_format', $data, 'code', 'name', $item->date_format); $navibars->add_tab_content_row(array('<label>' . t(50, 'Date format') . '</label>', $select)); $navibars->add_tab_content($naviforms->hidden('user-skin', 'cupertino')); $navibars->add_tab_content_row(array('<label>' . t(47, 'Blocked') . '</label>', $naviforms->checkbox('user-blocked', $item->blocked))); $navibars->add_tab(t(241, "Web sites")); $navibars->add_tab_content_row(array('<label>' . t(612, "Manages all websites") . '</label>', $naviforms->checkbox("user-all-websites", empty($item->websites)))); $websites = website::all(); if (empty($websites)) { $websites = array(); } $navibars->add_tab_content_row(array('<label>' . t(405, "Selection") . '</label>', $naviforms->multiselect('user-websites', array_keys($websites), array_values($websites), $item->websites)), "user-websites-selector", 'style="display: none; padding-bottom: 16px; "'); $layout->add_script(' $("#user-all-websites").on("change", function() { $("#user-websites-selector").hide(); if(!$(this).is(":checked")) $("#user-websites-selector").show(); }); $("#user-all-websites").trigger("change"); '); $navibars->add_tab(t(17, "Permissions")); $navibars->add_tab_content($naviforms->hidden('navigate_permissions_changes', '')); $ws_tabs = '<div id="navigate-permissions-websites-tabs"><ul>'; foreach ($websites as $ws_id => $ws_name) { $ws_tabs .= '<li><a href="#navigate-permissions-websites-tab-' . $ws_id . '">' . $ws_name . '</a></li>'; } $ws_tabs .= '</ul>'; foreach ($websites as $ws_id => $ws_name) { $rows = nvweb_permissions_rows($ws_id, 'user', $item->id); $ws_tabs .= '<div id="navigate-permissions-websites-tab-' . $ws_id . '" data-website="' . $ws_id . '">'; $ws_tabs .= '<div id="permissions_list_website_' . $ws_id . '">'; $ws_tabs .= '<table class="treeTable ui-corner-all">'; $ws_tabs .= ' <thead> <tr class="ui-state-default ui-th-column"> <th width="25%">' . t(159, 'Name') . '</th> <th width="13%">' . t(467, 'Scope') . '</th> <th width="12%">' . t(160, 'Type') . '</th> <th width="50%">' . t(193, 'Value') . '</th> </tr> </thead> '; for ($r = 0; $r < count($rows); $r++) { $ws_tabs .= '<tr id="' . $rows[$r][0] . '">'; $ws_tabs .= ' <td>' . $rows[$r][1] . '</td>'; $ws_tabs .= ' <td>' . $rows[$r][2] . '</td>'; $ws_tabs .= ' <td>' . $rows[$r][3] . '</td>'; $ws_tabs .= ' <td>' . $rows[$r][4] . '</td>'; $ws_tabs .= '</tr>'; } $ws_tabs .= '</table>'; $ws_tabs .= '</div>'; $ws_tabs .= '</div>'; $layout->add_script(' $("#permissions_list_website_' . $ws_id . '").data("website", ' . $ws_id . '); '); $scripts_after_load[] = 'navigate_permissions_list_callback($("#permissions_list_website_' . $ws_id . '"));'; $navibars->add_content(navigate_permissions_structure_selector($ws_id, $ws_name)); } $ws_tabs .= '</div>'; $navibars->add_tab_content($ws_tabs); $layout->add_script(' $("#navigate-permissions-websites-tabs").tabs({ heightStyle: "fill", activate: function() { $(window).trigger("resize"); } }); '); $layout->add_script(' $.getScript("lib/packages/permissions/permissions.js?r=' . $current_version->revision . '", function() { navigate_window_resize(); ' . implode("\n", $scripts_after_load) . ' }); '); return $navibars->generate(); }
function websites_form($item) { global $user; global $DB; global $layout; global $events; $navibars = new navibars(); $naviforms = new naviforms(); $layout->navigate_media_browser(); // we want to use media browser in this function $layout->navigate_editorfield_link_dialog(); $theme = new theme(); if (!empty($item->theme)) { $theme->load($item->theme); } if (empty($item->id)) { $navibars->title(t(241, 'Websites') . ' / ' . t(38, 'Create')); } else { $navibars->title(t(241, 'Websites') . ' / ' . t(170, 'Edit') . ' [' . $item->id . ']'); } if ($user->permission('websites.edit') == 'true') { $navibars->add_actions(array('<a href="#" onclick="javascript: navigate_media_browser();" title="Ctrl+m"> <img height="16" align="absmiddle" width="16" src="img/icons/silk/images.png"> ' . t(36, 'Media') . '</a>')); $extra_actions = array(); $extra_actions[] = '<a href="#" action="navigate_reset_statistics" onclick="javascript: navigate_reset_statistics();"><img height="16" align="absmiddle" width="16" src="img/icons/silk/chart_line.png"> ' . t(429, 'Reset statistics') . '</a>'; $layout->add_script(' function navigate_reset_statistics() { navigate_confirmation_dialog( function() { $.post( "?fid=websites&act=reset_statistics&website=' . $item->id . '", {}, function(data) { $("a[action=\'navigate_reset_statistics\']").parent().fadeOut(); } ); }, "<div>' . t(430, 'Do you really want to remove all statistics of this website?') . '</div>" ); } '); if (!empty($item->id)) { $extra_actions[] = '<a href="#" action="navigate_replace_urls" onclick="javascript: navigate_replace_urls();"><img height="16" align="absmiddle" width="16" src="img/icons/silk/database_refresh.png"> ' . t(603, 'Replace URLs') . '</a>'; // try to find the OLD url for NAVIGATE_DOWNLOAD $old_url_guessed = ""; $DB->query(' SELECT text FROM nv_webdictionary WHERE node_type = "item" AND website = ' . $item->id . ' AND text LIKE ' . protect("%navigate_download.php%") . ' LIMIT 1 '); $rs = $DB->result('text'); preg_match("/<img .*?(?=src)src=\"([^\"]+)\"/si", $rs[0], $old_url_guessed); $old_url_guessed = @$old_url_guessed[1]; $old_url_guessed = substr($old_url_guessed, 0, strpos($old_url_guessed, NAVIGATE_FOLDER)); $layout->add_content(' <div id="navigate_replace_urls_dialog" style="display: none;"> <div id="" class="navigate-form-row"> <label>' . t(604, "Old") . '</label> <input type="text" style=" width: 300px;" id="replace_urls_old" name="replace_urls_old" value="' . $old_url_guessed . '/" /> </div> <div id="" class="navigate-form-row"> <label>' . t(605, "New") . '</label> <input type="text" style=" width: 300px;" id="replace_urls_new" name="replace_urls_new" value="' . NAVIGATE_PARENT . '/" /> </div> <div class="navigate-form-row"> <div class="subcomment">' . t(523, "This action can NOT be undone.") . '</div> </div> </div> '); $layout->add_script(' function navigate_replace_urls() { $("#navigate_replace_urls_dialog").dialog({ resizable: true, height: 180, width: 520, modal: true, title: "' . t(603, 'Replace URLs') . '", buttons: { "' . t(190, 'Ok') . '": function() { $.post( "?fid=websites&act=replace_urls", { old: $("#replace_urls_old").val(), new: $("#replace_urls_new").val(), website: ' . $item->id . ' }, function(data) { if(data!="true") navigate_notification("' . t(56, "Unexpected error.") . '"); else { navigate_notification("' . t(53, "Data saved successfully") . '", false, "fa fa-check"); $("#navigate_replace_urls_dialog").dialog("close"); } } ); }, "' . t(58, 'Cancel') . '": function() { $("#navigate_replace_urls_dialog").dialog("close"); } } }); } '); $extra_actions[] = '<a href="#" action="navigate_remove_website_data" onclick="javascript: navigate_remove_website_data();"><img height="16" align="absmiddle" width="16" src="img/icons/silk/cross.png"> ' . t(208, 'Remove all content') . '</a>'; $layout->add_script(' function navigate_remove_website_data() { var confirmation = "<div>"; confirmation += "<br /><div><strong>' . t(497, 'Do you really want to erase this data?') . '</strong> (' . t(16, "Structure") . ', ' . t(22, "Elements") . ', ' . t(23, "Blocks") . ', ' . t(250, "Comments") . '...)</div><br />"; confirmation += "<form action=\\"?\\" onSubmit=\\"return false;\\"><div class=\\"navigate-form-row\\"><label>' . t(2, "Password") . '</label></div><input type=\\"password\\" id=\\"navigate_remove_website_data_password\\" style=\\"width: 90%;\\" /></form></div>"; confirmation += "</div>"; $(confirmation).dialog({ resizable: true, height: 250, width: 400, modal: true, title: "' . t(59, 'Confirmation') . '", buttons: { "' . t(190, 'Ok') . '": function() { $(this).dialog("close"); $.post( "?fid=websites&act=remove_content", { website: $("#id").val(), password: $("#navigate_remove_website_data_password").val() }, function(data) { if(data=="true") { navigate_notification("' . t(419, "Process complete") . '"); $("a[action=\'navigate_remove_website_data\']").parent().fadeOut(); } else navigate_notification("' . t(56, "Unexpected error.") . ' " + data, true); } ); }, "' . t(58, 'Cancel') . '": function() { $(this).dialog("close"); } } }); } '); } // we attach an event to "websites" which will be fired by navibars to put an extra button $events->add_actions('websites', array('website' => &$item, 'navibars' => &$navibars), $extra_actions); if (empty($item->id)) { $navibars->add_actions(array('<a href="#" onclick="navigate_tabform_submit(1);" title="Ctrl+s"> <img height="16" align="absmiddle" width="16" src="img/icons/silk/accept.png"> ' . t(34, 'Save') . '</a>')); } else { $navibars->add_actions(array('<a href="#" onclick="navigate_tabform_submit(1);" title="Ctrl+s"> <img height="16" align="absmiddle" width="16" src="img/icons/silk/accept.png"> ' . t(34, 'Save') . '</a>', $user->permission('websites.delete') == 'true' ? '<a href="#" onclick="navigate_delete_dialog();"> <img height="16" align="absmiddle" width="16" src="img/icons/silk/cancel.png"> ' . t(35, 'Delete') . '</a>' : '')); $delete_html = array(); $delete_html[] = '<div id="navigate-delete-dialog" class="hidden">' . t(57, 'Do you really want to delete this item?') . '</div>'; $delete_html[] = '<script language="javascript" type="text/javascript">'; $delete_html[] = 'function navigate_delete_dialog()'; $delete_html[] = '{'; $delete_html[] = '$("#navigate-delete-dialog").removeClass("hidden");'; $delete_html[] = '$("#navigate-delete-dialog").dialog({ resizable: true, height: 150, width: 300, modal: true, title: "' . t(59, 'Confirmation') . '", buttons: { "' . t(35, 'Delete') . '": function() { $(this).dialog("close"); window.location.href = "?fid=' . $_REQUEST['fid'] . '&act=4&id=' . $item->id . '"; }, "' . t(58, 'Cancel') . '": function() { $(this).dialog("close"); } } });'; $delete_html[] = '}'; $delete_html[] = '</script>'; $navibars->add_content(implode("\n", $delete_html)); } $layout->add_script("\r\n \$(document).on('keydown.ctrl_s', function (evt) { navigate_items_tabform_submit(1); return false; } );\r\n \$(document).on('keydown.ctrl_m', function (evt) { navigate_media_browser(); return false; } );\r\n "); } $navibars->add_actions(array($user->permission('websites.edit') == 'true' && !empty($item->id) ? '<a href="?fid=websites&act=2"><img height="16" align="absmiddle" width="16" src="img/icons/silk/add.png"> ' . t(38, 'Create') . '</a>' : '', '<a href="?fid=websites&act=0"><img height="16" align="absmiddle" width="16" src="img/icons/silk/application_view_list.png"> ' . t(39, 'List') . '</a>', 'search_form')); $navibars->form(); $navibars->add_tab(t(7, "Settings")); $navibars->add_tab_content($naviforms->hidden('form-sent', 'true')); $navibars->add_tab_content($naviforms->hidden('id', $item->id)); $navibars->add_tab_content_row(array('<label>' . t(67, 'Title') . '</label>', $naviforms->textfield('title', $item->name))); $navibars->add_tab_content_row(array('<label>' . t(287, 'Protocol') . '</label>', $naviforms->selectfield('protocol', array(0 => 'http://', 1 => 'https://'), array(0 => 'HTTP', 1 => 'HTTPS [' . t(288, 'Secured site (requires certificate)') . ']'), $item->protocol))); $navibars->add_tab_content_row(array('<label>' . t(228, 'Subdomain') . '</label>', $naviforms->textfield('subdomain', $item->subdomain), '<span class="navigate-form-row-info">' . t(230, 'Ex.') . ' www</span>')); $navibars->add_tab_content_row(array('<label>' . t(229, 'Domain') . '</label>', $naviforms->textfield('domain', $item->domain), '<span class="navigate-form-row-info">' . t(230, 'Ex.') . ' naviwebs.net</span>')); $navibars->add_tab_content_row(array('<label>' . t(141, 'Folder') . '</label>', $naviforms->textfield('folder', $item->folder), '<span class="navigate-form-row-info">' . t(230, 'Ex.') . ' /new-website</span>')); $homepage_url = ""; if (!empty($item->homepage)) { $homepage_url = $item->homepage_from_structure(); } $navibars->add_tab_content_row(array('<label>' . t(187, 'Homepage') . '</label>', $naviforms->hidden('homepage_from_structure', is_numeric($item->homepage) ? $item->homepage : ""), $naviforms->autocomplete('homepage', $homepage_url, '?fid=' . $_REQUEST['fid'] . '&wid=' . $item->id . '&act=5'), '<span class="navigate-form-row-info">' . t(230, 'Ex.') . ' /en/home</span>')); $navibars->add_tab_content_row(array('<div class="subcomment"><img src="img/icons/silk/house.png" align="absmiddle" /> <span id="navigate-website-home-url"></span></div>')); $layout->add_content(' <div id="homepage_change_dialog" style="display: none;"> ' . t(595, "Right now the homepage is set from a structure element which allows multilanguage redirecting.") . ' <br /><br /> ' . t(596, "Do you want to enter a fixed path for the homepage?") . ' </div> '); $layout->add_script(' $("#homepage").on("click keydown", function(ev) { if($("#homepage_from_structure").val()!="") { $("#homepage_change_dialog").dialog({ title: "' . t(59, "Confirmation") . '", modal: true, width: 400, height: 150, buttons: [ { text: "' . t(190, "Ok") . '", icons: { primary: "ui-icon-check" }, click: function() { $("#homepage_from_structure").val(""); $("#homepage").focus(); $("#homepage_change_dialog").dialog("close"); } }, { text: "' . t(58, "Cancel") . '", icons: { primary: "ui-icon-close" }, click: function() { setTimeout( function() { $("div.ui-widget-overlay").hide(); $("#homepage").blur(); }, 100 ); $("#homepage_change_dialog").dialog("close"); } } ] }); } }); $("#subdomain,#domain,#folder,#homepage").on("keyup", navigate_website_update_home_url); $("#protocol").on("change", navigate_website_update_home_url); function navigate_website_update_home_url() { var url = $("#protocol").val(); if($("#subdomain").val().length > 0) url += $("#subdomain").val() + "."; url += $("#domain").val(); url += $("#folder").val(); url += $("#homepage").val(); $("#navigate-website-home-url").html(url); } navigate_website_update_home_url(); '); if (!empty($item->theme)) { $navibars->add_tab_content_row(array('<label>' . t(368, 'Theme') . '</label>', '<strong> <a href="?fid=8&act=themes"> <img height="16" width="16" align="absmiddle" src="img/icons/silk/rainbow.png" /> </a> ' . $theme->title . ' </strong>')); } $navibars->add_tab_content_row(array('<label>' . t(515, 'Not found paths') . '...</label>', $naviforms->selectfield('wrong_path_action', array(0 => 'blank', 1 => 'homepage', 2 => 'theme_404', 3 => 'http_404', 4 => 'website_path'), array(0 => t(516, 'Show a blank page'), 1 => t(517, 'Redirect to home page'), 2 => t(518, 'Use the custom 404 template of a theme (if exists)'), 3 => t(519, 'Send a 404 HTTP error header'), 4 => t(642, 'Redirect to a website page')), $item->wrong_path_action, 'navigate_websites_wrong_path_action_change(this)', false), '<a class="uibutton nv_website_wrong_path_trigger hidden"><i class="fa fa-sitemap"></i></a>', '<span id="navigate-website-wrong-path-redirect" class="nv_website_wrong_path_info navigate-form-row-info">' . $item->wrong_path_redirect . '</span>', $naviforms->hidden('wrong_path_redirect', $item->wrong_path_redirect))); $layout->add_script(' function navigate_websites_wrong_path_action_change(el) { $(el).parent().find(".nv_website_wrong_path_trigger").addClass("hidden"); $(el).parent().find(".nv_website_wrong_path_info").addClass("hidden"); if($(el).val()=="website_path") { $(el).parent().find(".nv_website_wrong_path_trigger").removeClass("hidden"); $(el).parent().find(".nv_website_wrong_path_info").removeClass("hidden"); } } navigate_websites_wrong_path_action_change($("#wrong_path_action")); $(".nv_website_wrong_path_trigger").on("click", function() { var trigger = this; // hide "replace title" when calling the dialog from the block action // leave it enabled when calling the dialog from the Links table if($(this).parents("table.box-table").length == 0) $("#nv_link_dialog_replace_text").parent().css("visibility", "hidden"); $("#nv_link_dialog").removeClass("hidden"); $("#nv_link_dialog").dialog({ title: $("#nv_link_dialog").attr("title"), modal: true, width: 620, height: 400, buttons: [ { text: "Ok", click: function(event, ui) { // check if there is any path selected if(!$("#nv_link_dialog_dynamic_path").hasClass("hidden")) { var input_path = $("#wrong_path_redirect"); input_path.val($("#nv_link_dialog_dynamic_path").text()); $(".nv_website_wrong_path_info").html($("#nv_link_dialog_dynamic_path").text()); $("#nv_link_dialog").dialog("close"); } } }, { text: "Cancel", click: function(event, ui) { $("#nv_link_dialog").dialog("close"); } } ], close: function() { $("#nv_link_dialog_replace_text").parent().css("visibility", "visible"); } }); }); '); // when no path is given $navibars->add_tab_content_row(array('<label>' . t(625, 'Empty paths') . '...</label>', $naviforms->selectfield('empty_path_action', array(0 => 'homepage_redirect', 1 => 'homepage_noredirect', 2 => 'blank', 3 => 'theme_404', 4 => 'http_404'), array(0 => t(517, 'Redirect to home page'), 1 => t(626, 'Display the home page, without changing the route'), 2 => t(516, 'Show a blank page'), 3 => t(518, 'Use the custom 404 template of a theme (if exists)'), 4 => t(519, 'Send a 404 HTTP error header')), $item->empty_path_action, '', false))); $navibars->add_tab_content_row(array('<label>' . t(68, 'Status') . '</label>', $naviforms->selectfield('permission', array(0 => 0, 1 => 1, 2 => 2), array(0 => t(69, 'Published'), 1 => t(70, 'Private'), 2 => t(71, 'Closed')), $item->permission, '', false, array(0 => t(360, 'Visible to everybody'), 1 => t(359, 'Visible only to Navigate CMS users'), 2 => t(358, 'Hidden to everybody'))))); $layout->add_script(' $("#permission").on("change", function() { if($(this).val() > 0) $("#redirect_to").parent().show(); else $("#redirect_to").parent().hide(); }); $("#permission").trigger("change"); '); $navibars->add_tab_content_row(array('<label>' . t(505, 'Redirect to') . '</label>', $naviforms->textfield('redirect_to', $item->redirect_to), '<span class="navigate-form-row-info">' . t(230, 'Ex.') . ' /landing_page.html</span>')); $navibars->add_tab(t(63, "Languages")); // system locales $locales = $item->unix_locales(); $system = PHP_OS; if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' && empty($locales)) { $locales = $item->windows_locales(); $system = 'MS Windows'; } /* Languages selector */ if (!is_array($item->languages_list)) { $item->languages_list = array(); } $table = new naviorderedtable("website_languages_table"); //$table->setWidth("600px"); $table->setHiddenInput("languages-order"); $navibars->add_tab_content($naviforms->hidden('languages-order', implode('#', $item->languages_list))); $table->addHeaderColumn(t(159, 'Name'), 160); $table->addHeaderColumn(t(237, 'Code'), 60); $table->addHeaderColumn(t(471, 'Variant') . '/' . t(473, 'Region'), 120); $table->addHeaderColumn(t(474, 'System locale') . ' (' . $system . ')', 150); $table->addHeaderColumn(t(64, 'Published'), 60); $table->addHeaderColumn(t(35, 'Remove'), 60); $DB->query('SELECT code, name FROM nv_languages'); $languages_rs = $DB->result(); $languages = array(); foreach ($languages_rs as $lang) { $languages[$lang->name] = $lang->code; } if (empty($item->languages)) { // load default language settings $item->languages_list = array('en'); $item->languages_published = array('en'); $item->languages = array('en' => array('language' => 'en', 'variant' => '', 'code' => 'en', 'system_locale' => strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' ? 'ENU_USA' : 'en_US.utf8')); } if (empty($item->languages)) { $item->languages = array(); } // add previously assigned locales if they are missing foreach ($item->languages as $lcode => $ldef) { if (!in_array($ldef['system_locale'], $locales)) { $locales[$ldef['system_locale']] = '? [' . $ldef['system_locale'] . ']'; } } $p = 0; foreach ($item->languages as $lcode => $ldef) { $p++; $published = array_search($lcode, $item->languages_published) !== false; $variant = !empty($ldef['variant']); $select_language = $naviforms->select_from_object_array('language-id[]', $languages_rs, 'code', 'name', $ldef['language'], ' width: 150px; '); if (empty($locales)) { $select_locale = $naviforms->textfield('language-locale[]', $ldef['system_locale'], '300px'); } else { $select_locale = $naviforms->selectfield('language-locale[]', array_keys($locales), array_values($locales), $ldef['system_locale'], '', false, array(), 'width: 300px;'); } $uid = uniqid(); $table->addRow($p, array(array('content' => $select_language, 'align' => 'left'), array('content' => '<div style=" white-space: nowrap; "><input type="text" name="language-code[]" value="' . $ldef['language'] . '" style="width: 30px;" /></div>', 'align' => 'left'), array('content' => '<input type="checkbox" name="language-variant[]" id="language-variant[' . $uid . ']" value="1" ' . ($variant ? 'checked="checked"' : '') . ' style="float:left;" class="raw-checkbox" /> <input type="text" name="language-variant-code[]" value="' . $ldef['variant'] . '" style="width: 75px;" />', 'align' => 'left'), array('content' => $select_locale, 'align' => 'left'), array('content' => '<input type="hidden" name="language-published[]" value="' . ($published ? '1' : '0') . '" /><input type="checkbox" id="language-published[' . $uid . ']" value="' . $lcode . '" ' . ($published ? 'checked="checked"' : '') . ' onclick=" if($(this).is(\':checked\')) { $(this).prev().val(1); } else { $(this).prev().val(0); }; " /><label for="language-published[' . $uid . ']"></label>', 'align' => 'center'), array('content' => '<img src="' . NAVIGATE_URL . '/img/icons/silk/cancel.png" onclick="navigate_websites_language_remove(this);" />', 'align' => 'center'))); } $navibars->add_tab_content_row(array('<label>' . t(63, 'Languages') . '</label>', '<div>' . $table->generate() . '</div>', '<div class="subcomment"> <img src="img/icons/silk/information.png" align="absmiddle" /> ' . t(72, 'Drag any row to assign priorities') . ' </div>')); $navibars->add_tab_content_row(array('<label> </label>', '<button id="websites-languages-add"><img src="img/icons/silk/add.png" align="absmiddle" style="cursor:pointer;" /> ' . t(472, 'Add') . '</button>')); $layout->add_script(' $("#website_languages_table tr").eq(1).find("td:last").children().hide(); $(\'input[name="language-variant[]"]\').each(function(i, el) { if($(el).is(":checked")) $(el).next().removeClass("ui-state-disabled"); else $(el).next().val("").addClass("ui-state-disabled"); }); $(\'input[name="language-variant-code[]"]\').on("click", function() { if(!$(this).prev().is(":checked")) $(this).prev().trigger("click"); }); $("#website_languages_table").on("change", \'select[name="language-id[]"]\', function() { var input = $(this).parent().next().find("input"); $(input).val($(this).val()); $(input).effect("highlight", {}, 2000); }); $("#website_languages_table").on("change", \'input[name="language-variant[]"]\', function() { if($(this).is(":checked")) $(this).next().removeClass("ui-state-disabled"); else $(this).next().val("").addClass("ui-state-disabled"); }); $("#websites-languages-add").on("click", function() { var tr = $("#website_languages_table").find("tr").eq(1).clone(); var tsid = new Date().getTime(); $(tr).attr("id", tsid); $(tr).find("input,label,select").each(function() { if($(this).attr("id")) { var new_name = ($(this).attr("id").split("["))[0]; $(this).attr("id", new_name + "[" + tsid + "]"); } if($(this).attr("for")) { var new_name = ($(this).attr("for").split("["))[0]; $(this).attr("for", new_name + "[" + tsid + "]"); } }); $("#website_languages_table").find("tbody:last").append(tr); $("#website_languages_table").tableDnD({ onDrop: function(table, row) { navigate_naviorderedtable_website_languages_table_reorder(); } }); navigate_naviorderedtable_website_languages_table_reorder(); $(tr).find("td:first").find("a,div,span").remove(); $(tr).find("td").eq(3).find("a,div,span").remove(); navigate_selector_upgrade($(tr).find("td:first").find("select")); if($(tr).find("td").eq(3).find("select").length > 0) navigate_selector_upgrade($(tr).find("td").eq(3).find("select")); return false; }); function navigate_websites_language_remove(el) { $(el).parent().parent().remove(); } function navigate_naviorderedtable_website_languages_table_reorder() { $("#website_languages_table tr").find("td:last").not(":first").children().show(); $("#website_languages_table tr").eq(1).find("td:last").children().hide(); } '); $navibars->add_tab(t(485, "Aliases")); $table = new naviorderedtable("website_aliases_table"); $table->addHeaderColumn(t(486, 'Alias'), 160); $table->addHeaderColumn('', 24); $table->addHeaderColumn(t(487, 'Real URL'), 60); $table->addHeaderColumn(t(35, 'Remove'), 60); $table->addRow($lang->code, array(array('content' => '<div style="width: 308px;">http://example.domain.com/demo</div>', 'align' => 'left'), array('content' => '→', 'align' => 'center'), array('content' => '<div style="width: 308px;">http://www.domain.com/example/demo</div>', 'align' => 'left'), array('content' => '', 'align' => 'left'))); if (!is_array($item->aliases)) { $item->aliases = array(); } foreach ($item->aliases as $alias => $realurl) { $table->addRow($lang->code, array(array('content' => '<input type="text" name="website-aliases-alias[]" value="' . $alias . '" style="width: 300px;" />', 'align' => 'left'), array('content' => '→', 'align' => 'center'), array('content' => '<input type="text" name="website-aliases-real[]" value="' . $realurl . '" style="width: 300px;" />', 'align' => 'left'), array('content' => '<img src="' . NAVIGATE_URL . '/img/icons/silk/cancel.png" onclick="navigate_websites_aliases_remove(this);" />', 'align' => 'center'))); } $navibars->add_tab_content_row(array('<label>' . t(485, 'Aliases') . '</label>', '<div>' . $table->generate() . '</div>', '<div class="subcomment"> <img src="img/icons/silk/information.png" align="absmiddle" /> ' . t(72, 'Drag any row to assign priorities') . ' </div>')); $navibars->add_tab_content_row(array('<label> </label>', '<button id="websites-aliases-add"><img src="img/icons/silk/add.png" align="absmiddle" style="cursor:pointer;" /> ' . t(472, 'Add') . '</button>')); $layout->add_script(' $("#websites-aliases-add").on("click", function() { var tr = $("<tr><td></td><td></td><td></td><td></td></tr>"); $(tr).attr("id", new Date().getTime()); $(tr).find("td").eq(0).html("<input type=\\"text\\" name=\\"website-aliases-alias[]\\" style=\\"width: 300px;\\" />"); $(tr).find("td").attr("align", "center").eq(1).html("→"); $(tr).find("td").eq(2).html("<input type=\\"text\\" name=\\"website-aliases-real[]\\" style=\\"width: 300px;\\" />"); $(tr).find("td").attr("align", "center").eq(3).html("<img src=\\"' . NAVIGATE_URL . '/img/icons/silk/cancel.png\\" onclick=\\"navigate_websites_aliases_remove(this);\\" />"); $("#website_aliases_table").find("tbody:last").append(tr); $("#website_aliases_table").tableDnD(); return false; }); function navigate_websites_aliases_remove(el) { $(el).parent().parent().remove(); } '); $navibars->add_tab(t(9, "Content")); // keep the default value for Navigate CMS < 2.0 if (empty($item->word_separator)) { $item->word_separator = "_"; } $navibars->add_tab_content_row(array('<label>' . t(633, 'Word separator in paths') . '</label>', $naviforms->selectfield('word_separator', array(0 => '-', 1 => '_'), array(0 => t(634, "Hyphen") . " /navigate-cms", 1 => t(635, "Underscore") . " /navigate_cms"), $item->word_separator), '<span class="navigate-form-row-info">' . t(636, 'Existing paths will not be modified') . '</span>')); $navibars->add_tab_content_row(array('<label>' . t(50, 'Date format') . '</label>', $naviforms->selectfield('date_format', array(0 => 'd/m/Y', 1 => 'd-m-Y', 2 => 'm/d/Y', 3 => 'm-d-Y', 4 => 'Y-m-d', 5 => 'Y/m/d'), array(0 => date('d/m/Y'), 1 => date('d-m-Y'), 2 => date('m/d/Y'), 3 => date('m-d-Y'), 4 => date('Y-m-d'), 5 => date('Y/m/d')), $item->date_format))); $timezones = property::timezones(); if (empty($item->default_timezone)) { $item->default_timezone = date_default_timezone_get(); } $navibars->add_tab_content_row(array('<label>' . t(207, 'Default timezone') . '</label>', $naviforms->selectfield("default_timezone", array_keys($timezones), array_values($timezones), $item->default_timezone))); $navibars->add_tab_content_row(array('<label>' . t(433, 'Resize uploaded images') . '</label>', $naviforms->selectfield('resize_uploaded_images', array(0 => 0, 1 => 600, 2 => 800, 3 => 960, 4 => 1200, 5 => 1600, 6 => 2000), array(0 => t(434, 'Keep original file'), 1 => '600 px', 2 => '800 px', 3 => '960 px', 4 => '1200 px', 5 => '1600 px', 6 => '2000 px'), $item->resize_uploaded_images), '<span class="navigate-form-row-info">' . t(435, 'Maximum width or height') . '</span>')); // navigate cms 2.0.2: website->tinymce_css field is DEPRECATED (will be removed in a future revision) if (!empty($item->tinymce_css)) { $navibars->add_tab_content_row(array('<label>tinyMCE CSS</label>', $naviforms->textfield('tinymce_css', $item->tinymce_css), '<span class="navigate-form-row-info">' . t(230, 'Ex.') . ' /css/style.content.css</span>')); } $navibars->add_tab_content_row(array('<label>' . t(328, 'Favicon') . '</label>', $naviforms->dropbox('website-favicon', $item->favicon, "image"))); $navibars->add_tab_content_row(array('<label>' . t(597, 'Share files in media browser') . '</label>', $naviforms->checkbox('share_files_media_browser', $item->share_files_media_browser == '1'), '<span class="navigate-form-row-info">(' . t(598, 'Only between websites of the current Navigate CMS installation') . ')</span>')); // default comment options for elements $navibars->add_tab_content_row(array('<label>' . t(252, 'Comments enabled for') . '</label>', $naviforms->selectfield('comments_enabled_for', array(0 => 0, 1 => 1, 2 => 2), array(0 => t(253, 'Nobody'), 1 => t(24, 'Registered users'), 2 => t(254, 'Everyone')), $item->comments_enabled_for))); $webuser_name = ''; if ($item->comments_default_moderator == "c_author") { $webuser_name = t(545, 'Content author'); } else { if (!empty($item->comments_default_moderator)) { $webuser_name = $DB->query_single('username', 'nv_users', ' id = ' . intval($item->comments_default_moderator)); } } $moderator_id = array('c_author'); $moderator_username = array('{' . t(545, 'Content author') . '}'); if (!empty($item->comments_default_moderator)) { if ($item->comments_default_moderator != 'c_author') { $moderator_username[] = $DB->query_single('username', 'nv_users', ' id = ' . intval($item->comments_default_moderator)); $moderator_id[] = $item->comments_default_moderator; } } $navibars->add_tab_content_row(array('<label>' . t(255, 'Moderator') . '</label>', $naviforms->selectfield('comments_default_moderator', $moderator_id, $moderator_username, $item->comments_default_moderator, null, false, null, null, false), '<span style="display: none;" id="comments_default_moderator-helper">' . t(535, "Find user by name") . '</span>', '<div class="subcomment"><img align="absmiddle" src="' . NAVIGATE_URL . '/img/icons/silk/information.png" /> ' . t(256, 'Leave blank to accept all comments') . '</div>')); $layout->add_script(' // comments moderator autocomplete $("#comments_default_moderator").select2( { placeholder: $("#comments_default_moderator-helper").text(), minimumInputLength: 0, ajax: { url: "?fid=items&act=json_find_user", dataType: "json", delay: 100, data: function (params) { return { username: params.term, nd: new Date().getTime(), page_limit: 30, // page size page: params.page // page number }; }, processResults: function (data, params) { params.page = params.page || 1; data.items.unshift({id: "c_author", text: "{' . t(545, 'Content author') . '}" }); data.total_count++; return { results: data.items, pagination: { more: (params.page * 30) < data.total_count } }; } }, templateSelection: function(row) { if(row.id && row.id != "c_author") return row.text + " <helper style=\'opacity: .5;\'>#" + row.id + "</helper>"; else return row.text; }, escapeMarkup: function (markup) { return markup; }, // let our custom formatter work triggerChange: true, allowClear: true }); $("#comments_default_moderator-text").on("change", function(e) { $("#comments_default_moderator").val(e.val); }); '); /* TAB EMAIL */ $navibars->add_tab(t(44, "E-Mail")); $navibars->add_tab_content_row(array('<label>' . t(548, "Method") . '</label>', $naviforms->buttonset('mail_mailer', array('smtp' => 'SMTP', 'sendmail' => 'Sendmail', 'mail' => 'PHP mail'), empty($item->mail_mailer) ? 'smtp' : $item->mail_mailer, "navigate_change_mail_transport(this);"))); $layout->add_script(' function navigate_change_mail_transport(el) { var mail_mailer = ""; if(el=="smtp" || el=="sendmail" || el=="mail") mail_mailer = el; else mail_mailer = $("input#" + $(el).attr("for")).val(); $("#mail_server").parent().show(); $("#mail_port").parent().show(); $("#mail_security").parent().show(); $("#mail_user").parent().show(); $("#mail_password").parent().show(); if(mail_mailer=="sendmail" || mail_mailer=="mail") { $("#mail_server").parent().hide(); $("#mail_port").parent().hide(); $("#mail_security").parent().hide(); $("#mail_user").parent().hide(); $("#mail_password").parent().hide(); } } navigate_change_mail_transport("' . (empty($item->mail_mailer) ? 'smtp' : $item->mail_mailer) . '"); '); $navibars->add_tab_content_row(array('<label>' . t(231, 'Server') . '</label>', $naviforms->textfield('mail_server', $item->mail_server), '<span class="navigate-form-row-info">' . t(230, 'Ex.') . ' localhost, mail.yourdomain.com</span>')); $navibars->add_tab_content_row(array('<label>' . t(232, 'Port') . '</label>', $naviforms->textfield('mail_port', $item->mail_port), '<span class="navigate-form-row-info">' . t(230, 'Ex.') . ' 25</span>')); $navibars->add_tab_content_row(array('<label>' . t(427, 'Security protocol') . '</label>', $naviforms->selectfield('mail_security', array(0, 1, 2), array(t(581, "None"), "SSL / TLS", "STARTTLS"), $item->mail_security))); $navibars->add_tab_content_row(array('<label>' . t(1, 'User') . '</label>', $naviforms->textfield('mail_user', $item->mail_user), '<span class="navigate-form-row-info">' . t(230, 'Ex.') . ' web@yourdomain.com</span>')); $navibars->add_tab_content_row(array('<label>' . t(233, 'Address') . '</label>', $naviforms->textfield('mail_address', $item->mail_address), '<span class="navigate-form-row-info">' . t(230, 'Ex.') . ' web@yourdomain.com</span>')); $navibars->add_tab_content_row(array('<label>' . t(2, 'Password') . '</label>', '<input type="password" name="mail_password" id="mail_password" autocomplete="off" value="" size="32" />', '<span class="navigate-form-row-info">' . t(48, "Leave blank to keep the current value") . '</span>')); // force removing the browser saved password $layout->add_script(' setTimeout(function() { $("input[name=mail_password]").val(""); }, 10); '); if (empty($item->contact_emails)) { $item->contact_emails = array(); } $navibars->add_tab_content_row(array('<label>' . t(263, 'Support E-Mails') . '</label>', $naviforms->textarea('contact_emails', implode("\n", $item->contact_emails)), '<span class="navigate-form-row-info">' . t(264, "One entry per line") . '</span>')); $navibars->add_tab_content_row(array('<label> </label>', '<button id="mail_test"><img src="' . NAVIGATE_URL . '/img/icons/silk/email_go.png" align="absmiddle" /> ' . t(390, "Test") . '</button>')); $layout->add_script(' $("#mail_test").on("click", function() { navigate_status("' . t(391, "Trying to send a test e-mail…") . '", "loader", true); $.ajax({ type: "POST", url: "?fid=' . $_GET['fid'] . '&act=email_test", data: { mail_mailer: $("input[name=\\"mail_mailer[]\\"]:checked").val(), mail_server: $("#mail_server").val(), mail_port: $("#mail_port").val(), mail_security: $("#mail_security").is(":checked"), mail_user: $("#mail_user").val(), mail_address: $("#mail_address").val(), mail_password: $("#mail_password").val(), send_to: $("#contact_emails").val() }, success: function(data) { navigate_status(navigate_lang_dictionary[42], "ready"); if(!data) navigate_notification("' . t(56, "Unexpected error.") . '"); else navigate_notification("' . t(392, "E-Mail sent") . '"); }, error: function(data) { navigate_status(navigate_lang_dictionary[42], "ready"); var error_message = (data.responseText).split("<br />")[0]; if(error_message!="") error_message = ": " + error_message; navigate_notification("' . t(56, "Unexpected error.") . '" + error_message, true); }, dataType: "json" }); return false; }); '); /* METATAGS TAB */ if (!empty($item->id) && !empty($item->languages)) { $navibars->add_tab(t(513, "Metatags")); $website_languages_selector = $item->languages(); $website_languages_selector = array_merge(array('' => '(' . t(443, 'All') . ')'), $website_languages_selector); $navibars->add_tab_content_row(array('<label>' . t(63, 'Languages') . '</label>', $naviforms->buttonset('metatags_language_selector', $website_languages_selector, '', "navigate_tabform_language_selector(this);"))); foreach ($item->languages_list as $lang) { $language_info = '<span class="navigate-form-row-language-info" title="' . language::name_by_code($lang) . '"><img src="img/icons/silk/comment.png" align="absmiddle" />' . $lang . '</span>'; $navibars->add_tab_content_row(array('<label>' . t(334, 'Description') . ' ' . $language_info . '</label>', $naviforms->textfield('metatag_description-' . $lang, $item->metatag_description[$lang]), '<span class="navigate-form-row-info">150-160</span>'), '', 'lang="' . $lang . '"'); $navibars->add_tab_content_row(array('<label>' . t(536, 'Keywords') . ' ' . $language_info . '</label>', $naviforms->textfield('metatag_keywords-' . $lang, $item->metatag_keywords[$lang])), '', 'lang="' . $lang . '"'); $layout->add_script(' $("#metatag_keywords-' . $lang . '").tagit({ removeConfirmation: true, allowSpaces: true, singleField: true, singleFieldDelimiter: ",", placeholderText: "+", autocomplete: { delay: 0, minLength: 1, source: "?fid=items&act=json_tags_search&lang=' . $lang . '" }, afterTagAdded: function(event, ui) { var tags = $(this).tagit("assignedTags"); if(tags.length > 0) tags = tags.join(","); else tags = ""; $("#metatag_keywords-' . $lang . '").val(tags); } }); '); $navibars->add_tab_content_row(array('<label>' . t(514, "Additional metatags") . ' ' . $language_info . '</label>', $naviforms->scriptarea('metatags-' . $lang, $item->metatags[$lang], 'html', ' width: 75%; height: 100px; ')), '', 'lang="' . $lang . '"'); } } /* SERVICES TAB */ $navibars->add_tab(t(178, "Services")); $navibars->add_tab_content_row(array('<label>' . t(498, 'Additional scripts') . '</label>', $naviforms->scriptarea('additional_scripts', $item->additional_scripts, 'js', ' width: 600px; height: 250px; '), '<div style="clear: both;"><label> </label><script type="text/javascript">...</script></div>')); if (!empty($item->theme)) { $navibars->add_tab(t(368, 'Theme') . ': ' . $theme->title); if (!is_array($theme->options)) { $theme->options = array(); } // show a language selector (only if it's a multilanguage website and has properties) if (!empty($theme->options) && count($item->languages) > 1) { $website_languages_selector = $item->languages(); $website_languages_selector = array_merge(array('' => '(' . t(443, 'All') . ')'), $website_languages_selector); $navibars->add_tab_content_row(array('<label>' . t(63, 'Languages') . '</label>', $naviforms->buttonset('language_selector', $website_languages_selector, '', "navigate_tabform_language_selector(this);")), "navigate-form-tab-theme-language_selector"); // hide languages selector if there isn't a multilanguage property $layout->add_script(' $(document).ready(function() { if($("#navigate-form-tab-theme-language_selector").parent().find(".navigate-form-row[lang]").length < 1) { $("#navigate-form-tab-theme-language_selector").css("display", "none"); } }); '); } // common property: style // 1: get available style IDs $styles_values = array_keys((array) $theme->styles); if (!is_array($styles_values)) { $styles_values = array(); } // 2: prepare array of style ID => style name $styles = array(); foreach ($styles_values as $sv) { $styles[$sv] = $theme->styles->{$sv}->name; if (empty($styles[$sv])) { $styles[$sv] = $sv; } $styles[$sv] = $theme->t($styles[$sv]); } $property = new property(); $property->id = 'style'; $property->name = t(431, 'Style'); $property->type = 'option'; $property->options = serialize($styles); $property->value = $item->theme_options->style; $navibars->add_tab_content(navigate_property_layout_field($property)); foreach ($theme->options as $theme_option) { $property = new property(); $property->load_from_theme($theme_option, $item->theme_options->{$theme_option->id}); $navibars->add_tab_content(navigate_property_layout_field($property, "", $item->id)); } navigate_property_layout_scripts($item->id); } $events->trigger('websites', 'edit', array('item' => &$item, 'navibars' => &$navibars, 'naviforms' => &$naviforms)); return $navibars->generate(); }
function feeds_form($item) { global $user; global $DB; global $website; global $layout; $navibars = new navibars(); $naviforms = new naviforms(); $layout->navigate_media_browser(); // we can use media browser in this function if (empty($item->id)) { $navibars->title(t(326, 'Feeds') . ' / ' . t(38, 'Create')); } else { $navibars->title(t(326, 'Feeds') . ' / ' . t(170, 'Edit') . ' [' . $item->id . ']'); } $navibars->add_actions(array('<a href="#" onclick="javascript: navigate_media_browser();"><img height="16" align="absmiddle" width="16" src="img/icons/silk/images.png"> ' . t(36, 'Media') . '</a>')); if (empty($item->id)) { $navibars->add_actions(array('<a href="#" onclick="navigate_tabform_submit(1);"><img height="16" align="absmiddle" width="16" src="img/icons/silk/accept.png"> ' . t(34, 'Save') . '</a>')); } else { $navibars->add_actions(array('<a href="#" onclick="navigate_tabform_submit(1);"><img height="16" align="absmiddle" width="16" src="img/icons/silk/accept.png"> ' . t(34, 'Save') . '</a>', '<a href="#" onclick="navigate_delete_dialog();"><img height="16" align="absmiddle" width="16" src="img/icons/silk/cancel.png"> ' . t(35, 'Delete') . '</a>')); $delete_html = array(); $delete_html[] = '<div id="navigate-delete-dialog" class="hidden">' . t(57, 'Do you really want to delete this item?') . '</div>'; $delete_html[] = '<script language="javascript" type="text/javascript">'; $delete_html[] = 'function navigate_delete_dialog()'; $delete_html[] = '{'; $delete_html[] = '$("#navigate-delete-dialog").removeClass("hidden");'; $delete_html[] = '$("#navigate-delete-dialog").dialog({ resizable: true, height: 150, width: 300, modal: true, title: "' . t(59, 'Confirmation') . '", buttons: { "' . t(58, 'Cancel') . '": function() { $(this).dialog("close"); }, "' . t(35, 'Delete') . '": function() { $(this).dialog("close"); window.location.href = "?fid=' . $_REQUEST['fid'] . '&act=4&id=' . $item->id . '"; } } });'; $delete_html[] = '}'; $delete_html[] = '</script>'; $navibars->add_content(implode("\n", $delete_html)); } $navibars->add_actions(array(!empty($item->id) ? '<a href="?fid=feeds&act=2"><img height="16" align="absmiddle" width="16" src="img/icons/silk/add.png"> ' . t(38, 'Create') . '</a>' : '', '<a href="?fid=feeds&act=0"><img height="16" align="absmiddle" width="16" src="img/icons/silk/application_view_list.png"> ' . t(39, 'List') . '</a>', 'search_form')); $navibars->form(); $navibars->add_tab(t(43, "Main")); $navibars->add_tab_content($naviforms->hidden('form-sent', 'true')); $navibars->add_tab_content($naviforms->hidden('id', $item->id)); $navibars->add_tab_content_row(array('<label>ID</label>', '<span>' . (!empty($item->id) ? $item->id : t(52, '(new)')) . '</span>')); $navibars->add_tab_content_row(array('<label>' . t(331, 'Format') . '</label>', $naviforms->selectfield('format', array(0 => 'RSS2.0', 1 => 'RSS0.91', 2 => 'ATOM', 3 => 'ATOM0.3', 4 => 'OPML', 5 => 'MBOX', 6 => 'HTML'), array(0 => 'RSS 2.0 (' . t(333, 'Recommended') . ')', 1 => 'RSS 0.91', 2 => 'ATOM', 3 => 'ATOM 0.3', 4 => 'OPML', 5 => 'mBox', 6 => 'HTML'), $item->format))); $navibars->add_tab_content_row(array('<label>' . t(335, 'Entries') . '</label>', $naviforms->selectfield('entries', array(0 => 10, 1 => 15, 2 => 20, 3 => 25, 4 => 50), array(0 => 10, 1 => 15, 2 => 20, 3 => 25, 4 => 50), $item->entries))); $navibars->add_tab_content_row(array('<label>' . t(336, 'Display') . '</label>', $naviforms->selectfield('content', array(0 => 'title', 1 => 'resume', 2 => 'content'), array(0 => t(67, 'Title'), 1 => t(337, 'Summary'), 2 => t(9, 'Content')), $item->content))); $navibars->add_tab_content_row(array('<label>' . t(157, 'Image') . '</label>', $naviforms->dropbox('image', $item->image, 'image'))); $navibars->add_tab_content_row(array('<label>' . t(68, 'Status') . '</label>', $naviforms->selectfield('permission', array(0 => 0, 1 => 1, 2 => 2), array(0 => t(69, 'Published'), 1 => t(70, 'Private'), 2 => t(81, 'Hidden')), $item->permission, '', false, array(0 => t(360, 'Visible to everybody'), 1 => t(359, 'Visible only to Navigate CMS users'), 2 => t(358, 'Hidden to everybody'))))); $navibars->add_tab_content_row(array('<label>' . t(65, 'Enabled') . '</label>', $naviforms->checkbox('enabled', $item->enabled))); $navibars->add_tab_content_row(array('<label>' . t(332, 'Views') . '</label>', intval($item->views))); $navibars->add_tab(t(54, "Text") . ' / ' . t(74, "Paths")); $lang_selector = array(); $lang_selector[] = '<div class="buttonset">'; $checked = ' checked="checked" '; foreach ($website->languages_list as $lang_code) { $lang_selector[] = '<input type="radio" id="language_selector_' . $lang_code . '" name="language_selector" value="' . $lang_code . '" ' . $checked . ' /> <label for="language_selector_' . $lang_code . '" onclick="navigate_feeds_select_language(\'' . $lang_code . '\');">' . language::name_by_code($lang_code) . '</label>'; $checked = ""; } $lang_selector[] = '</div>'; $navibars->add_tab_content_row(array('<label>' . t(63, 'Languages') . '</label>', implode("\n", $lang_selector))); foreach ($website->languages_list as $lang_code) { $navibars->add_tab_content('<div class="language_fields" id="language_fields_' . $lang_code . '" style=" display: none; ">'); $navibars->add_tab_content_row(array('<label>' . t(67, 'Title') . '</label>', $naviforms->textfield('title-' . $lang_code, @$item->dictionary[$lang_code]['title']))); $open_live_site = ''; if (!empty($item->paths[$lang_code])) { $open_live_site = ' <a target="_blank" href="' . $website->absolute_path(true) . $item->paths[$lang_code] . '"><img src="img/icons/silk/world_go.png" align="absmiddle" /></a>'; } $navibars->add_tab_content_row(array('<label>' . t(75, 'Path') . $open_live_site . '</label>', $naviforms->textfield('path-' . $lang_code, @$item->paths[$lang_code], NULL, 'navigate_feeds_path_check(this);'), '<span> </span>')); $navibars->add_tab_content_row(array('<div class="subcomment"><span class="ui-icon ui-icon-info" style=" float: left; margin-left: -3px; "></span> ' . t(83, 'Leave blank to disable this item') . '</div>')); $navibars->add_tab_content_row(array('<label>' . t(334, 'Description') . '</label>', $naviforms->textarea('description-' . $lang_code, @$item->dictionary[$lang_code]['description']))); $navibars->add_tab_content('</div>'); } $layout->add_script(' function navigate_feeds_select_language(code) { $(".language_fields").css("display", "none"); $("#language_fields_" + code).css("display", "block"); } var active_languages = ["' . implode('", "', $website->languages_list) . '"]; var last_check = []; function navigate_feeds_path_generate(el) { var language = $(el).attr("id").substr(5); var surl = ""; surl = "/" + language; var title = $("#title-"+language).val(); title = title.replace(/([\'"“”«»?:\\+\\&!¿#\\\\])/g, ""); title = title.replace(/[.\\s]+/g, navigate["word_separator"]); surl += "/" + title; $(el).val(surl.toLowerCase()); navigate_feeds_path_check(el); } function navigate_feeds_path_check(el) { var caret_position = null; if($(el).is("input") && $(el).is(":focus")) caret_position = $(el).caret(); var path = $(el).val(); if(path=="") return; if(path==last_check[$(el).id]) return; path = path.replace(/([\'"“”«»?:\\+\\&!¿#\\\\])/g, ""); path = path.replace(/[.\\s]+/g, navigate["word_separator"]); $(el).val(path); last_check[$(el).id] = path; $(el).next().html("<img src=\\"' . NAVIGATE_URL . '/img/loader.gif\\" align=\\"absmiddle\\" />"); $.ajax({ url: "' . NAVIGATE_URL . '/' . NAVIGATE_MAIN . '?fid=' . $_REQUEST['fid'] . '&act=path_check", dataType: "json", data: "id=' . $item->id . '&path=" + $(el).val(), type: "get", success: function(data, textStatus) { var free = true; if(data && data.length==1) { // same element? if( data[0].object_id != "' . $item->id . '" || data[0].type != "feed" ) { free = false; } } else if(data && data.length > 1) { free = false; } if(free) free = "<img src=\\"' . NAVIGATE_URL . '/img/icons/silk/tick.png\\" align=\\"absmiddle\\" />"; else free = "<img src=\\"' . NAVIGATE_URL . '/img/icons/silk/cancel.png\\" align=\\"absmiddle\\" />"; free += "<img class=\\"erase_path\\" src=\\"" + NAVIGATE_URL + "/img/icons/silk/erase.png\\" align=\\"absmiddle\\" />"; $(el).next().find(".erase_path").off(); $(el).next().html(free); $(el).next().find(".erase_path").on("click", function() { $(el).focus(); $(el).val(""); }).css("cursor", "pointer"); } }); if($(el).is("input") && $(el).is(":focus")) $(el).caret(caret_position) } $(window).bind("load", function() { for(al in active_languages) { navigate_feeds_path_check($("#path-" + active_languages[al])); $("#path-" + active_languages[al]).bind("focus", function() { if($(this).val() == "") navigate_feeds_path_generate($(this)); }); } }); '); $layout->add_script('navigate_feeds_select_language("' . $website->languages_list[0] . '")'); $navibars->add_tab(t(330, "Categories")); $hierarchy = structure::hierarchy(0); $categories_list = structure::hierarchyList($hierarchy, $item->categories); $navibars->add_tab_content_row(array('<label>' . t(330, 'Categories') . '</label>', '<div class="category_tree" id="category-tree-parent"><img src="img/icons/silk/world.png" align="absmiddle" /> ' . $website->name . '<div class="tree_ul">' . $categories_list . '</div>' . '</div>')); if (!is_array($item->categories)) { $item->categories = array(); } $navibars->add_tab_content($naviforms->hidden('categories', implode(',', $item->categories))); $layout->add_script(' $("#category-tree-parent .tree_ul").jstree({ plugins: ["changed", "types", "checkbox"], "types" : { "default": { "icon": "img/icons/silk/folder.png" }, "leaf": { "icon": "img/icons/silk/page_white.png" } }, "checkbox": { three_state: false, cascade: "undetermined" }, "core": { dblclick_toggle: false } }) .on("dblclick.jstree", function(e) { e.preventDefault(); e.stopPropagation(); var li = $(e.target).closest("li"); $("#category-tree-parent .tree_ul").jstree("open_node", "#" + li[0].id); var children_nodes = new Array(); children_nodes.push(li); $(li).find("li").each(function() { children_nodes.push("#" + $(this)[0].id); }); $("#category-tree-parent .tree_ul").jstree("select_node", children_nodes); return false; }) .on("changed.jstree", function(e, data) { var i, j, r = []; var categories = new Array(); $("#categories").val(""); for(i = 0, j = data.selected.length; i < j; i++) { var id = data.instance.get_node(data.selected[i]).data.nodeId; categories.push(id); } if(categories.length > 0) $("#categories").val(categories); }); '); return $navibars->generate(); }
function nvweb_permissions_rows($website_id, $object_type, $object_id) { global $DB; $naviforms = new naviforms(); $object = new stdClass(); if ($object_type == 'user') { $object = new user(); $object->load($object_id); } else { if ($object_type == 'profile') { $object = new profile(); $object->load($object_id); } } $permissions_definitions = permission::get_definitions(); $permissions_values = permission::get_values($object_type, $object, $permissions_definitions, $website_id); $permissions_definitions = array_merge($permissions_definitions['system'], $permissions_definitions['functions'], $permissions_definitions['settings'], $permissions_definitions['extensions']); $out = array(); $iRow = 0; for ($i = 0; $i < count($permissions_definitions); $i++) { $control = ''; $type = ''; $scope = t(470, 'System'); $field_name = "wid" . $website_id . "." . $permissions_definitions[$i]['name']; if ($permissions_definitions[$i]['scope'] == 'functions') { $scope = t(240, 'Functions'); } else { if ($permissions_definitions[$i]['scope'] == 'settings') { $scope = t(459, 'Settings'); } else { if ($permissions_definitions[$i]['scope'] == 'extensions') { $scope = t(327, 'Extensions'); } } } switch ($permissions_definitions[$i]['type']) { case 'boolean': $type = t(206, 'Boolean'); $control = $naviforms->buttonset($field_name, array('true' => '<span class="ui-icon ui-icon-circle-check"></span>', 'false' => '<span class="ui-icon ui-icon-circle-close"></span>'), $permissions_values[$permissions_definitions[$i]['name']], "navigate_permission_change_boolean(this);"); break; case 'integer': $type = t(468, 'Integer'); $control = $naviforms->textfield($field_name, $permissions_values[$permissions_definitions[$i]['name']], '99%', 'navigate_permission_change_text(this);'); break; case 'option': case 'moption': $options = $permissions_definitions[$i]['options']; switch ($options) { case "websites": $options = array(); $DB->query("SELECT id, name FROM nv_websites"); $websites = $DB->result(); foreach ($websites as $ws) { $options[$ws->id] = $ws->name; } break; case "extensions": $options = array(); $extensions = extension::list_installed(null, true); foreach ($extensions as $ext) { $options[$ext['code']] = $ext['title']; } break; case "structure": $options = array(); $categories = $permissions_values[$permissions_definitions[$i]['name']]; if (!is_array($categories)) { $categories = array(); } $categories = array_filter($categories); $control = '<button data-permission-name="' . $permissions_definitions[$i]['name'] . '" data-action="structure" data-value="' . json_encode($categories) . '" title="' . count($categories) . '"><i class="fa fa-sitemap fa-fw"></i> ' . t(611, "Choose") . '</button>'; break; default: } $type = t(200, 'Options'); if (empty($control)) { $control = $naviforms->selectfield($field_name, array_keys($options), array_values($options), $permissions_values[$permissions_definitions[$i]['name']], 'navigate_permission_change_option(this);', $permissions_definitions[$i]['type'] == 'moption'); } break; case 'color': $type = t(441, 'Color'); $control = $naviforms->colorfield($field_name, $permissions_values[$permissions_definitions[$i]['name']], array(), 'navigate_permission_change_text'); break; case 'string': default: $type = t(469, 'String'); $control = $naviforms->textfield($field_name, $permissions_values[$permissions_definitions[$i]['name']], '99%', 'navigate_permission_change_text(this);'); break; } // search filters if (!empty($_REQUEST['filters'])) { $include = navitable::jqgridCheck(array('name' => $permissions_definitions[$i]['name'], 'scope' => $scope, 'type' => $type, 'value' => $permissions_values[$permissions_definitions[$i]['name']]), $_REQUEST['filters']); if (!$include) { continue; } } $out[$iRow] = array(0 => $permissions_definitions[$i]['name'], 1 => '<div data-description="' . $permissions_definitions[$i]['description'] . '">' . '<span class="ui-icon ui-icon-float ui-icon-info"></span> ' . '<span>' . $permissions_definitions[$i]['name'] . '</span></div>', 2 => $scope, 3 => $type, 4 => $control); $iRow++; } return $out; }
function files_item_properties($item) { global $user; global $website; global $layout; global $user; $navibars = new navibars(); $naviforms = new naviforms(); $navibars->title(t(89, 'Files')); $layout->navigate_media_browser(); // we can use media browser in this function //$navibars->add_actions( array( '<a href="?fid='.$_REQUEST['fid'].'&act=0&parent='.$item->parent.'"><img height="16" align="absmiddle" width="16" src="img/icons/silk/clipboard.png"> NaviM+</a>')); $navibars->add_actions(array('<a href="#" onclick="navigate_tabform_submit(1);"><img height="16" align="absmiddle" width="16" src="img/icons/silk/accept.png"> ' . t(34, 'Save') . '</a>', $user->permission("files.delete") == "true" ? '<a href="#" onclick="navigate_delete_dialog();"><img height="16" align="absmiddle" width="16" src="img/icons/silk/cancel.png"> ' . t(35, 'Delete') . '</a>' : '')); $navibars->add_actions(array('<a href="?fid=' . $_REQUEST['fid'] . '&act=0&parent=' . $item->parent . '"><img height="16" align="absmiddle" width="16" src="img/icons/silk/folder_up.png"> ' . t(139, 'Back') . '</a>', 'search_form')); $delete_html = array(); $delete_html[] = '<script language="javascript" type="text/javascript">'; $delete_html[] = 'function navigate_delete_dialog()'; $delete_html[] = '{'; $delete_html[] = '$("<div id=\\"navigate-delete-dialog\\" class=\\"hidden\\">' . t(57, 'Do you really want to delete this item?') . '</div>").dialog( { resizable: true, height: 150, width: 300, modal: true, title: "' . t(59, 'Confirmation') . '", buttons: { "' . t(35, 'Delete') . '": function() { $.ajax( { async: false, url: "' . NAVIGATE_URL . '/' . NAVIGATE_MAIN . '?fid=' . $_REQUEST['fid'] . '&act=json&op=delete&id=' . $item->id . '", success: function(data) { if(data=="true" || data=="1") window.location.href = "?fid=' . $_REQUEST['fid'] . '&act=0&parent=' . $item->parent . '"; else navigate_notification(data); } }); $(this).dialog("close"); $("#navigate-delete-dialog").remove(); }, "' . t(58, 'Cancel') . '": function() { $(this).dialog("close"); $("#navigate-delete-dialog").remove(); } } }); }'; $delete_html[] = '</script>'; $navibars->add_content(implode("\n", $delete_html)); $navibars->form(); $navibars->add_tab(t(43, "Main")); $navibars->add_tab_content($naviforms->hidden('form-sent', 'true')); $navibars->add_tab_content($naviforms->hidden('id', $item->id)); $navibars->add_tab_content_row(array('<label>ID</label>', '<span>' . $item->id . '</span>')); $navibars->add_tab_content_row(array('<label>' . t(144, 'Filename') . '</label>', $naviforms->textfield('name', $item->name))); $navibars->add_tab_content_row(array('<label>' . t(145, 'Size') . '</label>', '<span>' . core_bytes($item->size) . '</span>')); $navibars->add_tab_content_row(array('<label>' . t(160, 'Type') . '</label>', $naviforms->selectfield('type', array(0 => 'image', 1 => 'video', 2 => 'audio', 3 => 'document', 4 => 'flash', 5 => 'file'), array(0 => t(157, 'Image'), 1 => t(272, 'Video'), 2 => t(31, 'Audio'), 3 => t(539, 'Document'), 4 => 'Flash', 5 => t(82, 'File')), $item->type, false))); // retrieve a full list of mimetypes by extension $mimetypes = array_values(file::mimetypes()); // remove duplicate entries $mimetypes = array_unique($mimetypes); sort($mimetypes); $mimetypes = array_filter($mimetypes); $navibars->add_tab_content_row(array('<label>MIME</label>', $naviforms->selectfield('mime', $mimetypes, $mimetypes, $item->mime, false))); $navibars->add_tab_content_row(array('<label>' . t(364, 'Access') . '</label>', $naviforms->selectfield('access', array(0 => 0, 1 => 2, 2 => 1, 3 => 3), array(0 => t(254, 'Everybody'), 1 => t(362, 'Not signed in'), 2 => t(361, 'Web users only'), 3 => t(512, 'Selected web user groups')), $item->access, 'navigate_webuser_groups_visibility($(this).val());', false, array(1 => t(363, 'Users who have not yet signed in'))))); $webuser_groups = webuser_group::all_in_array(); $navibars->add_tab_content_row(array('<label>' . t(506, "Groups") . '</label>', $naviforms->multiselect('groups', array_keys($webuser_groups), array_values($webuser_groups), $item->groups)), 'webuser-groups-field'); $layout->add_script(' function navigate_webuser_groups_visibility(access_value) { if(access_value==3) $("#webuser-groups-field").show(); else $("#webuser-groups-field").hide(); } navigate_webuser_groups_visibility(' . $item->access . '); '); $navibars->add_tab_content_row(array('<label>' . t(80, 'Permission') . '</label>', $naviforms->selectfield('permission', array(0 => 0, 1 => 1, 2 => 2), array(0 => t(69, 'Published'), 1 => t(70, 'Private'), 2 => t(81, 'Hidden')), $item->permission))); $navibars->add_tab_content_row(array('<label>' . t(65, 'Enabled') . '</label>', $naviforms->checkbox('enabled', $item->enabled))); /* $navibars->add_tab_content_row(array( '<label>'.t(153, 'Embed link').'</label>', '<a href="'.NAVIGATE_DOWNLOAD.'?wid='.$website->id.'&id='.$item->id.'&disposition=inline" target="_blank">'.NAVIGATE_DOWNLOAD.'?wid='.$website->id.'&id='.$item->id.'&disposition=inline</a>')); $navibars->add_tab_content_row(array( '<label>'.t(154, 'Download link').'</label>', '<a href="'.NAVIGATE_DOWNLOAD.'?wid='.$website->id.'&id='.$item->id.'&disposition=attachment">'.NAVIGATE_DOWNLOAD.'?wid='.$website->id.'&id='.$item->id.'&disposition=attachment</a>')); */ $website_root = $website->absolute_path(true) . '/object'; if (empty($website_root)) { $website_root = NVWEB_OBJECT; } $navibars->add_tab_content_row(array('<label>' . t(153, 'Embed link') . '</label>', '<a href="' . $website_root . '?id=' . $item->id . '&disposition=inline" target="_blank">' . $website_root . '?id=' . $item->id . '&disposition=inline</a>')); $navibars->add_tab_content_row(array('<label>' . t(154, 'Download link') . '</label>', '<a href="' . $website_root . '?id=' . $item->id . '&disposition=attachment">' . $website_root . '?id=' . $item->id . '&disposition=attachment</a>')); if ($item->type == 'image') { $navibars->add_tab(t(157, "Image")); $navibars->add_tab_content_row(array('<label>' . t(155, 'Width') . ' / ' . t(156, 'Height') . '</label>', $naviforms->textfield('width', $item->width, '50px'), 'x', $naviforms->textfield('height', $item->height, '50px'), 'px')); $navibars->add_tab_content_row(array('<label>' . t(170, 'Edit') . '</label>', ' <script language="javascript" type="text/javascript"> function navigate_pixlr_edit() { pixlr.overlay.show({ service: "editor", loc: "' . $user->language . '", image:"' . NAVIGATE_DOWNLOAD . '?id=' . $item->id . '&disposition=inline&sid=' . session_id() . '&seed=" + new Date().getTime(), title: "' . $item->name . '", target: "' . NAVIGATE_URL . '/navigate_upload.php?wid=' . $website->id . '&engine=pixlr&id=' . $item->id . '&session_id=' . session_id() . '&seed=" + + new Date().getTime(), exit: "' . NAVIGATE_URL . '/' . NAVIGATE_MAIN . '?fid=' . $_REQUEST['fid'] . '&act=pixlr_exit&id=' . $item->id . '&ts=" + + new Date().getTime(), credentials: true, method: "GET", referrer: "Navigate CMS", icon: "' . NAVIGATE_URL . '/img/navigate-isotype-16x16.png", locktitle: true, locktype: "png", redirect: "' . NAVIGATE_URL . '/' . NAVIGATE_MAIN . '?fid=' . $_REQUEST['fid'] . '&act=pixlr_exit&id=' . $item->id . '&ts=" + + new Date().getTime() }); // add a close button var close_button = $(\'<a href="#"><span class="fa-stack"><i class="fa fa-circle fa-stack-2x"></i><i class="fa fa-close fa-stack-1x fa-inverse"></i></span></a>\'); close_button.css({ "position": "absolute", "right": "-20px", "top": "-20px", "font-size": "20px", "color": "#222" }); close_button.on("click", function() { pixlr.overlay.hide(); $("#image-preview").attr("src", $("#image-preview").attr("src") + "&refresh=" + new Date().getTime()); }); $("div:last").prepend(close_button); } </script> <a href="#" class="button" onclick="navigate_pixlr_edit();"><img src="' . NAVIGATE_URL . '/img/logos/pixlr.png" width="100px" height="42px" /></a> ')); $navibars->add_tab_content_row(array('<label>' . t(274, 'Preview') . '</label>', '<div><img id="image-preview" src="' . $website_root . '?id=' . $item->id . '&disposition=inline&seed=' . core_time() . '" width="400px" /></div>')); $navibars->add_tab_content_row(array('<label> </label>' . '<button onclick="navigate_media_browser_focalpoint(' . $item->id . '); return false;"><img src="img/icons/silk/picture-measurement.png" align="absmiddle"> ' . t(540, 'Focal point') . '</button>')); $navibars->add_tab(t(334, 'Description')); $website_languages_selector = $website->languages(); $website_languages_selector = array_merge(array('' => '(' . t(443, 'All') . ')'), $website_languages_selector); $navibars->add_tab_content_row(array('<label>' . t(63, 'Languages') . '</label>', $naviforms->buttonset('files_description_language_selector', $website_languages_selector, '', "navigate_tabform_language_selector(this);"))); foreach ($website->languages_list as $lang) { $language_info = '<span class="navigate-form-row-language-info" title="' . language::name_by_code($lang) . '"><img src="img/icons/silk/comment.png" align="absmiddle" />' . $lang . '</span>'; $navibars->add_tab_content_row(array('<label>' . t(67, 'Title') . ' ' . $language_info . '</label>', $naviforms->textfield('title-' . $lang, @$item->title[$lang])), '', 'lang="' . $lang . '"'); $navibars->add_tab_content_row(array('<label>' . t(334, 'Description') . ' ' . $language_info . '</label>', $naviforms->textfield('description-' . $lang, @$item->description[$lang])), '', 'lang="' . $lang . '"'); } } else { if ($item->type == 'video') { $navibars->add_tab(t(272, "Video")); /* $navibars->add_tab_content_row(array( '<label>'.t(272, 'Video').'</label>', '<div id="video_'.$item->id.'" style="display:block;width:640px;height:360px;float:left;" class="video">', '<video controls="controls">', ' <source src="'.NAVIGATE_DOWNLOAD.'?wid='.$website->id.'&id='.$item->id.'&disposition=inline" type="'.$item->mime.'" />', '</video>', '</div>' )); $layout->add_script(' $("#video_'.$item->id.' video").mediaelementplayer( { pluginPath: "'.NAVIGATE_URL.'/lib/external/mediaelement/" }); '); */ $navibars->add_tab_content_row(array('<label>' . t(272, 'Video') . '</label>', '<div id="video_' . $item->id . '" style="display:block;width:640px;height:360px;float:left;" class="video"> <a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a> </div>', '<script language="javascript" type="text/javascript" src="http://bitcast-b.bitgravity.com/player/6/functions.js"></script>')); $layout->add_script(' var flashvars = {}; flashvars.AutoPlay = "false"; flashvars.File = "' . urlencode(NAVIGATE_DOWNLOAD . '?wid=' . $website->id . '&id=' . $item->id . '&disposition=inline') . '"; flashvars.Mode = "ondemand"; var params = {}; params.allowFullScreen = "true"; params.allowScriptAccess = "always"; var attributes = {}; attributes.id = "bitgravity_player_6"; swfobject.embedSWF(stablerelease, "video_' . $item->id . '", "640", "360", "9.0.115", "http://bitcast-b.bitgravity.com/player/expressInstall.swf", flashvars, params, attributes); '); } else { if ($item->type == 'audio') { $navibars->add_tab(t(31, "Audio")); $navibars->add_tab_content_row(array('<label>' . t(31, 'Audio') . '</label>', '<div id="audio_' . $item->id . '" style="display:block;float:left;" class="audio">', '<audio controls="controls">', ' <source src="' . NAVIGATE_DOWNLOAD . '?wid=' . $website->id . '&id=' . $item->id . '&disposition=inline" type="' . $item->mime . '" />', '</audio>', '</div>')); $layout->add_script(' $("#audio_' . $item->id . ' audio").mediaelementplayer( { pluginPath: "' . NAVIGATE_URL . '/lib/external/mediaelement/" }); $("#audio_' . $item->id . '").addClass("ui-state-default"); '); } } } return $navibars->generate(); }
public function navigate_editorfield_link_dialog() { global $website; if (in_array('link_dialog', $this->parts_added)) { return; } array_push($this->parts_added, 'link_dialog'); $naviforms = new naviforms(); $html = array(); $html[] = '<div class="navigate-form-row">'; $html[] = '<label>' . t(191, 'Source') . '</label>'; $html[] = $naviforms->buttonset('nv_link_dialog_source', array('structure' => t(16, 'Structure'), 'element' => t(180, 'Item')), 'structure', 'nv_link_dialog_source_change()'); $html[] = '</div>'; $hierarchy = structure::hierarchy(0); $categories_list = structure::hierarchyList($hierarchy); $html[] = '<div class="navigate-form-row hidden">'; $html[] = '<label>' . t(78, 'Category') . '</label>'; $html[] = '<div class="category_tree" id="nv_link_dialog_category"> <img src="img/icons/silk/world.png" align="absmiddle" /> ' . $website->name . '<div class="tree_ul">' . $categories_list . '</div> </div>'; $html[] = '</div>'; $html[] = '<div class="navigate-form-row hidden">'; $html[] = '<label>' . t(630, 'Element') . '</label>'; $html[] = $naviforms->selectfield("nv_link_dialog_element", null, null, null, null, false, null, null, false); $html[] = '</div>'; $html[] = '<div class="navigate-form-row hidden">'; $html[] = '<label>' . t(75, 'Path') . '</label>'; $html[] = '<div id="nv_link_dialog_real_path">' . $website->absolute_path(true) . '<span>?</span></div>'; $html[] = '</div>'; $html[] = '<div class="navigate-form-row hidden">'; $html[] = '<label>' . t(631, "Dynamic URL") . '</label>'; $html[] = '<div id="nv_link_dialog_dynamic_path"><strong>?</strong></div>'; $html[] = '</div>'; $html[] = '<div class="navigate-form-row hidden">'; $html[] = '<label>' . t(632, 'Replace text') . '</label>'; $html[] = $naviforms->checkbox("nv_link_dialog_replace_text", true); $html[] = '<input type="hidden" id="nv_link_dialog_title" value="" />'; $html[] = '</div>'; $this->add_content(' <div id="nv_link_dialog" title="' . t(631, "Dynamic URL") . '" class="hidden"> ' . implode("\n", $html) . ' </div> '); $this->add_script(' function nv_link_dialog_source_change() { setTimeout(function() { var source = $(\'#nv_link_dialog_source_structure:checked,#nv_link_dialog_source_element:checked\').val(); $("#nv_link_dialog_real_path").parent().addClass("hidden"); $("#nv_link_dialog_dynamic_path").parent().addClass("hidden"); $("#nv_link_dialog_replace_text").parent().addClass("hidden"); $("#nv_link_dialog_element").parent().addClass("hidden"); $("#nv_link_dialog_category").parent().addClass("hidden"); if(source == "element") { $("#nv_link_dialog_element").parent().removeClass("hidden"); } else if(source == "structure") { $("#nv_link_dialog_category").parent().removeClass("hidden"); } }, 100); } $("#nv_link_dialog_category .tree_ul").jstree( { plugins: ["changed", "types"], "types" : { "default": { "icon": "img/icons/silk/folder.png" }, "leaf": { "icon": "img/icons/silk/page_white.png" } }, "core" : { "multiple" : false } }).on("changed.jstree", function(e, data) { if(data.selected.length > 0) { var node = data.instance.get_node(data.selected[0]); var id = node.data.nodeId; var text = $(node.text).text(); $("#nv_link_dialog_dynamic_path strong").html("nv://structure/" + id); $("#nv_link_dialog_dynamic_path").parent().removeClass("hidden"); $("#nv_link_dialog_replace_text").parent().removeClass("hidden"); $("#nv_link_dialog_title").val(text); } else { $("#nv_link_dialog_real_path").parent().addClass("hidden"); $("#nv_link_dialog_dynamic_path").parent().addClass("hidden"); $("#nv_link_dialog_replace_text").parent().addClass("hidden"); $("#nv_link_dialog_title").val(""); } }); $("#nv_link_dialog_element").select2( { placeholder: "' . t(533, "Find element by title") . '", minimumInputLength: 1, ajax: { url: "' . NAVIGATE_URL . '/' . NAVIGATE_MAIN . '?fid=items&act=json_find_item", dataType: "json", delay: 100, data: function(params) { return { title: params.term, embedding: 0, nd: new Date().getTime(), page_limit: 30, // page size page: params.page // page number }; }, processResults: function (data, params) { params.page = params.page || 1; return { results: data.items, pagination: { more: (params.page * 30) < data.total_count } }; } }, templateSelection: function(row) { if(row.id) { $("#nv_link_dialog_real_path span").html(row.path); $("#nv_link_dialog_dynamic_path strong").html("nv://element/" + row.id); $("#nv_link_dialog_real_path").parent().removeClass("hidden"); $("#nv_link_dialog_dynamic_path").parent().removeClass("hidden"); $("#nv_link_dialog_replace_text").parent().removeClass("hidden"); $("#nv_link_dialog_title").val(row.text); return row.text + " <helper style=\'opacity: .5;\'>#" + row.id + "</helper>"; } else { $("#nv_link_dialog_real_path").parent().addClass("hidden"); $("#nv_link_dialog_dynamic_path").parent().addClass("hidden"); $("#nv_link_dialog_replace_text").parent().addClass("hidden"); $("#nv_link_dialog_title").val(""); return row.text; } }, escapeMarkup: function (markup) { return markup; }, // let our custom formatter work triggerChange: true, allowClear: true }); nv_link_dialog_source_change(); // auto-select structure on load '); }
function comments_form($item) { global $DB; global $website; global $layout; global $events; global $theme; $navibars = new navibars(); $naviforms = new naviforms(); if (empty($item->id)) { $navibars->title(t(250, 'Comments') . ' / ' . t(38, 'Create')); } else { $navibars->title(t(250, 'Comments') . ' / ' . t(170, 'Edit') . ' [' . $item->id . ']'); } if (empty($item->id)) { $navibars->add_actions(array('<a href="#" onclick="navigate_tabform_submit(1);"><img height="16" align="absmiddle" width="16" src="img/icons/silk/accept.png"> ' . t(34, 'Save') . '</a>')); } else { $navibars->add_actions(array('<a href="#" onclick="navigate_tabform_submit(1);"><img height="16" align="absmiddle" width="16" src="img/icons/silk/accept.png"> ' . t(34, 'Save') . '</a>', '<a href="#" onclick="navigate_delete_dialog();"><img height="16" align="absmiddle" width="16" src="img/icons/silk/cancel.png"> ' . t(35, 'Delete') . '</a>')); $delete_html = array(); $delete_html[] = '<div id="navigate-delete-dialog" class="hidden">' . t(57, 'Do you really want to delete this item?') . '</div>'; $delete_html[] = '<script language="javascript" type="text/javascript">'; $delete_html[] = 'function navigate_delete_dialog()'; $delete_html[] = '{'; $delete_html[] = '$("#navigate-delete-dialog").removeClass("hidden");'; $delete_html[] = '$("#navigate-delete-dialog").dialog({ resizable: true, height: 150, width: 300, modal: true, title: "' . t(59, 'Confirmation') . '", buttons: { "' . t(35, 'Delete') . '": function() { $(this).dialog("close"); window.location.href = "?fid=' . $_REQUEST['fid'] . '&act=remove&id=' . $item->id . '"; }, "' . t(58, 'Cancel') . '": function() { $(this).dialog("close"); } } });'; $delete_html[] = '}'; $delete_html[] = '</script>'; $navibars->add_content(implode("\n", $delete_html)); } $navibars->add_actions(array(!empty($item->id) ? '<a href="?fid=comments&act=edit"><img height="16" align="absmiddle" width="16" src="img/icons/silk/add.png"> ' . t(38, 'Create') . '</a>' : '', '<a href="?fid=comments&act=0"><img height="16" align="absmiddle" width="16" src="img/icons/silk/application_view_list.png"> ' . t(39, 'List') . '</a>', 'search_form')); $navibars->form(); $navibars->add_tab(t(43, "Main")); $navibars->add_tab_content($naviforms->hidden('form-sent', 'true')); $navibars->add_tab_content($naviforms->hidden('id', $item->id)); $navibars->add_tab_content_row(array('<label>ID</label>', '<span>' . (!empty($item->id) ? $item->id : t(52, '(new)')) . '</span>')); $navibars->add_tab_content($naviforms->hidden('comment-item', $item->item)); if ($item->item > 0) { $content = new item(); $content->load($item->item); $title = $content->dictionary[$website->languages_list[0]]['title']; } $navibars->add_tab_content_row(array('<label>' . t(180, 'Item') . '</label>', $naviforms->textfield('comment-item-text', $title))); $layout->add_script(' $("#comment-item-text").autocomplete( { source: function(request, response) { var toFind = { "title": request.term, "lang": "' . $website->languages[0] . '", nd: new Date().getTime() }; $.ajax( { url: "' . NAVIGATE_URL . '/' . NAVIGATE_MAIN . '?fid=' . $_REQUEST['fid'] . '&act=91", dataType: "json", method: "GET", data: toFind, success: function( data ) { response( data ); } }); }, minLength: 1, select: function(event, ui) { $("#comment-item").val(ui.item.id); } }); '); $webuser_id = ''; if (!empty($item->user)) { $webuser_username = $DB->query_single('username', 'nv_webusers', ' id = ' . $item->user); if (!empty($webuser_username)) { $webuser_username = array($webuser_username); $webuser_id = array($item->user); } } $navibars->add_tab_content_row(array('<label>' . t(1, 'User') . '</label>', $naviforms->selectfield('comment-user', $webuser_id, $webuser_username, $item->user, null, false, null, null, false), '<span style="display: none;" id="comment-user-helper">' . t(535, "Find user by name") . '</span>')); $layout->add_script(' $("#comment-user").select2( { placeholder: $("#comment-user-helper").text(), minimumInputLength: 1, ajax: { url: "' . NAVIGATE_URL . '/' . NAVIGATE_MAIN . '?fid=' . $_REQUEST['fid'] . '" + "&act=json_find_webuser", dataType: "json", delay: 100, data: function (params) { return { username: params.term, nd: new Date().getTime(), page_limit: 30, // page size page: params.page // page number }; }, processResults: function (data, params) { params.page = params.page || 1; return { results: data.items, pagination: { more: (params.page * 30) < data.total_count } }; } }, templateSelection: function(row) { if(row.id) return row.text + " <helper style=\'opacity: .5;\'>#" + row.id + "</helper>"; else return row.text; }, escapeMarkup: function (markup) { return markup; }, triggerChange: true, allowClear: true }); '); $navibars->add_tab_content_row(array('<label>' . t(159, 'Name') . '</label>', $naviforms->textfield('comment-name', $item->name))); $navibars->add_tab_content_row(array('<label>' . t(44, 'E-Mail') . '</label>', $naviforms->textfield('comment-email', $item->email))); $navibars->add_tab_content_row(array('<label>' . t(177, 'Website') . '</label>', $naviforms->textfield('comment-url', $item->url))); $reply_to_comment = ''; if (empty($item->reply_to)) { $item->reply_to = ''; } else { $c = new comment(); $c->load($item->reply_to); $reply_to_comment = $c->author_name() . ' ' . core_ts2date($c->date_created, true); } $navibars->add_tab_content_row(array('<label>' . t(649, 'In reply to') . '</label>', $naviforms->selectfield('comment-reply_to', $item->reply_to, array($reply_to_comment), $item->reply_to, null, false, null, null, false))); $layout->add_script(' $("#comment-reply_to").select2( { placeholder: "", minimumInputLength: 1, ajax: { url: "' . NAVIGATE_URL . '/' . NAVIGATE_MAIN . '?fid=comments&act=json_find_comment", dataType: "json", delay: 100, data: function (params) { return { search: params.term, node_id: $("#comment-item").val(), maxdate: ' . ($item->date_created + 0) . ', exclude: ' . ($item->id + 0) . ', nd: new Date().getTime(), page_limit: 30, // page size page: params.page // page number }; }, processResults: function (data, params) { params.page = params.page || 1; return { results: data.items, pagination: { more: (params.page * 30) < data.total_count } }; } }, templateSelection: function(row) { if(row.id) return row.text + " <helper style=\'opacity: .5;\'>#" + row.id + "</helper>"; else return row.text; }, escapeMarkup: function (markup) { return markup; }, triggerChange: true, allowClear: true }); '); $navibars->add_tab_content_row(array('<label>' . t(54, 'Text') . '</label>', $naviforms->textarea('comment-message', $item->message, 10))); if (!empty($item->ip)) { $navibars->add_tab_content_row(array('<label>IP</label>', $item->ip)); } if (empty($item->date_created)) { $item->date_created = time(); } $navibars->add_tab_content_row(array('<label>' . t(226, 'Date created') . '</label>', $naviforms->datefield('comment-date_created', $item->date_created, true))); if ($item->date_modified > 0) { $navibars->add_tab_content_row(array('<label>' . t(227, 'Date modified') . '</label>', core_ts2date($item->date_modified, true), empty($item->last_modified_by) ? '' : '(' . user::username_of($item->last_modified_by) . ')')); } $navibars->add_tab_content_row(array('<label>' . t(68, 'Status') . '</label>', $naviforms->selectfield('comment-status', array(0 => 0, 1 => 1, 2 => 2, 3 => 3, 4 => -1), array(0 => t(64, 'Published'), 1 => t(251, 'Private'), 2 => t(181, 'Hidden'), 3 => t(466, 'Spam'), 4 => t(257, 'To review')), $item->status, '', false, array(0 => t(360, 'Visible to everybody'), 1 => t(359, 'Visible only to Navigate CMS users'), 2 => t(358, 'Hidden to everybody'), 3 => t(358, 'Hidden to everybody'), 4 => t(358, 'Hidden to everybody'))))); if (!empty($item->item)) { $element = new item(); $element->load($item->item); $template = $theme->templates($element->template); if (is_object($template->comments) && isset($template->comments->properties)) { $properties_html = navigate_property_layout_form('comment', $element->template, 'comment', $item->id); if (!empty($properties_html)) { $navibars->add_tab(t(77, "Properties")); $navibars->add_tab_content($properties_html); } } } $events->trigger('comment', 'edit', array('comment' => &$item, 'navibars' => &$navibars, 'naviforms' => &$naviforms)); return $navibars->generate(); }
function structure_form($item) { global $user; global $DB; global $website; global $layout; global $events; $navibars = new navibars(); $naviforms = new naviforms(); $layout->navigate_media_browser(); // we can use media browser in this function if (empty($item->id)) { $navibars->title(t(16, 'Structure') . ' / ' . t(38, 'Create')); } else { $navibars->title(t(16, 'Structure') . ' / ' . t(170, 'Edit') . ' [' . $item->id . ']'); } $navibars->add_actions(array('<a href="#" onclick="javascript: navigate_media_browser();"><img height="16" align="absmiddle" width="16" src="img/icons/silk/images.png"> ' . t(36, 'Media') . '</a>')); if (empty($item->id)) { $navibars->add_actions(array('<a href="#" onclick="navigate_tabform_submit(1);"><img height="16" align="absmiddle" width="16" src="img/icons/silk/accept.png"> ' . t(34, 'Save') . '</a>')); } else { $navibars->add_actions(array('<a href="#" onclick="navigate_tabform_submit(1);"><img height="16" align="absmiddle" width="16" src="img/icons/silk/accept.png"> ' . t(34, 'Save') . '</a>', '<a href="#" onclick="navigate_delete_dialog();"><img height="16" align="absmiddle" width="16" src="img/icons/silk/cancel.png"> ' . t(35, 'Delete') . '</a>')); $delete_html = array(); $delete_html[] = '<div id="navigate-delete-dialog" class="hidden">' . t(57, 'Do you really want to delete this item?') . '</div>'; $delete_html[] = '<script language="javascript" type="text/javascript">'; $delete_html[] = 'function navigate_delete_dialog()'; $delete_html[] = '{'; $delete_html[] = '$("#navigate-delete-dialog").removeClass("hidden");'; $delete_html[] = '$("#navigate-delete-dialog").dialog({ resizable: true, height: 150, width: 300, modal: true, title: "' . t(59, 'Confirmation') . '", buttons: { "' . t(58, 'Cancel') . '": function() { $(this).dialog("close"); }, "' . t(35, 'Delete') . '": function() { $(this).dialog("close"); window.location.href = "?fid=' . $_REQUEST['fid'] . '&act=4&id=' . $item->id . '"; } } });'; $delete_html[] = '}'; $delete_html[] = '</script>'; $navibars->add_content(implode("\n", $delete_html)); } $extra_actions = array(); if (!empty($item->id)) { $DB->query(' SELECT s.id, wd.text as title, s.position FROM nv_structure s, nv_webdictionary wd WHERE s.website = ' . $item->website . ' AND s.parent = ' . $item->parent . ' AND wd.website = ' . $item->website . ' AND wd.node_type = "structure" AND wd.lang = "' . $website->languages_list[0] . '" AND wd.subtype = "title" AND wd.node_id = s.id ORDER BY s.position ASC, s.id ASC '); $brothers = $DB->result(); $previous_brother = NULL; $next_brother = NULL; for ($b = 0; $b < count($brothers); $b++) { if ($brothers[$b]->id == $item->id) { $previous_brother = @$brothers[$b - 1]->id; $previous_brother_title = @$brothers[$b - 1]->title; $next_brother = @$brothers[$b + 1]->id; $next_brother_title = @$brothers[$b + 1]->title; } } if (!empty($item->parent)) { $parent = new structure(); $parent->load($item->parent); $extra_actions[] = ' <a href="?fid=structure&act=edit&id=' . $parent->id . '"> <img height="16" align="absmiddle" width="16" src="img/icons/silk/resultset_first.png"> <small>(' . strtolower(t(84, 'Parent')) . ')</small> ' . $parent->dictionary[$website->languages_list[0]]["title"] . '</a>'; } if (!empty($previous_brother)) { $extra_actions[] = ' <a href="?fid=structure&act=edit&id=' . $previous_brother . '"> <img height="16" align="absmiddle" width="16" src="img/icons/silk/resultset_previous.png"> <small>(' . strtolower(t(501, 'Previous')) . ')</small> ' . $previous_brother_title . '</a>'; } if (!empty($next_brother)) { $extra_actions[] = ' <a href="?fid=structure&act=edit&id=' . $next_brother . '"> <img height="16" align="absmiddle" width="16" src="img/icons/silk/resultset_next.png"> <small>(' . strtolower(t(502, 'Next')) . ')</small> ' . $next_brother_title . '</a>'; } } $events->add_actions('structure', array('item' => &$item, 'navibars' => &$navibars), $extra_actions); $navibars->add_actions(array(!empty($item->id) ? '<a href="?fid=structure&act=edit&parent=' . $item->parent . '&template=' . $item->template . '"><img height="16" align="absmiddle" width="16" src="img/icons/silk/add.png"> ' . t(38, 'Create') . '</a>' : '', '<a href="?fid=structure&act=0"><img height="16" align="absmiddle" width="16" src="img/icons/silk/sitemap_color.png"> ' . t(61, 'Tree') . '</a>', 'search_form')); $navibars->form(); $navibars->add_tab(t(43, "Main")); $navibars->add_tab_content($naviforms->hidden('form-sent', 'true')); $navibars->add_tab_content_row(array('<label>ID</label>', '<span>' . (!empty($item->id) ? $item->id : t(52, '(new)')) . '</span>')); if (empty($item->id)) { $item->parent = $_GET['parent']; } $navibars->add_tab_content($naviforms->hidden('id', $item->id)); //$navibars->add_tab_content($naviforms->hidden('parent', $item->parent)); $hierarchy = structure::hierarchy(0); $categories_list = structure::hierarchyList($hierarchy, $item->parent); if (empty($categories_list)) { $categories_list = '<ul><li value="0">' . t(428, '(no category)') . '</li></ul>'; } $navibars->add_tab_content_row(array('<label>' . t(84, 'Parent') . '</label>', $naviforms->dropdown_tree('parent', $categories_list, $item->parent, 'navigate_parent_category_change')), 'category_tree'); $layout->add_script(' function navigate_parent_category_change(id) { $.ajax( { url: NAVIGATE_APP + "?fid=structure&act=category_path&id=" + id, dataType: "json", data: {}, success: function(data, textStatus, xhr) { item_category_path = data; } }); } '); if (empty($item->template) && isset($_GET['template'])) { $item->template = $_GET['template']; } $templates = template::elements('structure'); $template_select = $naviforms->select_from_object_array('template', $templates, 'id', 'title', $item->template); $navibars->add_tab_content_row(array('<label>' . t(79, 'Template') . '</label>', $template_select)); $navibars->add_tab_content_row(array('<label>' . t(85, 'Date published') . '</label>', $naviforms->datefield('date_published', $item->date_published, true))); $navibars->add_tab_content_row(array('<label>' . t(90, 'Date unpublished') . '</label>', $naviforms->datefield('date_unpublish', $item->date_unpublish, true))); $navibars->add_tab_content_row(array('<label>' . t(364, 'Access') . '</label>', $naviforms->selectfield('access', array(0 => 0, 1 => 2, 2 => 1, 3 => 3), array(0 => t(254, 'Everybody'), 1 => t(362, 'Not signed in'), 2 => t(361, 'Web users only'), 3 => t(512, 'Selected web user groups')), $item->access, 'navigate_webuser_groups_visibility($(this).val());', false, array(1 => t(363, 'Users who have not yet signed in'))))); $webuser_groups = webuser_group::all_in_array(); $navibars->add_tab_content_row(array('<label>' . t(506, "Groups") . '</label>', $naviforms->multiselect('groups', array_keys($webuser_groups), array_values($webuser_groups), $item->groups)), 'webuser-groups-field'); $layout->add_script(' function navigate_webuser_groups_visibility(access_value) { if(access_value==3) $("#webuser-groups-field").show(); else $("#webuser-groups-field").hide(); } navigate_webuser_groups_visibility(' . $item->access . '); '); $navibars->add_tab_content_row(array('<label>' . t(68, 'Status') . '</label>', $naviforms->selectfield('permission', array(0 => 0, 1 => 1, 2 => 2), array(0 => t(69, 'Published'), 1 => t(70, 'Private'), 2 => t(81, 'Hidden')), $item->permission, '', false, array(0 => t(360, 'Visible to everybody'), 1 => t(359, 'Visible only to Navigate CMS users'), 2 => t(358, 'Hidden to everybody'))))); $navibars->add_tab_content_row(array('<label>' . t(283, 'Shown in menus') . '</label>', $naviforms->checkbox('visible', $item->visible))); if ($item->views > 0) { $navibars->add_tab_content_row(array('<label>' . t(280, 'Page views') . '</label>', $item->views)); } $navibars->add_tab(t(54, "Text") . ' / ' . t(74, "Paths")); $lang_selector = array(); $lang_selector[] = '<div class="buttonset">'; $checked = ' checked="checked" '; foreach ($website->languages_list as $lang_code) { $lang_selector[] = '<input type="radio" id="language_selector_' . $lang_code . '" name="language_selector" value="' . $lang_code . '" ' . $checked . ' /> <label for="language_selector_' . $lang_code . '" onclick="navigate_structure_select_language(\'' . $lang_code . '\');">' . language::name_by_code($lang_code) . '</label>'; $checked = ""; } $lang_selector[] = '</div>'; $navibars->add_tab_content_row(array('<label>' . t(63, 'Languages') . '</label>', implode("\n", $lang_selector))); foreach ($website->languages_list as $lang_code) { $navibars->add_tab_content('<div class="language_fields" id="language_fields_' . $lang_code . '" style=" display: none; ">'); $navibars->add_tab_content_row(array('<label>' . t(67, 'Title') . '</label>', $naviforms->textfield('title-' . $lang_code, @$item->dictionary[$lang_code]['title']))); $open_live_site = ''; if (!empty($item->paths[$lang_code])) { $open_live_site = ' <a target="_blank" href="' . $website->absolute_path(true) . $item->paths[$lang_code] . '"><img src="img/icons/silk/world_go.png" align="absmiddle" /></a>'; } $navibars->add_tab_content_row(array('<label>' . t(75, 'Path') . $open_live_site . '</label>', $naviforms->textfield('path-' . $lang_code, @$item->paths[$lang_code], NULL, 'navigate_structure_path_check(this);'), '<span> </span>')); /* $navibars->add_tab_content_row(array( '<label> </label>', '<div class="subcomment"><sup>*</sup> '.t(83, 'Leave blank to disable this item').'</div>', )); */ $navibars->add_tab_content_row(array('<label>' . t(172, 'Action') . '</label>', $naviforms->selectfield('action-type-' . $lang_code, array(0 => 'url', 1 => 'jump-branch', 2 => 'jump-item', 3 => 'do-nothing'), array(0 => t(173, 'Open URL'), 1 => t(322, 'Jump to another branch'), 2 => t(323, 'Jump to an element'), 3 => t(183, 'Do nothing')), $item->dictionary[$lang_code]['action-type'], "navigate_structure_action_change('" . $lang_code . "', this);"))); // load item title if action was "jump to an element" $jump_item_id = ''; $jump_item_title = ''; if (!empty($item->dictionary[$lang_code]['action-jump-item'])) { $tmp = new Item(); $tmp->load($item->dictionary[$lang_code]['action-jump-item']); $jump_item_title = array($tmp->dictionary[$lang_code]['title']); $jump_item_id = array($item->dictionary[$lang_code]['action-jump-item']); } $navibars->add_tab_content_row(array('<label>' . t(180, 'Item') . ' [' . t(67, 'Title') . ']</label>', $naviforms->selectfield('action-jump-item-' . $lang_code, $jump_item_id, $jump_item_title, $item->dictionary[$lang_code]['action-jump-item'], null, false, null, null, false), '<div class="subcomment"><span class="ui-icon ui-icon-info" style=" float: left; margin-left: -3px; "></span> ' . t(534, "You can only select elements which have their own path (no category embedded elements)") . '</div>')); $categories_list = structure::hierarchyList($hierarchy, $item->dictionary[$lang_code]['action-jump-branch'], $lang_code); $navibars->add_tab_content_row(array('<label>' . t(325, 'Branch') . '</label>', '<div class="category_tree" id="category_tree_jump_branch_' . $lang_code . '"> <img src="img/icons/silk/world.png" align="absmiddle" /> ' . $website->name . '<div class="category_tree_ul">' . $categories_list . '</div>' . '</div>', $naviforms->hidden('action-jump-branch-' . $lang_code, $item->dictionary[$lang_code]['action-jump-branch']))); $navibars->add_tab_content_row(array('<label>' . t(324, 'New window') . '</label>', $naviforms->checkbox('action-new-window-' . $lang_code, $item->dictionary[$lang_code]['action-new-window']))); $navibars->add_tab_content('</div>'); } $parent = new structure(); $parent->paths = array(); if (!empty($item->parent)) { $parent->load($item->parent); } $layout->add_script(' function navigate_structure_select_language(code) { $(".language_fields").css("display", "none"); $("#language_fields_" + code).css("display", "block"); } var active_languages = ["' . implode('", "', $website->languages_list) . '"]; var last_check = []; var item_category_path = ' . json_encode($parent->paths) . '; function navigate_structure_path_generate(el) { var language = $(el).attr("id").substr(5); var surl = ""; if(item_category_path[language] && item_category_path[language]!="") surl = item_category_path[language]; else surl = "/" + language; var title = $("#title-"+language).val(); title = title.replace(/([\'"“”«»?:\\+\\&!¿#\\\\])/g, ""); title = title.replace(/[.\\s]+/g, navigate["word_separator"]); surl += "/" + title; $(el).val(surl.toLowerCase()); navigate_structure_path_check(el); } function navigate_structure_path_check(el) { var caret_position = null; if($(el).is("input") && $(el).is(":focus")) caret_position = $(el).caret(); var path = $(el).val(); if(path=="") return; if(path==last_check[$(el).id]) return; if(path.indexOf("http")==0) return; // ignore paths starting with http/https path = path.replace(/([\'"“”«»?:\\+\\&!¿#\\\\])/g, ""); path = path.replace(/[.\\s]+/g, navigate["word_separator"]); $(el).val(path); last_check[$(el).id] = path; $(el).next().html("<img src=\\"' . NAVIGATE_URL . '/img/loader.gif\\" align=\\"absmiddle\\" />"); $.ajax({ url: "' . NAVIGATE_URL . '/' . NAVIGATE_MAIN . '?fid=' . $_REQUEST['fid'] . '&act=95", dataType: "json", data: "id=' . $item->id . '&path=" + $(el).val(), type: "get", success: function(data, textStatus) { var free = true; if(data && data.length==1) { // same element? if( data[0].object_id != "' . $item->id . '" || data[0].type != "structure" ) { free = false; } } else if(data && data.length > 1) { free = false; } if(free) free = "<img src=\\"' . NAVIGATE_URL . '/img/icons/silk/tick.png\\" align=\\"absmiddle\\" />"; else free = "<img src=\\"' . NAVIGATE_URL . '/img/icons/silk/cancel.png\\" align=\\"absmiddle\\" />"; free += "<img class=\\"erase_path\\" src=\\"" + NAVIGATE_URL + "/img/icons/silk/erase.png\\" align=\\"absmiddle\\" />"; $(el).next().find(".erase_path").off(); $(el).next().html(free); $(el).next().find(".erase_path").on("click", function() { $(el).focus(); $(el).val(""); }).css("cursor", "pointer"); } }); if($(el).is("input") && $(el).is(":focus")) $(el).caret(caret_position) } function navigate_structure_action_change(language, element) { $("#action-new-window-" + language).parent().hide(); $("#action-jump-item-" + language).parent().hide(); $("#action-jump-branch-" + language).parent().hide(); switch(jQuery(element).val()) { case "do-nothing": break; case "jump-branch": $("#action-new-window-" + language).parent().show(); $("#action-jump-branch-" + language).parent().show(); $("#category_tree_jump_branch_" + language+ " .category_tree_ul").jstree({ plugins: ["changed", "types"], "types" : { "default": { "icon": "img/icons/silk/folder.png" }, "leaf": { "icon": "img/icons/silk/page_white.png" } }, "core" : { "multiple" : false } }).on("changed.jstree", function(e, data) { var i, j, r = []; for(i = 0, j = data.selected.length; i < j; i++) { var selected_node = data.instance.get_node(data.selected[i]).data.nodeId; $("#action-jump-branch-" + language).val(selected_node); } }); break; case "jump-item": $("#action-new-window-" + language).parent().show(); $("#action-jump-item-" + language).parent().show(); break; case "url": $("#action-new-window-" + language).parent().show(); break; } } $(window).on("load", function() { for(al in active_languages) { navigate_structure_path_check($("#path-" + active_languages[al])); $("#path-" + active_languages[al]).on("focus", function() { if($(this).val() == "") navigate_structure_path_generate($(this)); }); $("#action-jump-item-" + active_languages[al]).select2( { placeholder: "' . t(533, "Find element by title") . '", minimumInputLength: 1, ajax: { url: NAVIGATE_APP + "?fid=" + navigate_query_parameter(\'fid\') + "&act=json_find_item", dataType: "json", delay: 100, data: function(params) { return { title: params.term, lang: $("input[name=\\"language_selector\\"]:checked").val(), nd: new Date().getTime(), page_limit: 30, // page size page: params.page // page number }; }, processResults: function (data, params) { params.page = params.page || 1; return { results: data.items, pagination: { more: (params.page * 30) < data.total_count } }; } }, templateSelection: function(row) { if(row.id) return row.text + " <helper style=\'opacity: .5;\'>#" + row.id + "</helper>"; else return row.text; }, escapeMarkup: function (markup) { return markup; }, // let our custom formatter work triggerChange: true, allowClear: true }); navigate_structure_action_change(active_languages[al], $("#action-type-" + active_languages[al])); } }); '); $layout->add_script('navigate_structure_select_language("' . $website->languages_list[0] . '")'); if (!empty($item->template)) { $properties_html = navigate_property_layout_form('structure', $item->template, 'structure', $item->id); if (!empty($properties_html)) { $navibars->add_tab(t(77, "Properties")); $navibars->add_tab_content($properties_html); } } if ($item->votes > 0) { $navibars->add_tab(t(352, "Votes")); $score = $item->score / $item->votes; $navibars->add_tab_content_panel('<img src="img/icons/silk/chart_pie.png" align="absmiddle" /> ' . t(337, 'Summary'), array('<div class="navigate-panels-summary ui-corner-all"><h2>' . $item->votes . '</h2><br />' . t(352, 'Votes') . '</div>', '<div class="navigate-panels-summary ui-corner-all""><h2>' . $score . '</h2><br />' . t(353, 'Score') . '</div>', '<div style=" float: left; margin-left: 8px; "><a href="#" class="uibutton" id="items_votes_webuser">' . t(15, 'Users') . '</a></div>', '<div style=" float: right; margin-right: 8px; "><a href="#" class="uibutton" id="items_votes_reset">' . t(354, 'Reset') . '</a></div>', '<div id="items_votes_webuser_window" style=" display: none; width: 600px; height: 350px; "></div>'), 'navigate-panel-web-summary', '385px', '200px'); $layout->add_script(' $("#items_votes_reset").bind("click", function() { $.post("?fid=' . $_REQUEST['fid'] . '&act=votes_reset&id=' . $item->id . '", function(data) { $("#navigate-panel-web-summary").addClass("ui-state-disabled"); navigate_notification("' . t(355, 'Votes reset') . '"); }); }); $("#items_votes_webuser").bind("click", function() { $( "#items_votes_webuser_window" ).dialog( { title: "' . t(357, 'User votes') . '", width: 700, height: 400, modal: true, open: function() { $( "#items_votes_webuser_window" ).html("<table id=\\"items_votes_webuser_grid\\"></table>"); $( "#items_votes_webuser_window" ).append("<div id=\\"items_votes_webuser_grid_pager\\"></div>"); jQuery("#items_votes_webuser_grid").jqGrid( { url: "?fid=' . $_REQUEST['fid'] . '&act=votes_by_webuser&id=' . $item->id . '", editurl: "?fid=' . $_REQUEST['fid'] . '&act=votes_by_webuser&id=' . $item->id . '", datatype: "json", mtype: "GET", pager: "#items_votes_webuser_grid_pager", colNames:["ID", "' . t(86, 'Date') . '", "' . t(1, 'Username') . '"], colModel:[ {name:"id", index:"id", width: 75, align: "left", sortable:true, editable:false, hidden: true}, {name:"date",index:"date", width: 180, align: "center", sortable:true, editable:false}, {name:"username", index:"username", align: "left", width: 380, sortable:true, editable:false} ], scroll: 1, loadonce: false, autowidth: true, forceFit: true, rowNum: 12, rowList: [12], viewrecords: true, multiselect: true, sortname: "date", sortorder: "desc" }); $("#items_votes_webuser_grid").jqGrid( "navGrid", "#items_votes_webuser_grid_pager", { add: false, edit: false, del: true, search: false } ); } }); }); '); $navibars->add_tab_content_panel('<img src="img/icons/silk/chart_line.png" align="absmiddle" /> ' . t(353, 'Score'), array('<div id="navigate-panel-web-score-graph" style=" height: 171px; width: 385px; "></div>'), 'navigate-panel-web-score', '385px', '200px'); $votes_by_score = webuser_vote::object_votes_by_score('structure', $item->id); $gdata = array(); $colors = array('#0a2f42', '#62bbe8', '#1d8ec7', '#44aee4', '#bbe1f5'); foreach ($votes_by_score as $vscore) { $gdata[] = (object) array('label' => $vscore->value, 'data' => (int) $vscore->votes, 'color' => $colors[$vscore->value % count($colors)]); } $layout->add_script(' $(document).ready(function() { var gdata = ' . json_encode($gdata) . '; $.plot($("#navigate-panel-web-score-graph"), gdata, { series: { pie: { show: true, radius: 1, tilt: 0.5, startAngle: 3/4, label: { show: true, formatter: function(label, series) { return \'<div style="font-size:12px;text-align:center;padding:2px;color:#fff;"><span style="font-size: 20px; font-weight: bold; ">\'+label+\'</span><br/>\'+Math.round(series.percent)+\'% (\'+series.data[0][1]+\')</div>\'; }, background: { opacity: 0.6 } }, stroke: { color: "#F2F5F7", width: 4 }, } }, legend: { show: false } }); '); $navibars->add_tab_content_panel('<img src="img/icons/silk/chart_line.png" align="absmiddle" /> ' . t(352, 'Votes') . ' (' . t(356, 'last 90 days') . ')', array('<div id="navigate-panel-web-votes-graph" style=" height: 171px; width: 385px; "></div>'), 'navigate-panel-web-votes', '385px', '200px'); $votes_by_date = webuser_vote::object_votes_by_date('structure', $item->id, 90); $layout->add_script(' var plot = $.plot( $("#navigate-panel-web-votes-graph"), [' . json_encode($votes_by_date) . '], { series: { points: { show: true, radius: 3 } }, xaxis: { mode: "time", tickLength: 5 }, yaxis: { tickDecimals: 0, zoomRange: false, panRange: false }, grid: { markings: function (axes) { var markings = []; var d = new Date(axes.xaxis.min); // go to the first Saturday d.setUTCDate(d.getUTCDate() - ((d.getUTCDay() + 1) % 7)) d.setUTCSeconds(0); d.setUTCMinutes(0); d.setUTCHours(0); var i = d.getTime(); do { // when we dont set yaxis, the rectangle automatically // extends to infinity upwards and downwards markings.push({ xaxis: { from: i, to: i + 2 * 24 * 60 * 60 * 1000 } }); i += 7 * 24 * 60 * 60 * 1000; } while (i < axes.xaxis.max); return markings; }, markingsColor: "#e7f5fc" }, zoom: { interactive: true }, pan: { interactive: true } }); }); '); } $elements = $item->elements(); if (count($elements) > 0) { $ids = array(); $navibars->add_tab(t(22, "Elements")); $table = new naviorderedtable("structure_elements"); $table->setDblclickCallback("structure_elements_open"); $table->setHiddenInput('elements-order'); $table->addHeaderColumn('ID', 24); $table->addHeaderColumn(t(486, 'Title'), 500); foreach ($elements as $element) { $table->addRow($element->id, array(array('content' => $element->id, 'align' => 'left'), array('content' => $element->dictionary[$website->languages_list[0]]['title'], 'align' => 'left'))); $ids[] = $element->id; } $navibars->add_tab_content_row(array('<label>' . t(22, 'Elements') . '</label>', '<div>' . $table->generate() . '</div>', '<div class="subcomment"> <input type="hidden" name="elements-order" id="elements-order" value="' . implode("#", $ids) . '" /> <img src="img/icons/silk/information.png" align="absmiddle" /> ' . t(72, 'Drag any row to assign priorities') . ' </div>')); $layout->add_script(' function structure_elements_open(element) { window.location.replace("?fid=items&act=edit&id=" + $(element).attr("id") ); } '); } $events->trigger('structure', 'edit', array('item' => &$item, 'navibars' => &$navibars, 'naviforms' => &$naviforms)); return $navibars->generate(); }
function templates_form($item) { global $user; global $DB; global $website; global $layout; $navibars = new navibars(); $naviforms = new naviforms(); if (empty($item->id)) { $navibars->title(t(20, 'Templates') . ' / ' . t(38, 'Create')); } else { $navibars->title(t(20, 'Templates') . ' / ' . t(170, 'Edit') . ' [' . $item->id . ']'); } $readonly = false; if (!empty($item->id) && !is_numeric($item->id)) { $layout->navigate_notification(t(432, "Read only mode"), false, true); $readonly = true; } else { if (empty($item->id)) { $navibars->add_actions(array('<a href="#" onclick="navigate_tabform_submit(1);"><img height="16" align="absmiddle" width="16" src="img/icons/silk/accept.png"> ' . t(34, 'Save') . '</a>')); } else { $navibars->add_actions(array('<a href="#" onclick="navigate_tabform_submit(1);"><img height="16" align="absmiddle" width="16" src="img/icons/silk/accept.png"> ' . t(34, 'Save') . '</a>', '<a href="#" onclick="navigate_delete_dialog();"><img height="16" align="absmiddle" width="16" src="img/icons/silk/cancel.png"> ' . t(35, 'Delete') . '</a>')); $delete_html = array(); $delete_html[] = '<div id="navigate-delete-dialog" class="hidden">' . t(57, 'Do you really want to delete this item?') . '</div>'; $delete_html[] = '<script language="javascript" type="text/javascript">'; $delete_html[] = 'function navigate_delete_dialog()'; $delete_html[] = '{'; $delete_html[] = '$("#navigate-delete-dialog").removeClass("hidden");'; $delete_html[] = '$("#navigate-delete-dialog").dialog({ resizable: true, height: 150, width: 300, modal: true, title: "' . t(59, 'Confirmation') . '", buttons: { "' . t(58, 'Cancel') . '": function() { $(this).dialog("close"); }, "' . t(35, 'Delete') . '": function() { $(this).dialog("close"); window.location.href = "?fid=' . $_REQUEST['fid'] . '&act=4&id=' . $item->id . '"; } } });'; $delete_html[] = '}'; $delete_html[] = '</script>'; $navibars->add_content(implode("\n", $delete_html)); } } $navibars->add_actions(array(!empty($item->id) ? '<a href="?fid=templates&act=2"><img height="16" align="absmiddle" width="16" src="img/icons/silk/add.png"> ' . t(38, 'Create') . '</a>' : '', '<a href="?fid=templates&act=0"><img height="16" align="absmiddle" width="16" src="img/icons/silk/application_view_list.png"> ' . t(39, 'List') . '</a>', 'search_form')); $navibars->form(); $navibars->add_tab(t(43, "Main")); $navibars->add_tab_content($naviforms->hidden('form-sent', 'true')); $navibars->add_tab_content($naviforms->hidden('id', $item->id)); $navibars->add_tab_content_row(array('<label>ID</label>', '<span>' . (!empty($item->id) ? $item->id : t(52, '(new)')) . '</span>')); $navibars->add_tab_content_row(array('<label>' . t(67, 'Title') . '</label>', $naviforms->textfield('title', $item->title))); if ($readonly) { $navibars->add_tab_content_row(array('<label>' . t(82, 'File') . '</label>', '<span>' . $item->file . '</span>')); } else { $navibars->add_tab_content_row(array('<label>' . t(82, 'File') . '</label>', '<span>' . NAVIGATE_PRIVATE . '/' . $website->id . '/templates/</span>', $naviforms->textfield('file', $item->file, '236px'), empty($item->file) ? '' : '<a href="#" onclick="navigate_templates_editor();"><img src="' . NAVIGATE_URL . '/img/icons/silk/pencil.png" /></a>')); } $navibars->add_content(' <div id="templates-file-edit-dialog" style=" display: none; "> <textarea name="templates-file-edit-area" id="templates-file-edit-area" style=" width: 99%; height: 98%; ">' . htmlentities(@file_get_contents(NAVIGATE_PRIVATE . '/' . $website->id . '/templates/' . $item->file), ENT_COMPAT, 'UTF-8') . '</textarea> </div> '); $layout->add_script(' var current_template_editor = null; function navigate_templates_editor() { var file = $("#file").val(); $("#templates-file-edit-dialog").dialog( { title: \'<img src="' . NAVIGATE_URL . '/img/icons/silk/pencil.png" align="absmiddle" /> ' . t(170, 'Edit') . ' \' + file, resizable: true, draggable: true, width: $(window).width() - 60, height: $(window).height() - 50, position: { my: "center", at: "center", of: window }, modal: true, open: function() { current_template_editor = CodeMirror.fromTextArea( $("#templates-file-edit-area")[0], { mode: "text/html", tabMode: "indent", lineNumbers: true, matchBrackets: true } ); $(".CodeMirror").css({ width: "99%", height: "98%"}); $(".CodeMirror-scroll").css({ width: "100%", height: "100%"}); }, beforeClose: function() { // dialog may be closed by clicking on a footer button or clicking the close "x" icon on top if(current_template_editor) { current_template_editor.toTextArea(); current_template_editor = null; } }, buttons: { "' . t(58, 'Cancel') . '": function() { $("#templates-file-edit-dialog").dialog("close"); }, "' . t(34, 'Save') . '": function() { current_template_editor.toTextArea(); current_template_editor = null; $.ajax({ type: "POST", async: false, dateType: "text", url: "' . NAVIGATE_URL . '/' . NAVIGATE_MAIN . '?fid=' . $_REQUEST['fid'] . '&id=' . $item->id . '&act=save_template_file", data: $("#templates-file-edit-area").serialize(), success: function(data) { if(data=="true") { $("#templates-file-edit-dialog").dialog("close"); navigate_notification("' . t(235, 'File saved successfully.') . '"); } else { $("#templates-file-edit-dialog").dialog("close"); navigate_notification("' . t(56, 'Unexpected error.') . '"); } } }); } } }).dialogExtend( { maximizable: true }); } '); $navibars->add_tab_content_row(array('<label>' . t(68, 'Status') . '</label>', $naviforms->selectfield('permission', array(0 => 0, 1 => 1, 2 => 2), array(0 => t(69, 'Published'), 1 => t(70, 'Private'), 2 => t(81, 'Hidden')), $item->permission, '', false, array(0 => t(360, 'Visible to everybody'), 1 => t(359, 'Visible only to Navigate CMS users'), 2 => t(358, 'Hidden to everybody'))))); $navibars->add_tab_content_row(array('<label>' . t(62, 'Statistics') . '</label>', $naviforms->checkbox('statistics', $item->statistics))); $navibars->add_tab_content_row(array('<label>' . t(65, 'Enabled') . '</label>', $naviforms->checkbox('enabled', $item->enabled))); if (!empty($item->id)) { $navibars->add_tab(t(236, "Sections")); $table = new naviorderedtable("template_sections_table"); $table->setWidth("600px"); $table->setHiddenInput("template-sections-order"); $navibars->add_tab_content($naviforms->hidden('template-sections-order', "")); $table->addHeaderColumn(t(237, 'Code'), 100); $table->addHeaderColumn(t(159, 'Name'), 250); $table->addHeaderColumn(t(267, 'Editor'), 100); $table->addHeaderColumn(t(155, 'Width'), 100); $table->addHeaderColumn(t(35, 'Remove'), 100); for ($p = 0; $p < count($item->sections); $p++) { $disabled = $item->sections[$p]['code'] == 'main'; unset($selected); $selected = array(); $selected[$item->sections[$p]['editor']] = ' selected="selected" '; $select_editor = '<select name="template-sections-editor[]" style=" width: 125px; ">'; $select_editor .= ' <option value="tinymce" ' . $selected['tinymce'] . '>TinyMCE</option>'; $select_editor .= ' <option value="html" ' . $selected['html'] . '>' . t(269, 'HTML code') . '</option>'; $select_editor .= ' <option value="raw" ' . $selected['raw'] . '>' . t(268, 'Raw') . '</option>'; $select_editor .= '</select>'; $table->addRow($p, array(array('content' => '<input type="text" name="template-sections-code[]" value="' . $item->sections[$p]['code'] . '" style="width: 140px;" />', 'align' => 'left'), array('content' => '<input type="text" name="template-sections-name[]" value="' . template::section_name($item->sections[$p]['name']) . '" style="width: 290px;" />', 'align' => 'left'), array('content' => $select_editor, 'align' => 'left'), array('content' => '<div style=" white-space: nowrap; "><input type="text" name="template-sections-width[]" value="' . template::section_name($item->sections[$p]['width']) . '" style="width: 40px;" /> px</div>', 'align' => 'left'), array('content' => !empty($disabled) || $readonly ? '' : '<img src="' . NAVIGATE_URL . '/img/icons/silk/cancel.png" onclick="navigate_templates_sections_remove(this);" />', 'align' => 'center'))); } if ($readonly) { $navibars->add_tab_content_row(array('<label>' . t(236, 'Sections') . '</label>', '<div>' . $table->generate() . '</div>')); } else { $navibars->add_tab_content_row(array('<label>' . t(236, 'Sections') . '</label>', '<div>' . $table->generate() . '</div>', '<div class="subcomment"> <img src="img/icons/silk/information.png" align="absmiddle" /> ' . t(72, 'Drag any row to assign priorities') . '. ' . t(192, 'Double click any row to edit') . ' </div>')); $navibars->add_tab_content_row(array('<label> </label>', '<button id="templates-sections-create"><img src="img/icons/silk/add.png" align="absmiddle" style="cursor:pointer;" /> ' . t(38, 'Create') . '</button>')); } $navibars->add_content(' <form id="templates-sections-edit-dialog" style="display: none;"> ' . $naviforms->hidden('section-id', '') . ' <div class="navigate-form-row"> <label>' . t(67, 'Title') . '</label> ' . $naviforms->textfield('section-name', '') . ' </div> <div class="navigate-form-row"> <label>' . t(237, 'Code') . '</label> ' . $naviforms->textfield('section-code', '') . ' </div> </form>'); $section_widths = templates_section_widths(); $layout->add_script(' $("#templates-sections-create").on("click", function() { var tr = \'<tr id="\'+(new Date().getTime())+\'">\'; tr += \'<td><input type="text" name="template-sections-code[]" value="" style="width: 140px;" /></td>\'; tr += \'<td><input type="text" name="template-sections-name[]" value="" style="width: 290px;" /></td>\'; tr += \'<td><select style="width: 125px;" name="template-sections-editor[]"><option selected="selected" value="tinymce">TinyMCE</option><option value="html">' . t(269, 'HTML code') . '</option><option value="raw">' . t(268, 'Raw') . '</option></select></td>\'; tr += \'<td><div style="white-space: nowrap;"><input type="text" style="width: 40px;" value="950" name="template-sections-width[]"> px</div></td>\'; tr += \'<td align="center"><img src="' . NAVIGATE_URL . '/img/icons/silk/cancel.png" onclick="navigate_templates_sections_remove(this);" style="cursor:pointer;" /></td>\'; tr += \'</tr>\'; $("#template_sections_table").find("tbody:last").append(tr); $("#template_sections_table").tableDnD( { onDrop: function(table, row) { navigate_naviorderedtable_template_sections_table_reorder(); } }); $(\'input[name="template-sections-width[]"]\').autocomplete( { source: function(request, response) { response(' . json_encode($section_widths) . '); }, minLength: 0 }); return false; }); function navigate_templates_sections_remove(el) { $(el).parent().parent().remove(); } $(\'input[name="template-sections-width[]"]\').autocomplete( { source: function(request, response) { response(' . json_encode($section_widths) . '); }, minLength: 0 }); $(document).on(\'click\', \'input[name="template-sections-width[]"]\', function() { $(this).autocomplete( "search" , $(this).val()); }); '); $navibars->add_tab_content_row(array('<label>' . t(210, 'Gallery') . '</label>', $naviforms->checkbox('gallery', $item->gallery))); $navibars->add_tab_content_row(array('<label>' . t(250, 'Comments') . '</label>', $naviforms->checkbox('comments', $item->comments))); $navibars->add_tab_content_row(array('<label>' . t(265, 'Tags') . '</label>', $naviforms->checkbox('tags', $item->tags))); $navibars->add_tab(t(77, "Properties")); $table = new naviorderedtable("template_properties_table"); $table->setWidth("550px"); $table->setHiddenInput("template-properties-order"); $table->setDblclickCallback("navigate_templates_edit_property"); $navibars->add_tab_content($naviforms->hidden('template-properties-order', "")); $table->addHeaderColumn(t(159, 'Name'), 250, true); $table->addHeaderColumn(t(160, 'Type'), 150); $table->addHeaderColumn(t(87, 'Association'), 100); $table->addHeaderColumn(t(65, 'Enabled'), 50); $properties = property::elements($item->id); $types = property::types(); $element_types = array('item' => t(180, 'Item'), 'structure' => t(16, 'Structure')); for ($p = 0; $p < count($properties); $p++) { $table->addRow($properties[$p]->id, array(array('content' => $properties[$p]->name, 'align' => 'left'), array('content' => $types[$properties[$p]->type], 'align' => 'left'), array('content' => $element_types[$properties[$p]->element], 'align' => 'left'), array('content' => '<input type="checkbox" name="property-enabled[]" class="raw-checkbox" value="' . $properties[$p]->id . '" ' . ($properties[$p]->enabled == '1' ? ' checked=checked ' : '') . ' />', 'align' => 'center'))); } if ($readonly) { $navibars->add_tab_content_row(array('<label>' . t(77, 'Properties') . '</label>', '<div>' . $table->generate() . '</div>')); } else { $navibars->add_tab_content_row(array('<label>' . t(77, 'Properties') . '</label>', '<div>' . $table->generate() . '</div>', '<div class="subcomment"> <img src="img/icons/silk/information.png" align="absmiddle" /> ' . t(72, 'Drag any row to assign priorities') . '. ' . t(192, 'Double click any row to edit') . ' </div>')); $navibars->add_tab_content_row(array('<label> </label>', '<button id="templates-properties-create"><img src="img/icons/silk/add.png" align="absmiddle" /> ' . t(38, 'Create') . '</button>')); } $navibars->add_content(' <form id="templates-properties-edit-dialog" style="display: none;"> <div class="navigate-form-row"> <label>ID</label> <span id="property-id-span">' . t(52, '(new)') . '</span> ' . $naviforms->hidden('property-id', '') . ' ' . $naviforms->hidden('property-template', $item->id) . ' </div> <div class="navigate-form-row"> <label>' . t(67, 'Title') . '</label> ' . $naviforms->textfield('property-name', '') . ' </div> <div class="navigate-form-row"> <label>' . t(87, 'Association') . '</label> ' . $naviforms->selectfield('property-element', array_keys($element_types), array_values($element_types), 'value') . ' </div> <div class="navigate-form-row"> <label>' . t(160, 'Type') . '</label> ' . $naviforms->selectfield('property-type', array_keys($types), array_values($types), 'value', 'navigate_templates_property_type_change()') . ' </div> <div class="navigate-form-row"> <label>' . t(200, 'Options') . '</label> ' . $naviforms->textarea('property-options', '') . ' <div class="subcomment"> ' . t(201, 'One line per option, formatted like this: value#title') . ' </div> </div> <div class="navigate-form-row"> <label>' . t(547, 'Multilanguage') . '</label> ' . $naviforms->checkbox('property-multilanguage', false) . ' </div> <div class="navigate-form-row"> <label>' . t(199, 'Default value') . '</label> ' . $naviforms->textfield('property-dvalue', '') . ' <div class="subcomment"> <span id="property-comment-boolean">' . t(426, 'Enter "1" for true, "0" for false') . '</span> <span id="property-comment-option">' . t(202, 'Enter only the value') . '</span> <span id="property-comment-moption">' . t(212, 'Enter the selected values separated by commas') . ': 3,5,8</span> <span id="property-comment-text">' . t(203, 'Same value for all languages') . '</span> <span id="property-comment-rating">' . t(223, 'Default is 5 stars, if you want a different number: default_value#number_of_stars') . ' 5#10</span> <span id="property-comment-date">' . t(50, 'Date format') . ': ' . date($user->date_format) . '</span> <span id="property-comment-color">' . t(442, 'Hexadecimal color code') . ': #ffffff</span> <span id="property-comment-country">' . t(225, 'Alpha-2 country code') . ' (es, us, uk...)</span> <span id="property-comment-file">' . t(204, 'ID of the file') . '</span> <span id="property-comment-video">' . t(490, 'ID of the file or public video URL') . '</span> <span id="property-comment-coordinates">' . t(298, 'Latitude') . '#' . t(299, 'Longitude') . ': 40.689231#-74.044505</span> </div> </div> <div class="navigate-form-row"> <label>' . t(65, 'Enabled') . '</label> ' . $naviforms->checkbox('property-enabled', 1) . ' </div> <div class="navigate-form-row"> <label>' . t(550, 'Help text') . '</label> ' . $naviforms->textfield('property-helper', '') . ' </div> </form>'); $layout->add_script(' $("#templates-properties-create").bind("click", function() { navigate_templates_edit_property(); return false; }); function navigate_templates_edit_property(el) { if(!el) // new property { $("#property-id").val(""); $("#property-id-span").html("' . t(52, '(new)') . '"); $("#property-element").val("template"); $("#property-template").val("' . $item->id . '"); $("#property-name").val(""); $("#property-type").val("value"); $("#property-options").val(""); $("#property-dvalue").val(""); $("#property-helper").val(""); $("#property-multilanguage").removeAttr("checked"); $("#property-enabled").attr("checked", "checked"); } else { $.ajax({ type: "GET", async: false, dateType: "json", url: "' . NAVIGATE_URL . '/' . NAVIGATE_MAIN . '?fid=' . $_REQUEST['fid'] . '&act=template_property_load&template=' . $item->id . '&id=" + $(el).attr("id"), success: function(data) { $("#property-id-span").html(data.id); $("#property-id").val(data.id); $("#property-element").val(data.element); $("#property-template").val(data.template); $("#property-name").val(data.name); $("#property-type").val(data.type); $("#property-options").val(data.options); $("#property-dvalue").val(data.dvalue); $("#property-helper").val(data.helper); if(data.multilanguage=="true") $("#property-multilanguage").attr("checked", "checked"); else $("#property-multilanguage").removeAttr("checked"); if(data.enabled=="1") $("#property-enabled").attr("checked", "checked"); else $("#property-enabled").removeAttr("checked"); var options = ""; for(var o in data.options) { options += o + "#" + data.options[o] + "\\n"; } $("#property-options").val(options); } }); } navigate_templates_property_type_change(); var navigate_templates_element_types = new Array(); navigate_templates_element_types["item"] = "' . t(180, 'Item') . '"; navigate_templates_element_types["structure"] = "' . t(16, 'Structure') . '"; //navigate_templates_element_types["product"] = "' . t(214, 'Product') . '"; if(' . ($readonly ? 'true' : 'false') . ') { $("#templates-properties-edit-dialog").dialog( { title: \'<img src="img/icons/silk/pencil.png" align="absmiddle" /> ' . t(170, 'Edit') . '\', resizable: true, height: 360, width: 650, modal: true, }); } else // show dialog with action buttons { $("#templates-properties-edit-dialog").dialog( { title: \'<img src="img/icons/silk/pencil.png" align="absmiddle" /> ' . t(170, 'Edit') . '\', resizable: true, height: 410, width: 650, modal: true, buttons: { "' . t(58, 'Cancel') . '": function() { $(this).dialog("close"); }, "' . t(35, 'Delete') . '": function() { $.ajax({ type: "POST", async: false, dateType: "text", url: "' . NAVIGATE_URL . '/' . NAVIGATE_MAIN . '?fid=' . $_REQUEST['fid'] . '&act=template_property_remove", data: $("#templates-properties-edit-dialog").serialize(), success: function(msg) { $("#template_properties_table").find("#" + $("#property-id").val()).remove(); navigate_naviorderedtable_template_properties_table_reorder(); $("#templates-properties-edit-dialog").dialog("close"); } }); }, "' . t(190, 'Ok') . '": function() { $.ajax({ type: "POST", async: false, dateType: "text", url: "' . NAVIGATE_URL . '/' . NAVIGATE_MAIN . '?fid=' . $_REQUEST['fid'] . '&act=template_property_save", data: $("#templates-properties-edit-dialog").serialize(), success: function(data) { if($("#property-id").val() > 0) { // update var tr = $("#template_properties_table").find("#" + $("#property-id").val()); tr.find("td").eq(0).html(data.name); tr.find("td").eq(1).html(data.type_text); tr.find("td").eq(2).html(navigate_templates_element_types[data.element]); tr.find("input[type=checkbox]").attr("checked", (data.enabled==1)); } else { // insert var checked = ""; if(data.enabled) checked = \' checked="checked" \'; var tr = \'<tr id="\'+data.id+\'"><td>\'+data.name+\'</td><td>\'+data.type_text+\'</td><td>\'+navigate_templates_element_types[data.element]+\'</td><td align="center"><input name="property-enabled[]" class="raw-checkbox" type="checkbox" value="\'+data.id+\'" \'+checked+\' /></td></tr>\'; $("#template_properties_table").find("tbody:last").append(tr); $("#template_properties_table").find("tr:last").bind("dblclick", function() { navigate_templates_edit_property(this); }); $("#template_properties_table").tableDnD( { onDrop: function(table, row) { navigate_naviorderedtable_template_properties_table_reorder(); } }); } navigate_naviorderedtable_template_properties_table_reorder(); $("#templates-properties-edit-dialog").dialog("close"); } }); } } }); } } function navigate_templates_property_type_change() { $("#property-options").parent().hide(); $("#property-multilanguage").parent().hide(); $("#property-dvalue").next().find("span").hide(); switch($("#property-type").val()) { case "option": $("#property-options").parent().show(); $("#property-comment-option").show(); break; case "moption": $("#property-options").parent().show(); $("#property-comment-moption").show(); break; case "text": case "textarea": case "link": case "rich_textarea": case "source_code": $("#property-comment-text").show(); break; case "date": case "datetime": $("#property-comment-date").show(); break; case "image": case "file": $("#property-comment-file").show(); $("#property-multilanguage").parent().show(); break; case "video": $("#property-comment-video").show(); break; case "rating": $("#property-comment-rating").show(); break; case "color": $("#property-comment-color").show(); break; case "coordinates": $("#property-comment-coordinates").show(); break; case "country": $("#property-comment-country").show(); break; case "boolean": $("#property-comment-boolean").show(); break; case "comment": case "value": default: } } navigate_naviorderedtable_template_properties_table_reorder(); '); } return $navibars->generate(); }