/** ------------------------------------- /** Libraries we need loaded /** -------------------------------------*/ function libraries() { $fp = new FilePicker(); $fp->inject(ee()->view); return array(); // @todo The following should already be loaded in the CP... /* return array( 'plugin' => 'ee_filebrowser', 'ui' => 'dialog' ); */ }
/** * Category creation/edit form * * @param int $group_id ID of category group category is (to be) in * @param int $category_id ID of category to edit */ private function categoryForm($group_id, $category_id = NULL) { if (empty($group_id) or !is_numeric($group_id)) { show_error(lang('unauthorized_access')); } $cat_group = ee('Model')->get('CategoryGroup')->filter('group_id', $group_id)->first(); if (!$cat_group) { show_error(lang('unauthorized_access')); } // Check discrete privileges if (AJAX_REQUEST) { $can_edit = explode('|', rtrim($cat_group->can_edit_categories, '|')); if (ee()->session->userdata('group_id') != 1 and !in_array(ee()->session->userdata('group_id'), $can_edit)) { show_error(lang('unauthorized_access')); } } if (is_null($category_id)) { $alert_key = 'created'; ee()->view->cp_page_title = lang('create_category'); ee()->view->base_url = ee('CP/URL')->make('channels/cat/create-cat/' . $group_id); $category = ee('Model')->make('Category'); $category->setCategoryGroup($cat_group); // Only auto-complete channel short name for new channels ee()->cp->add_js_script('plugin', 'ee_url_title'); ee()->javascript->set_global('publish.word_separator', ee()->config->item('word_separator') != "dash" ? '_' : '-'); ee()->javascript->output(' $("input[name=cat_name]").bind("keyup keydown", function() { $(this).ee_url_title("input[name=cat_url_title]"); }); '); } else { $category = ee('Model')->get('Category')->filter('cat_id', (int) $category_id)->first(); if (!$category) { show_error(lang('unauthorized_access')); } $alert_key = 'updated'; ee()->view->cp_page_title = lang('edit_category'); ee()->view->base_url = ee('CP/URL')->make('channels/cat/edit-cat/' . $group_id . '/' . $category_id); } ee()->load->library('api'); ee()->legacy_api->instantiate('channel_categories'); ee()->api_channel_categories->category_tree($group_id, $category->parent_id); $parent_id_options[0] = $this->lang->line('none'); foreach (ee()->api_channel_categories->categories as $cat) { // Don't give option to set self as parent if (!is_null($category_id) && $category_id == $cat[0]) { continue; } $indent = $cat[5] != 1 ? str_repeat(NBS . NBS . NBS . NBS, $cat[5]) : ''; $parent_id_options[$cat[0]] = $indent . $cat[1]; } ee()->load->library('file_field'); $vars['sections'] = array(array(array('title' => 'name', 'desc' => '', 'fields' => array('cat_name' => array('type' => 'text', 'value' => $category->cat_name, 'required' => TRUE))), array('title' => 'url_title_lc', 'desc' => 'alphadash_desc', 'fields' => array('cat_url_title' => array('type' => 'text', 'value' => $category->cat_url_title, 'required' => TRUE))), array('title' => 'description', 'desc' => 'cat_description_desc', 'fields' => array('cat_description' => array('type' => 'textarea', 'value' => $category->cat_description))))); if (!AJAX_REQUEST) { $vars['sections'][0][] = array('title' => 'image', 'desc' => 'cat_image_desc', 'fields' => array('cat_image_select' => array('type' => 'radio', 'choices' => array('none' => 'cat_image_none', 'choose' => 'cat_image_choose'), 'value' => 'none'), 'cat_image' => array('type' => 'image', 'id' => 'cat_image', 'image' => ee()->file_field->parse_string($category->cat_image), 'value' => $category->cat_image))); } $vars['sections'][0][] = array('title' => 'parent_category', 'desc' => 'parent_category_desc', 'fields' => array('parent_id' => array('type' => 'select', 'value' => $category->parent_id, 'choices' => $parent_id_options))); if (!AJAX_REQUEST) { foreach ($category->getDisplay()->getFields() as $field) { $vars['sections']['custom_fields'][] = array('title' => $field->getLabel(), 'desc' => '', 'fields' => array($field->getName() => array('type' => 'html', 'content' => $field->getForm(), 'required' => $field->isRequired()))); } } ee()->view->ajax_validate = TRUE; ee()->view->save_btn_text = sprintf(lang('btn_save'), lang('category')); ee()->view->save_btn_text_working = 'btn_saving'; if (!empty($_POST)) { $category->set($_POST); $result = $category->validate(); // Handles saving from the category modal on the publish form if (isset($_POST['save_modal'])) { if ($result->isValid()) { $category->save(); return array('messageType' => 'success', 'body' => $this->categoryGroupPublishField($group_id)); } else { ee()->load->library('form_validation'); ee()->form_validation->_error_array = $result->renderErrors(); return array('messageType' => 'error', 'body' => ee()->cp->render('_shared/form', $vars, TRUE)); } } if ($response = $this->ajaxValidation($result)) { return $response; } if ($result->isValid()) { $category = $category->save(); if (is_null($category_id)) { ee()->session->set_flashdata('highlight_id', $category->getId()); } ee('CP/Alert')->makeInline('shared-form')->asSuccess()->withTitle(lang('category_' . $alert_key))->addToBody(sprintf(lang('category_' . $alert_key . '_desc'), $category->cat_name))->defer(); ee()->functions->redirect(ee('CP/URL')->make('channels/cat/cat-list/' . $cat_group->group_id)); } else { ee()->load->library('form_validation'); ee()->form_validation->_error_array = $result->renderErrors(); ee('CP/Alert')->makeInline('shared-form')->asIssue()->withTitle(lang('category_group_not_' . $alert_key))->addToBody(lang('category_group_not_' . $alert_key . '_desc'))->now(); } } if (AJAX_REQUEST) { return ee()->cp->render('_shared/form', $vars); } $filepicker = new FilePicker(); $filepicker->inject(ee()->view); ee()->cp->add_js_script('file', 'cp/channel/category_edit'); ee()->javascript->set_global('category_edit.filepicker_url', ee('CP/URL')->make($filepicker->controller, array('directory' => 'all', 'type' => 'img'))->compile()); ee()->javascript->output('$(document).ready(function () { EE.cp.categoryEdit.init(); });'); ee()->cp->set_breadcrumb(ee('CP/URL')->make('channels/cat'), lang('category_groups')); ee()->cp->set_breadcrumb(ee('CP/URL')->make('channels/cat/cat-list/' . $cat_group->group_id), $cat_group->group_name . ' — ' . lang('categories')); ee()->cp->render('settings/form', $vars); }
/** * Show the publish field * * @access public */ function display_field($data) { $allowed_file_dirs = isset($this->settings['allowed_directories']) && $this->settings['allowed_directories'] != 'all' ? $this->settings['allowed_directories'] : ''; $content_type = isset($this->settings['field_content_type']) ? $this->settings['field_content_type'] : 'all'; $existing_limit = isset($this->settings['num_existing']) ? $this->settings['num_existing'] : 0; $show_existing = isset($this->settings['show_existing']) ? $this->settings['show_existing'] : 'n'; $filebrowser = REQ == 'CP'; if (REQ == 'CP') { ee()->lang->loadfile('fieldtypes'); ee()->cp->add_js_script(array('file' => array('fields/file/cp'))); $fp = new FilePicker(); $fp->inject(ee()->view); if ($allowed_file_dirs == '') { $allowed_file_dirs = 'all'; } $url_query_string = array('directory' => $allowed_file_dirs); if ($allowed_file_dirs != 'all') { $url_query_string['restrict'] = TRUE; } $file = $this->_parse_field($data); return ee('View')->make('file:publish')->render(array('field_name' => $this->field_name, 'value' => $data, 'file' => $file, 'thumbnail' => ee('Thumbnail')->get($file)->url, 'fp_url' => ee('CP/URL')->make($fp->controller, $url_query_string))); } $this->_frontend_js(); $this->_frontend_css(); return ee()->file_field->field($this->field_name, $data, $allowed_file_dirs, $content_type, $filebrowser, $show_existing == 'y' ? $existing_limit : NULL); }
function display_field($data) { if (isset($this->settings['field_show_formatting_btns']) && $this->settings['field_show_formatting_btns'] == 'y' && !ee()->session->cache(__CLASS__, 'markitup_initialized')) { $member = ee('Model')->get('Member', ee()->session->userdata('member_id'))->first(); $buttons = $member->getHTMLButtonsForSite(ee()->config->item('site_id')); $markItUp = array('nameSpace' => 'html', 'markupSet' => array()); foreach ($buttons as $button) { $markItUp['markupSet'][] = $button->prepForJSON(); } ee()->javascript->set_global('markitup.settings', $markItUp); ee()->cp->add_js_script(array('plugin' => array('markitup'))); ee()->javascript->output('$("textarea[data-markitup]").markItUp(EE.markitup.settings);'); ee()->session->set_cache(__CLASS__, 'markitup_initialized', TRUE); } // Set a boolean telling if we're in Grid AND this textarea has // markItUp enabled $grid_markitup = $this->content_type() == 'grid' && isset($this->settings['show_formatting_buttons']) && $this->settings['show_formatting_buttons'] == 1; if ($grid_markitup) { // Load the Grid cell display binding only once if (!ee()->session->cache(__CLASS__, 'grid_js_loaded')) { ee()->javascript->output(' Grid.bind("textarea", "display", function(cell) { var textarea = $("textarea.markItUp", cell); // Only apply file browser trigger if a field was found if (textarea.size()) { textarea.markItUp(EE.markitup.settings); EE.publish.file_browser.textarea(cell); } }); '); ee()->session->set_cache(__CLASS__, 'grid_js_loaded', TRUE); } } if (REQ == 'CP') { $class = $grid_markitup ? 'markItUp' : ''; $toolbar = FALSE; $format_options = array('field_show_smileys', 'field_show_file_selector'); foreach ($format_options as $option) { if (isset($this->settings[$option]) && $this->settings[$option] == 'y') { $toolbar = TRUE; $class .= ' has-format-options'; break; } } $format_options = array(); if (isset($this->settings['field_show_fmt']) && $this->settings['field_show_fmt'] == 'y') { ee()->load->model('addons_model'); $format_options = ee()->addons_model->get_plugin_formatting(TRUE); } ee()->cp->get_installed_modules(); ee()->load->helper('smiley'); ee()->load->library('table'); $smileys_enabled = isset(ee()->cp->installed_modules['emoticon']) ? TRUE : FALSE; $smileys = ''; if ($smileys_enabled) { $image_array = get_clickable_smileys(ee()->config->slash_item('emoticon_url'), $this->name()); $col_array = ee()->table->make_columns($image_array, 8); $smileys = ee()->table->generate($col_array); ee()->table->clear(); } $vars = array('name' => $this->name(), 'settings' => $this->settings, 'value' => $data, 'class' => trim($class), 'toolbar' => $toolbar, 'format_options' => $format_options, 'smileys_enabled' => $smileys_enabled, 'smileys' => $smileys); if (isset($this->settings['field_show_file_selector']) && $this->settings['field_show_file_selector'] == 'y') { $fp = new FilePicker(); $fp->inject(ee()->view); $vars['fp_url'] = ee('CP/URL')->make($fp->controller, array('directory' => 'all')); ee()->cp->add_js_script(array('file' => array('fields/textarea/cp'), 'plugin' => array('ee_txtarea'))); } return ee('View')->make('textarea:publish')->render($vars); } return form_textarea(array('name' => $this->name(), 'value' => $data, 'rows' => $this->settings['field_ta_rows'], 'dir' => $this->settings['field_text_direction'], 'class' => $grid_markitup ? 'markItUp' : '')); }
/** * Personal Settings */ public function index() { $this->base_url = ee('CP/URL')->make($this->base_url, $this->query_string); // Birthday Options $birthday['days'] = array(); $birthday['years'][''] = lang('year'); for ($i = date('Y', $this->localize->now); $i > 1904; $i--) { $birthday['years'][$i] = $i; } $birthday['months'] = array('' => lang('month'), '01' => lang('January'), '02' => lang('February'), '03' => lang('March'), '04' => lang('April'), '05' => lang('May_l'), '06' => lang('June'), '07' => lang('July'), '08' => lang('August'), '09' => lang('September'), '10' => lang('October'), '11' => lang('November'), '12' => lang('December')); $birthday['days'][''] = lang('day'); for ($i = 1; $i <= 31; $i++) { $birthday['days'][$i] = $i; } $settings = array(); if ($this->member->parse_smileys == 'y') { $settings[] = 'display_emoticons'; } if ($this->member->display_avatars == 'y') { $settings[] = 'display_avatars'; } if ($this->member->accept_messages == 'y') { $settings[] = 'allow_messages'; } $this->load->helper('html'); $this->load->helper('directory'); $path = ee()->config->item('avatar_path'); $directory = ee('Model')->get('UploadDestination')->filter('server_path', $path)->first(); $fp = new FilePicker(); $fp->inject(ee()->view); $dirs = array(); $avatar_choices = array(); if ($directory) { $fp = new FilePicker(); $fp->inject(ee()->view); $dirs[] = $fp->link('Avatars', $directory->id, array('image' => 'avatar', 'input' => 'avatar_filename', 'hasFilters' => FALSE, 'hasUpload' => FALSE, 'selected' => $this->member->avatar_filename, 'class' => 'avatarPicker')); $avatar_choices = array('upload' => array('label' => 'upload_avatar', 'html' => form_upload('upload_avatar')), 'choose' => array('label' => 'choose_avatar', 'html' => ul($dirs, array('class' => 'arrow-list')))); } $avatar_choices['link'] = array('label' => 'link_avatar', 'html' => form_input('link_avatar', 'http://')); $avatar_choose_lang_desc = lang('change_avatar_desc'); if (count($avatar_choices) == 1) { $avatar_choose_lang_desc .= sprintf(lang('update_avatar_path'), ee('CP/URL', 'settings/avatars')); } $vars['has_file_input'] = TRUE; $vars['sections'] = array(array(array('title' => 'url', 'desc' => 'url_desc', 'fields' => array('url' => array('type' => 'text', 'value' => $this->member->url))), array('title' => 'location', 'desc' => 'location_desc', 'fields' => array('location' => array('type' => 'text', 'value' => $this->member->location))), array('title' => 'birthday', 'desc' => 'birthday_desc', 'fields' => array('bday_d' => array('type' => 'select', 'choices' => $birthday['days'], 'value' => $this->member->bday_d), 'bday_m' => array('type' => 'select', 'choices' => $birthday['months'], 'value' => $this->member->bday_m), 'bday_y' => array('type' => 'select', 'choices' => $birthday['years'], 'value' => $this->member->bday_y))), array('title' => 'biography', 'desc' => 'biography_desc', 'fields' => array('bio' => array('type' => 'textarea', 'value' => $this->member->bio))), array('title' => 'language', 'desc' => 'language_desc', 'fields' => array('language' => array('type' => 'select', 'choices' => ee()->lang->language_pack_names(), 'value' => $this->member->language ?: ee()->config->item('deft_lang')))), array('title' => 'preferences', 'desc' => 'preferences_desc', 'fields' => array('preferences' => array('type' => 'checkbox', 'choices' => array('accept_messages' => lang('allow_messages'), 'display_avatars' => lang('display_avatars'), 'parse_smileys' => lang('parse_smileys')), 'value' => $settings)))), 'avatar_settings' => array(array('title' => 'current_avatar', 'desc' => 'current_avatar_desc', 'fields' => array('avatar_filename' => array('type' => 'image', 'id' => 'avatar', 'edit' => FALSE, 'image' => $directory ? $directory->url . $this->member->avatar_filename : '', 'value' => $this->member->avatar_filename))), array('title' => 'change_avatar', 'desc' => $avatar_choose_lang_desc, 'fields' => array('avatar_picker' => array('type' => 'radio_block', 'choices' => $avatar_choices, 'value' => count($avatar_choices) == 1 ? 'link' : 'choose'))))); if ($this->member->avatar_filename == "") { $vars['sections']['avatar_settings'][0]['hide'] = TRUE; } ee()->form_validation->set_rules(array(array('field' => 'url', 'label' => 'lang:timezone', 'rules' => 'valid_xss_check'), array('field' => 'location', 'label' => 'lang:location', 'rules' => 'valid_xss_check'), array('field' => 'bio', 'label' => 'lang:biography', 'rules' => 'valid_xss_check'))); if (AJAX_REQUEST) { ee()->form_validation->run_ajax(); exit; } elseif (ee()->form_validation->run() !== FALSE) { if ($this->saveSettings($vars['sections'])) { ee('CP/Alert')->makeInline('shared-form')->asSuccess()->withTitle(lang('member_updated'))->addToBody(lang('member_updated_desc'))->defer(); ee()->functions->redirect($this->base_url); } } elseif (ee()->form_validation->errors_exist()) { ee('CP/Alert')->makeInline('shared-form')->asIssue()->withTitle(lang('settings_save_erorr'))->addToBody(lang('settings_save_error_desc'))->now(); } ee()->cp->add_js_script(array('file' => array('cp/members/avatar'))); ee()->view->base_url = $this->base_url; ee()->view->ajax_validate = TRUE; ee()->view->cp_page_title = lang('personal_settings'); ee()->view->save_btn_text = 'btn_save_settings'; ee()->view->save_btn_text_working = 'btn_save_settings_working'; ee()->cp->render('settings/form', $vars); }