public function load_from_post()
 {
     global $website;
     // it can only be extension options!
     if (!empty($this->definition->options)) {
         foreach ($this->definition->options as $extension_option) {
             // get property info
             $property = new property();
             $property->load_from_object($extension_option, $this->settings->{$extension_option->id}, $this);
             $value = '';
             switch ($property->type) {
                 case 'text':
                 case 'textarea':
                     // multilang
                     $value = array();
                     foreach ($website->languages_list as $lang) {
                         $value[$lang] = $_REQUEST['property-' . $extension_option->id . '-' . $lang];
                     }
                     break;
                 case 'link':
                     // multilang and title+link
                     $value = array();
                     foreach ($website->languages_list as $lang) {
                         $value[$lang] = $_REQUEST['property-' . $extension_option->id . '-' . $lang . '-link'] . '##' . $_REQUEST['property-' . $extension_option->id . '-' . $lang . '-title'];
                     }
                     break;
                 case 'date':
                 case 'datetime':
                     $value = core_date2ts($_REQUEST['property-' . $extension_option->id]);
                     break;
                 case 'moption':
                     $value = implode(',', $_REQUEST['property-' . $extension_option->id]);
                     break;
                 case 'coordinates':
                     $value = $_REQUEST['property-' . $extension_option->id . '-latitude'] . '#' . $_REQUEST['property-' . $extension_option->id . '-longitude'];
                     break;
                 case 'boolean':
                     $value = 0;
                     if ($_REQUEST['property-' . $extension_option->id] == '1') {
                         $value = 1;
                     }
                     break;
                 default:
                     // direct value
                     $value = $_REQUEST['property-' . $extension_option->id];
             }
             $this->settings[$extension_option->id] = $value;
         }
     }
 }
Example #2
0
function extensions_options($extension, $saved = null)
{
    global $layout;
    global $website;
    global $events;
    $layout = null;
    $layout = new layout('navigate');
    if ($saved !== null) {
        if ($saved) {
            $layout->navigate_notification(t(53, "Data saved successfully."), false, false, 'fa fa-check');
        } else {
            $layout->navigate_notification(t(56, "Unexpected error"), true, true);
        }
    }
    $navibars = new navibars();
    $naviforms = new naviforms();
    $navibars->title(t(327, 'Extensions'));
    $layout->navigate_media_browser();
    // we can use media browser in this function
    $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="#" 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(7, 'Configuration'));
    $navibars->add_tab_content($naviforms->hidden('form-sent', 'true'));
    // show a language selector (only if it's a multi language website and has properties)
    if (!empty($extension->definition->options) && count($website->languages) > 1) {
        $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('language_selector', $website_languages_selector, '', "navigate_tabform_language_selector(this);")), "navigate-form-language_selector");
        // hide languages selector if there isn't a multilanguage property
        $layout->add_script('
			$(document).ready(function()
		    {
				if($("#navigate-content-tabs-1 .navigate-form-row[lang]").length < 1)
				{
					$("#navigate-form-language_selector").css("display", "none");
				}
		    });
	    ');
    }
    foreach ($extension->definition->options as $option) {
        $property = new property();
        $property->load_from_object($option, $extension->settings[$option->id], $extension);
        if ($property->type == 'tab') {
            $navibars->add_tab($property->name);
            if (count($website->languages) > 1) {
                $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('language_selector', $website_languages_selector, '', "navigate_tabform_language_selector(this);")));
            }
        }
        if ($property->type == 'function') {
            $fname = $option->dvalue;
            if (empty($fname)) {
                $fname = $option->function;
            }
            // load the extension source code, if not already done
            extension::include_php($extension->code);
            if (!function_exists($fname)) {
                continue;
            }
            call_user_func($fname, array('extension' => $extension, 'navibars' => $navibars, 'naviforms' => $naviforms));
        } else {
            $navibars->add_tab_content(navigate_property_layout_field($property, $extension));
        }
    }
    $layout->add_content('<div id="navigate-content" class="navigate-content ui-corner-all">' . $navibars->generate() . '</div>');
    $layout->navigate_additional_scripts();
    navigate_property_layout_scripts();
    // add javascript to enable special buttons and functions (Copy from, etc.)
    $layout->add_script('
        $("html").css("background", "transparent");
    ');
    $out = $layout->generate();
    return $out;
}
Example #3
0
function block_group_extension_block_options($block_group, $block_extension, $block_id, $block_uid, $status)
{
    global $layout;
    global $website;
    global $theme;
    if (empty($block_extension)) {
        throw new Exception("Unknown extension: {" . $block_extension . "} for block with uid:" . $block_uid);
    }
    $extension = new extension();
    $extension->load($block_extension);
    $block = block::extension_block($extension, $block_id);
    $properties = $block->properties;
    if (empty($properties)) {
        return;
    }
    $layout = null;
    $layout = new layout('navigate');
    if ($status !== null) {
        if ($status) {
            $layout->navigate_notification(t(53, "Data saved successfully."), false, false, 'fa fa-check');
        } else {
            $layout->navigate_notification(t(56, "Unexpected error"), true, true);
        }
    }
    $navibars = new navibars();
    $naviforms = new naviforms();
    $navibars->title(t(437, 'Block') . ' [' . $block_extension . ' / ' . $block_id . ']');
    $layout->navigate_media_browser();
    // we can use media browser in this function
    $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="#" 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(200, 'Options'));
    $navibars->add_tab_content($naviforms->hidden('form-sent', 'true'));
    // show a language selector (only if it's a multi language website)
    if (count($website->languages) > 1) {
        $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('language_selector', $website_languages_selector, '', "navigate_tabform_language_selector(this);")));
    }
    $properties_values = property::load_properties(NULL, $block_id, "extension_block", $block_group, $block_uid);
    foreach ($properties as $option) {
        $property = new property();
        $property_value = '';
        foreach ($properties_values as $pv) {
            if ($pv->id == $option->id) {
                $property_value = $pv->value;
            }
        }
        $property->load_from_object($option, $property_value, $extension);
        if ($property->type == 'tab') {
            $navibars->add_tab($property->name);
            if (count($website->languages) > 1) {
                $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('language_selector', $website_languages_selector, '', "navigate_tabform_language_selector(this);")));
            }
        }
        $navibars->add_tab_content(navigate_property_layout_field($property, $extension));
    }
    $layout->add_content('<div id="navigate-content" class="navigate-content ui-corner-all">' . $navibars->generate() . '</div>');
    navigate_property_layout_scripts();
    $layout->navigate_additional_scripts();
    $layout->add_script('
        $("html").css("background", "transparent");
    ');
    $out = $layout->generate();
    return $out;
}