Exemplo n.º 1
0
 /** -------------------------------------
 	/**  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'
     		);
     */
 }
Exemplo n.º 2
0
    /**
     * 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);
    }
Exemplo n.º 3
0
 /**
  * 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);
 }
Exemplo n.º 4
0
    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' : ''));
    }
Exemplo n.º 5
0
 /**
  * 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);
 }