public function unix_locales() { global $session; if (is_callable('shell_exec') && false === stripos(ini_get('disable_functions'), 'shell_exec')) { $locales = shell_exec('locale -a'); $tmp = explode("\n", $locales); } else { // default list of unix locales $locales = "aa_DJ,aa_ER,aa_ER@saaho,aa_ET,af_ZA,am_ET,an_ES,ar_AE,ar_BH,ar_DZ,ar_EG,ar_IN,ar_IQ,ar_JO,ar_KW,ar_LB,ar_LY,ar_MA,ar_OM,ar_QA,ar_SA,ar_SD,ar_SY,ar_TN,ar_YE,as_IN,ast_ES,az_AZ,be_BY,be_BY@latin,ber_DZ,ber_MA,bg_BG,bn_BD,bn_IN,bo_CN,bo_IN,bokmal,bokm,br_FR,bs_BA,byn_ER,C,ca_AD,ca_ES,ca_FR,ca_IT,catalan,crh_UA,croatian,csb_PL,cs_CZ,cv_RU,cy_GB,czech,da_DK,danish,dansk,de_AT,de_BE,de_CH,de_DE,de_LU,deutsch,dutch,dv_MV,dv_MV.utf8,dz_BT,dz_BT.utf8,eesti,el_CY,el_GR,en_AG,en_AU,en_BW,en_CA,en_DK,en_GB,en_HK,en_IE,en_IN,en_NG,en_NZ,en_PH,en_SG,en_US,en_ZA,en_ZW,es_AR,es_BO,es_CL,es_CO,es_CR,es_DO,es_EC,es_ES,es_GT,es_HN,es_MX,es_NI,es_PA,es_PE,es_PR,es_PY,es_SV,estonian,es_US,es_UY,es_VE,et_EE,eu_ES,fa_IR,fi_FI,fil_PH,finnish,fo_FO,fran栩s,fr_BE,fr_CA,fr_CH,french,fr_FR,fr_LU,fur_IT,fy_DE,fy_NL,ga_IE,galego,galician,gd_GB,german,gez_ER,gez_ET,gl_ES,greek,gu_IN,gv_GB,ha_NG,hebrew,he_IL,hi_IN,hne_IN,hr_HR,hrvatski,hsb_DE,ht_HT,hu_HU,hungarian,hy_AM,icelandic,id_ID,ig_NG,ik_CA,is_IS,italian,it_CH,it_IT,iu_CA,iw_IL,ja_JP,japanese,ka_GE,kk_KZ,kl_GL,km_KH,kn_IN,kok_IN,ko_KR,korean,ks_IN,ku_TR,kw_GB,ky_KG,lg_UG,li_BE,li_NL,lithuanian,lo_LA,lt_LT,lv_LV,mai_IN,mg_MG,mi_NZ,mk_MK,ml_IN,mn_MN,mr_IN,ms_MY,mt_MT,my_MM,nb_NO,nds_DE,nds_NL,ne_NP,nl_AW,nl_BE,nl_NL,nn_NO,no_NO,norwegian,nr_ZA,nso_ZA,nynorsk,oc_FR,om_ET,om_KE,or_IN,pa_IN,pap_AN,pa_PK,pl_PL,polish,portuguese,POSIX,ps_AF,pt_BR,pt_PT,romanian,ro_RO,ru_RU,russian,ru_UA,rw_RW,sa_IN,sc_IT,sd_IN,se_NO,shs_CA,sid_ET,si_LK,sk_SK,slovak,slovene,slovenian,sl_SI,so_DJ,so_ET,so_KE,so_SO,spanish,sq_AL,sq_MK,sr_ME,sr_RS,ss_ZA,st_ZA,sv_FI,sv_SE,swedish,ta_IN,te_IN,tg_TJ,thai,th_TH,ti_ER,ti_ET,tig_ER,tk_TM,tl_PH,tn_ZA,tr_CY,tr_TR,ts_ZA,tt_RU,turkish,ug_CN,uk_UA,ur_PK,uz_UZ,ve_ZA,vi_VN,wa_BE,wo_SN,xh_ZA,yi_US,yo_NG,zh_CN,zh_HK,zh_SG,zh_TW,zu_ZA"; $tmp = explode(",", $locales); } $locales = array(); $languages = language::language_names(false); $countries = property::countries($session['lang'], true); $tmp = array_filter($tmp); foreach ($tmp as $loc) { if (in_array($loc, array('C', 'POSIX'))) { continue; } if (strpos($loc, '.') === false) { if (in_array($loc . '.utf8', $tmp)) { continue; } } else { // there is a dot in the locale name $check = substr($loc, 0, strpos($loc, '.')) . '.utf8'; if (in_array($check, $tmp) && $check != $loc) { continue; } } $language = @$languages[substr($loc, 0, 2)]; if (empty($language)) { $language = '?'; } $country = @$countries[substr($loc, 3, 2)]; if (!empty($country)) { $country = ' (' . $country . ')'; } $locales[$loc] = $language . $country . ' [' . $loc . ']'; } return $locales; }
function navigate_property_layout_field($property, $object = "", $website_id = "") { global $website; global $layout; global $theme; global $user; global $DB; $ws = $website; $ws_theme = $theme; if (!empty($website_id) && $website_id != $website->id) { $ws = new website(); $ws->load($website_id); $ws_theme = new theme(); $ws_theme->load($ws->theme); } // object used for translations (theme or extension) if (empty($object)) { $object = $ws_theme; } $naviforms = new naviforms(); $langs = $ws->languages_list; $field = array(); if (!isset($property->value)) { $property->value = $property->dvalue; } if (!isset($property->multilanguage)) { $property->multilanguage = 'false'; } $property_name = $property->name; if (!empty($object)) { $property_name = $object->t($property_name); } if (in_array($property->type, array("text", "textarea", "rich_textarea", "link")) || $property->multilanguage == 'true') { if (!isset($property->multilanguage) || $property->multilanguage !== false || $property->multilanguage == "false") { $property->multilanguage = 'true'; } else { $property->multilanguage = 'false'; } if (is_object($property->value)) { $property->value = (array) $property->value; } if (!is_array($property->value)) { $property->value = array(); } foreach ($langs as $lang) { if (!isset($property->value[$lang]) && isset($property->dvalue)) { $property->value[$lang] = $property->dvalue; } } } // auto show/hide properties by other properties values --> "conditional": [ { "source_property_id" : [value1,"value2"] } ] if (!empty($property->conditional)) { foreach ($property->conditional as $conditional) { foreach ($conditional as $conditional_property => $conditional_values) { if (!is_array($conditional_values)) { $conditional_values = array($conditional_values); } $conditional_values = '["' . implode('", "', $conditional_values) . '"]'; $layout->add_script(' navigate_tabform_conditional_property("' . $property->id . '", "' . $conditional_property . '", ' . $conditional_values . '); '); } } } switch ($property->type) { case 'value': $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '">'; $field[] = '<label>' . $property_name . '</label>'; $field[] = $naviforms->textfield("property-" . $property->id, $property->value); if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } $field[] = '</div>'; break; case 'decimal': $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '">'; $field[] = '<label>' . $property_name . '</label>'; $field[] = $naviforms->decimalfield("property-" . $property->id, $property->value, $property->precision, $user->decimal_separator, $user->thousands_separator, @$property->prefix, @$property->suffix); if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } $field[] = '</div>'; break; case 'rating': $default = explode('#', $property->dvalue); $stars = $default[1]; if (empty($stars)) { $stars = 5; } $inputs = $stars * 2; // half stars ALWAYS enabled if ($property->value == $property->dvalue) { $property->value = intval($default[0]) * 2; } $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '" style=" height: 18px; ">'; $field[] = '<label>' . $property_name . '</label>'; for ($i = 1; $i <= $inputs; $i++) { $checked = ''; if ($property->value == $i) { $checked = ' checked="checked" '; } $field[] = '<input type="radio" name="property-' . $property->id . '" class="star {split:2}" value="' . $i . '" ' . $checked . ' />'; } if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } $field[] = '</div>'; break; case 'boolean': $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '">'; $field[] = '<label>' . $property_name . '</label>'; $field[] = $naviforms->checkbox("property-" . $property->id, $property->value == '1'); if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } $field[] = '</div>'; break; case 'option': $options = $property->options; if (is_string($options)) { $options = mb_unserialize($options); } else { if (is_object($options)) { $options = (array) $options; } } // translate each option text if (!empty($object) && !empty($options)) { foreach ($options as $value => $text) { $options[$value] = $object->t($text); } } if (!isset($property->option_html)) { $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '">'; $field[] = '<label>' . $property_name . '</label>'; $field[] = $naviforms->selectfield("property-" . $property->id, array_keys($options), array_values($options), $property->value); if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } $field[] = '</div>'; } else { // each option formatted in a specific html fragment if (isset($property->stylesheet)) { $custom_stylesheet = $property->stylesheet; if (strpos($custom_stylesheet, 'http') === false) { $custom_stylesheet = NAVIGATE_URL . '/themes/' . $ws->theme . '/' . $custom_stylesheet . '?bogus=' . time(); } $layout->add_style_tag($custom_stylesheet, false); if (empty($options)) { $custom_stylesheet_contents = file_get_contents(NAVIGATE_PATH . '/themes/' . $ws->theme . '/' . $property->stylesheet); $custom_stylesheet_contents = stylesheet_parse($custom_stylesheet_contents); $options = array(); if (is_array($custom_stylesheet_contents)) { foreach ($custom_stylesheet_contents as $rule => $rule_content) { if (in_array(substr($rule, 0, 1), array('.', '#'))) { $rule = str_replace(array('.', '#', ':before', ':after', ':focus', ':visited'), '', $rule); $options[$rule] = $rule; if (!empty($object)) { $options[$rule] = $object->t($rule); } } } } } } $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '">'; $field[] = '<label>' . $property_name . '</label>'; $field[] = $naviforms->selectfield("property-" . $property->id, array_keys($options), array_values($options), $property->value, NULL, false, NULL, NULL, false, false); $layout->add_script(' $("#property-' . $property->id . '").select2( { selectOnBlur: true, minimumResultsForSearch: 6, escapeMarkup: function (markup) { return markup; // let our custom formatter work }, templateSelection: function(row) { var option_html = "' . str_replace('"', '\\"', $property->option_html) . '"; option_html = option_html.replace(/{{VALUE}}/g, row.id); option_html = option_html.replace(/{{TEXT}}/g, row.text); if(row.id) return option_html; else return "(" + navigate_t(581, "None") + ")"; }, templateResult: function(data) { var option_html = "' . str_replace('"', '\\"', $property->option_html) . '"; option_html = option_html.replace(/{{VALUE}}/g, data.id); option_html = option_html.replace(/{{TEXT}}/g, data.text); if(data.id) return option_html; else return "(" + navigate_t(581, "None") + ")"; } } ); '); if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } $field[] = '</div>'; } break; case 'moption': $options = $property->options; if (is_string($options)) { $options = mb_unserialize($options); } else { if (is_object($options)) { $options = (array) $options; } } // translate each option text if (!empty($object)) { foreach ($options as $value => $text) { $options[$value] = $object->t($text); } } $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '">'; $field[] = '<label>' . $property_name . '</label>'; $field[] = $naviforms->selectfield("property-" . $property->id, array_keys($options), array_values($options), explode(',', $property->value), "", true); if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } $field[] = '</div>'; break; case 'country': $options = property::countries(); $country_codes = array_keys($options); $country_names = array_values($options); // include "country not defined" item array_unshift($country_codes, ''); array_unshift($country_names, '(' . t(307, "Unspecified") . ')'); $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '">'; $field[] = '<label>' . $property_name . '</label>'; $field[] = $naviforms->selectfield("property-" . $property->id, $country_codes, $country_names, strtoupper($property->value)); if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } $field[] = '</div>'; break; case 'coordinates': $coordinates = explode('#', $property->value); $latitude = @$coordinates[0]; $longitude = @$coordinates[1]; $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '">'; $field[] = '<label>' . $property_name . '</label>'; $field[] = $naviforms->textfield("property-" . $property->id . '-latitude', $latitude, '182px'); $field[] = $naviforms->textfield("property-" . $property->id . '-longitude', $longitude, '182px'); $field[] = '<img src="img/icons/silk/map_magnify.png" align="absmiddle" hspace="3px" id="property-' . $property->id . '-show" />'; $field[] = '<div id="property-' . $property->id . '-map-container" style=" display: none; ">'; $field[] = ' <div class="navigate-form-row" id="property-' . $property->id . '-search" style=" width: 278px; height: 24px; margin-top: 9px; margin-left: 40px; position: absolute; z-index: 1000; opacity: 0.95; ">'; $field[] = ' <input type="text" name="property-' . $property->id . '-search-text" style=" width: 240px; " /> '; $field[] = ' <img class="ui-widget ui-button ui-state-default ui-corner-all" sprite="false" style=" cursor: pointer; padding: 3px; " src="' . NAVIGATE_URL . '/img/icons/silk/zoom.png" align="right" />'; $field[] = ' </div>'; $field[] = ' <div id="property-' . $property->id . '-map" style=" width: 400px; height: 200px; "></div>'; $field[] = '</div>'; if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } $field[] = '</div>'; $layout->add_script(' // auto parse standard Google Maps URLs when pasting them in the latitude field $("#property-' . $property->id . '-latitude").on("keyup", function() { var value = $(this).val(); if(value.indexOf("https://www.google")==0) { // locate the @ symbol value = value.substr(value.indexOf("@")+1); value = value.substr(0, value.indexOf("z")); value = value.split(","); if(value.length == 3) // parsed values seem fine { $("#property-' . $property->id . '-latitude").val(value[0]); $("#property-' . $property->id . '-longitude").val(value[1]); } } }); '); $layout->add_script(' var property_' . $property->id . '_lmap = null; var marker = null; L.Icon.Default.imagePath = "' . NAVIGATE_URL . '/lib/external/leaflet/images"; // initialize leaflet map property_' . $property->id . '_lmap = L.map( "property-' . $property->id . '-map", { doubleClickZoom: false } ); // create the tile layer with correct attribution var osmUrl = "http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"; var osmAttrib = "Map data © <a href=\\"http://openstreetmap.org\\">OpenStreetMap</a> contributors"; var osm = new L.TileLayer(osmUrl, {minZoom: 0, maxZoom: 19, attribution: osmAttrib }); property_' . $property->id . '_lmap.addLayer(osm); $("#property-' . $property->id . '-search input").on("keyup", function(e) { if(e.keyCode == 13) property' . $property->id . 'search(); }); $("#property-' . $property->id . '-search img").on("click", property' . $property->id . 'search); $("#property-' . $property->id . '-show").on("click", function() { var myLatlng = new L.LatLng( $("#property-' . $property->id . '-latitude").val(), $("#property-' . $property->id . '-longitude").val() ); property_' . $property->id . '_lmap.setView(myLatlng, 17); marker = L.marker(myLatlng).addTo(property_' . $property->id . '_lmap); property_' . $property->id . '_lmap.on("dblclick", function(e) { $("#property-' . $property->id . '-latitude").val(e.latlng.lat); $("#property-' . $property->id . '-longitude").val(e.latlng.lng) marker.remove(); marker = L.marker(e.latlng).addTo(property_' . $property->id . '_lmap); }); $("#property-' . $property->id . '-map-container").dialog( { width: 600, height: 400, title: "' . t(300, 'Map') . ': ' . t(301, 'Double click a place to set the coordinates') . '", resize: property' . $property->id . 'resize, open: function() { $(this).css("padding", 0); property_' . $property->id . '_lmap.invalidateSize(); } }).dialogExtend( { maximizable: true, "maximize" : property' . $property->id . 'resize, "restore" : property' . $property->id . 'resize }); property' . $property->id . 'resize(); }).css("cursor", "pointer"); function property' . $property->id . 'resize() { $("#property-' . $property->id . '-map").width($("#property-' . $property->id . '-map-container").width()); $("#property-' . $property->id . '-map").height($("#property-' . $property->id . '-map-container").height()); property_' . $property->id . '_lmap.invalidateSize(); } function property' . $property->id . 'search() { var address = $("#property-' . $property->id . '-search input").val(); $.getJSON("http://services.gisgraphy.com/geocoding/geocode?format=json&callback=?&address="+address, function(data) { if(!data.result || data.result.length < 1) alert("Geocode was not successful for the following reason: " + status); else { property_' . $property->id . '_lmap.setView([data.result[0].lat, data.result[0].lng], 19); } }); return false; } '); break; case 'text': foreach ($langs as $lang) { if (!is_array($property->value)) { $ovalue = $property->value; $property->value = array(); foreach ($langs as $lang_value) { $property->value[$lang_value] = $ovalue; } } $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>'; $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '" lang="' . $lang . '">'; $field[] = '<label>' . $property_name . ' ' . $language_info . '</label>'; $field[] = $naviforms->textfield("property-" . $property->id . "-" . $lang, $property->value[$lang]); if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } $field[] = '</div>'; } break; case 'textarea': foreach ($langs as $lang) { if (!is_array($property->value)) { $ovalue = $property->value; $property->value = array(); foreach ($langs as $lang_value) { $property->value[$lang_value] = $ovalue; } } $style = ""; if (!empty($property->width)) { $style = ' width: ' . $property->width . 'px; '; } $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>'; if ($property->multilanguage == 'false') { $language_info = ''; } $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '" lang="' . $lang . '">'; $field[] = '<label>' . $property_name . ' ' . $language_info . '</label>'; $field[] = $naviforms->textarea("property-" . $property->id . "-" . $lang, $property->value[$lang], 4, 48, $style); $field[] = '<button class="navigate-form-row-property-action" data-field="property-' . $property->id . '-' . $lang . '" data-action="copy-from" title="' . t(189, 'Copy from') . '…"><img src="img/icons/silk/page_white_copy.png" align="absmiddle"></button>'; if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } $field[] = '</div>'; if ($property->multilanguage == 'false') { break; } } break; case 'rich_textarea': foreach ($langs as $lang) { if (!is_array($property->value)) { $ovalue = $property->value; $property->value = array(); foreach ($langs as $lang_value) { $property->value[$lang_value] = $ovalue; } } $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>'; if ($property->multilanguage == 'false') { $language_info = ''; } $width = NULL; if (!empty($property->width)) { $width = $property->width . 'px'; } $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '" lang="' . $lang . '">'; $field[] = '<label>' . $property_name . ' ' . $language_info . '</label>'; $field[] = $naviforms->editorfield("property-" . $property->id . "-" . $lang, $property->value[$lang], $width, NULL, $website_id); if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } // additional control buttons $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'] . '(\'property-' . $property->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); } } $field[] = '<div style="clear:both; margin-top:5px; float:left; margin-bottom: 10px;">'; $field[] = '<label> </label>'; $field[] = $translate_menu; $field[] = '<button class="navigate-form-row-property-action" data-field="property-' . $property->id . '-' . $lang . '" data-action="copy-from"><img src="img/icons/silk/page_white_copy.png" align="absmiddle">' . t(189, 'Copy from') . '...</button> '; $field[] = !empty($theme->content_samples) ? '<button onclick="navigate_items_copy_from_theme_samples(\'property-' . $property->id . '-' . $lang . '\', \'' . $property->id . '\', \'' . $lang . '\', \'tinymce\'); return false;"><img src="img/icons/silk/rainbow.png" align="absmiddle"> ' . t(553, 'Fragments') . ' | ' . $theme->title . '</button> ' : ''; $field[] = '</div>'; $field[] = '</div>'; // divformrow if ($property->multilanguage == 'false') { break; } } break; case 'color': $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '">'; $field[] = '<label>' . $property_name . '</label>'; $field[] = $naviforms->colorfield("property-" . $property->id, $property->value, @$property->options); if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } $field[] = '</div>'; break; case 'date': $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '">'; $field[] = '<label>' . $property_name . '</label>'; $field[] = $naviforms->datefield("property-" . $property->id, $property->value, false); if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } $field[] = '</div>'; break; case 'datetime': $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '">'; $field[] = '<label>' . $property_name . '</label>'; $field[] = $naviforms->datefield("property-" . $property->id, $property->value, true); if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } $field[] = '</div>'; break; case 'source_code': if ($property->multilanguage != 'true' && $property->multilanguage != '1') { $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '">'; $field[] = '<label>' . $property_name . '</label>'; $field[] = $naviforms->scriptarea("property-" . $property->id, $property->value); $field[] = ' <button class="navigate-form-row-property-action" data-field="property-' . $property->id . '-' . $lang . '" data-action="copy-from" title="' . t(189, 'Copy from') . '…"><img src="img/icons/silk/page_white_copy.png" align="absmiddle"></button>'; if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } $field[] = '</div>'; } else { foreach ($langs as $lang) { if (!is_array($property->value)) { $ovalue = $property->value; $property->value = array(); foreach ($langs as $lang_value) { $property->value[$lang_value] = $ovalue; } } $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>'; $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '" lang="' . $lang . '">'; $field[] = '<label>' . $property_name . ' ' . $language_info . '</label>'; $field[] = $naviforms->scriptarea("property-" . $property->id . "-" . $lang, $property->value[$lang]); $field[] = ' <button class="navigate-form-row-property-action" data-field="property-' . $property->id . '-' . $lang . '" data-action="copy-from" title="' . t(189, 'Copy from') . '…"><img src="img/icons/silk/page_white_copy.png" align="absmiddle"></button>'; if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } $field[] = '</div>'; } } break; case 'link': foreach ($langs as $lang) { if (!is_array($property->value)) { $ovalue = $property->value; $property->value = array(); foreach ($langs as $lang_value) { $property->value[$lang_value] = $ovalue; } } $link = explode('##', $property->value[$lang]); if (is_array($link)) { $target = @$link[2]; $title = @$link[1]; $link = $link[0]; if (empty($title)) { $title = $link; } } else { $title = $property->value[$lang]; $link = $property->value[$lang]; $target = '_self'; } $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>'; if ($property->multilanguage == 'false') { $language_info = ''; } $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '" lang="' . $lang . '" style="margin-bottom: 0px;">'; $field[] = '<label>' . $property_name . ' ' . $language_info . '</label>'; $field[] = $naviforms->textfield("property-" . $property->id . "-" . $lang . "-title", $title); $field[] = '<span class="navigate-form-row-info">' . t(67, 'Title') . '</span>'; $field[] = '</div>'; $field[] = '<div class="navigate-form-row" lang="' . $lang . '" style="margin-bottom: 0px;" nv_property="' . $property->id . '" >'; $field[] = '<label> </label>'; $field[] = $naviforms->textfield("property-" . $property->id . "-" . $lang . "-link", $link); $field[] = '<span class="navigate-form-row-info">' . t(197, 'Link') . '</span>'; $field[] = '</div>'; $field[] = '<div class="navigate-form-row" lang="' . $lang . '" nv_property="' . $property->id . '" >'; $field[] = '<label> </label>'; $field[] = $naviforms->selectfield("property-" . $property->id . "-" . $lang . "-target", array('_self', '_blank'), array(t(173, "Follow URL"), t(174, "Open URL (new window)")), $target); $field[] = '<span class="navigate-form-row-info">' . t(172, 'Action') . '</span>'; if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } $field[] = '</div>'; if ($property->multilanguage == 'false') { break; } } break; case 'image': if ($property->multilanguage != 'true' && $property->multilanguage != '1') { $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '">'; $field[] = '<label>' . $property_name . '</label>'; $field[] = $naviforms->dropbox("property-" . $property->id, $property->value, "image", false, @$property->dvalue, @$property->options, $website_id); if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } $field[] = '</div>'; } else { foreach ($langs as $lang) { if (!is_array($property->value)) { $ovalue = $property->value; $property->value = array(); foreach ($langs as $lang_value) { $property->value[$lang_value] = $ovalue; } } $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>'; $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '" lang="' . $lang . '">'; $field[] = '<label>' . $property_name . ' ' . $language_info . '</label>'; $field[] = $naviforms->dropbox("property-" . $property->id . "-" . $lang, $property->value[$lang], "image", false, @$property->dvalue, $website_id); if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } $field[] = '</div>'; } } break; case 'video': if ($property->multilanguage != 'true' && $property->multilanguage != '1') { $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '">'; $field[] = '<label>' . $property_name . '</label>'; $field[] = $naviforms->dropbox("property-" . $property->id, $property->value, "video", false, $property->dvalue, $website_id); if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } $field[] = '</div>'; } else { foreach ($langs as $lang) { if (!is_array($property->value)) { $ovalue = $property->value; $property->value = array(); foreach ($langs as $lang_value) { $property->value[$lang_value] = $ovalue; } } $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>'; $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '">'; $field[] = '<label>' . $property_name . ' ' . $language_info . '</label>'; $field[] = $naviforms->dropbox("property-" . $property->id . "-" . $lang, $property->value[$lang], "video", false, $property->dvalue, $website_id); if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } $field[] = '</div>'; } } break; case 'file': $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '">'; $field[] = '<label>' . $property_name . '</label>'; $field[] = $naviforms->dropbox("property-" . $property->id, $property->value, NULL, NULL, NULL, NULL, $website_id); if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } $field[] = '</div>'; break; case 'comment': $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '">'; $field[] = '<label>' . $property_name . '</label>'; $comment_text = $property->value; if (!empty($object)) { $comment_text = $object->t($property->value); } $field[] = '<div class="subcomment" style="clear: none;">' . $comment_text . '</div>'; $field[] = '</div>'; break; case 'category': $hierarchy = structure::hierarchy(0, $website_id); $categories_list = structure::hierarchyList($hierarchy, $property->value); if (empty($categories_list)) { $categories_list = '<ul><li value="0">' . t(428, '(no category)') . '</li></ul>'; } $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '">'; $field[] = '<label>' . $property_name . '</label>'; $field[] = $naviforms->dropdown_tree("property-" . $property->id, $categories_list, $property->value); if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } $field[] = '</div>'; break; case 'categories': $hierarchy = structure::hierarchy(0, $website_id); $selected = explode(',', $property->value); if (!is_array($selected)) { $selected = array($property->value); } $categories_list = structure::hierarchyList($hierarchy, $selected); $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '">'; $field[] = '<label>' . $property_name . '</label>'; $field[] = '<div class="category_tree" id="categories-tree-property-' . $property->id . '"> <img src="img/icons/silk/world.png" align="absmiddle" /> ' . $ws->name . '<div class="tree_ul">' . $categories_list . '</div>' . '</div>'; $field[] = $naviforms->hidden('property-' . $property->id, $property->value); $field[] = '<label> </label>'; $field[] = '<button id="categories_tree_select_all_categories-property-' . $property->id . '">' . t(481, 'Select all') . '</button>'; if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } $field[] = '</div>'; $layout->add_script(' $("#categories-tree-property-' . $property->id . ' .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"); $("#categories-tree-property-' . $property->id . ' .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); }); $("#categories-tree-property-' . $property->id . ' .tree_ul").jstree("select_node", children_nodes); return false; }) .on("changed.jstree", function(e, data) { var i, j, r = []; var categories = new Array(); $("#property-' . $property->id . '").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) $("#property-' . $property->id . '").val(categories); }); $("#categories_tree_select_all_categories-property-' . $property->id . '").on("click", function(e) { e.stopPropagation(); e.preventDefault(); $("#categories-tree-property-' . $property->id . ' .tree_ul").jstree("select_all"); return false; }); '); break; case 'element': case 'item': $property_item_title = ''; $property_item_id = ''; if (!empty($property->value)) { $property_item_title = $DB->query_single('text', 'nv_webdictionary', ' node_type = "item" AND website = "' . $ws->id . '" AND node_id = "' . $property->value . '" AND subtype = "title" AND lang = "' . $ws->languages_published[0] . '"'); $property_item_title = array($property_item_title); $property_item_id = array($property->value); } $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '">'; $field[] = '<label>' . $property_name . '</label>'; $field[] = $naviforms->selectfield("property-" . $property->id, $property_item_id, $property_item_title, $property->value, null, false, null, null, false); if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } $field[] = '</div>'; $template_filter = @$property->element_template; if (empty($template_filter)) { $template_filter = $property->item_template; } $layout->add_script(' $("#property-' . $property->id . '").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, template: "' . $template_filter . '", 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 }); '); break; case 'elements': $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '">'; $field[] = '<label>' . $property_name . '</label>'; $field[] = $naviforms->textfield("property-" . $property->id); if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } $field[] = '</div>'; $template_filter = @$property->element_template; if (empty($template_filter)) { $template_filter = $property->item_template; } $layout->add_script(' $("#property-' . $property->id . '").tagit({ removeConfirmation: true, allowSpaces: true, singleField: true, singleFieldDelimiter: ",", placeholderText: "+", autocompleteOnly: true, autocomplete: { delay: 0, minLength: 1, source: "' . NAVIGATE_URL . '/' . NAVIGATE_MAIN . '?fid=items&act=json_find_item&format=tagit&page_limit=10&template=' . $template_filter . '" }, afterTagAdded: function(event, ui) { var tags = $(this).tagit("assignedValues"); if(tags.length > 0) tags = tags.join(","); else tags = ""; $("#property-' . $property->id . '").val(tags).trigger("change"); }, afterTagRemoved: function(event, ui) { var tags = $(this).tagit("assignedValues"); if(tags.length > 0) tags = tags.join(","); else tags = ""; $("#property-' . $property->id . '").val(tags).trigger("change"); } }); $("#property-' . $property->id . '").next().sortable( { items: ">li:not(.tagit-new)", update: function(ui, event) { var tags = $("#property-' . $property->id . '").tagit("assignedValues"); if(tags.length > 0) tags = tags.join(","); else tags = ""; $("#property-' . $property->id . '").val(tags).trigger("change"); } }); '); if (!empty($property->value)) { $values = explode(",", $property->value); $values = array_filter($values); foreach ($values as $cid) { $content_title = $DB->query_single('text', 'nv_webdictionary', ' node_type = "item" AND website = "' . $ws->id . '" AND node_id = ' . protect($cid) . ' AND subtype = "title" AND lang = "' . $ws->languages_published[0] . '"'); $layout->add_script(' $("#property-' . $property->id . '").tagit("createTag", "' . $content_title . '", "", "", "' . $cid . '"); '); } $layout->add_script(' $("#property-' . $property->id . '").trigger("change"); '); } break; case 'webuser_groups': $webuser_groups = webuser_group::all_in_array(); // to get the array of groups first we remove the "g" character $property->value = str_replace('g', '', $property->value); $property->value = explode(',', $property->value); $field[] = '<div class="navigate-form-row" nv_property="' . $property->id . '">'; $field[] = '<label>' . $property_name . '</label>'; $field[] = $naviforms->multiselect('property-' . $property->id, array_keys($webuser_groups), array_values($webuser_groups), $property->value); if (!empty($property->helper)) { $helper_text = $property->helper; if (!empty($object)) { $helper_text = $object->t($helper_text); } $field[] = '<div class="subcomment">' . $helper_text . '</div>'; } $field[] = '</div>'; break; case 'product': // TO DO (when navigate has products!) break; default: } return implode("\n", $field); }
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 nvweb_properties_render($property, $vars) { global $website; global $current; global $DB; global $session; global $theme; global $structure; $out = ''; setlocale(LC_ALL, $website->languages[$session['lang']]['system_locale']); // if this property is null (no value assigned (null), (empty) is a value!) // get the default value if (!isset($property->value)) { $property->value = $property->dvalue; } // check multilanguage properties, where the value can be saved in a language but may be (null) in another language if (in_array($property->type, array("text", "textarea", "rich_textarea", "link")) || $property->multilanguage == 'true') { // cast variable as array if (is_object($property->value)) { $property->value = (array) $property->value; } if (!isset($property->value) || !isset($property->value[$current['lang']])) { if (isset($property->dvalue->{$current['lang']})) { $property->value[$current['lang']] = $property->dvalue->{$current['lang']}; } else { if (!is_array($property->value)) { $property->value = array(); } $property->value[$current['lang']] = $property->dvalue; } } } switch ($property->type) { case 'value': $out = $property->value; break; case 'decimal': $out = $property->value; if (isset($vars['precision'])) { $out = number_format($property->value, $vars['precision']); } break; case 'boolean': $out = $property->value; break; case 'option': $options = mb_unserialize($property->options); $options = (array) $options; switch (@$vars['return']) { case 'value': $out = $property->value; break; default: $out = $theme->t($options[$property->value]); } break; case 'moption': $options = mb_unserialize($property->options); $selected = explode(",", $property->value); switch (@$vars['return']) { case 'value': case 'values': $out = $property->value; break; default: $buffer = array(); foreach ($selected as $seloption) { $buffer[] = '<span>' . $theme->t($options[$seloption]) . '</span>'; } $out .= implode(', ', $buffer); } break; case 'text': $out = htmlspecialchars($property->value[$current['lang']]); break; case 'textarea': $out = nl2br(htmlspecialchars($property->value[$current['lang']])); break; case 'rich_textarea': $out = $property->value[$current['lang']]; break; case 'source_code': if (@$property->multilanguage == 'true' || $property->multilanguage == '1') { $out = $property->value[$current['lang']]; } else { $out = $property->value; } break; case 'date': if (!empty($vars['format'])) { $out = Encoding::toUTF8(strftime($vars['format'], $property->value)); } else { $out = date($website->date_format, $property->value); } break; case 'datetime': if (!empty($vars['format'])) { $out = Encoding::toUTF8(strftime($vars['format'], $property->value)); } else { $out = date($website->date_format . ' H:i', $property->value); } break; case 'link': // split title and link $link = explode('##', $property->value[$current['lang']]); if (is_array($link)) { $target = @$link[2]; $title = @$link[1]; $link = $link[0]; if (empty($title)) { $title = $link; } } else { $title = $property->value[$current['lang']]; $link = $property->value[$current['lang']]; $target = '_self'; } if (strpos($link, '://') === false) { $link = $website->absolute_path() . $link; } if ($vars['link'] === 'false') { $out = $link; } else { if (isset($vars['return'])) { if ($vars['return'] == 'title') { $out = $title; } else { if ($vars['return'] == 'link' || $vars['return'] == 'url') { $out = $link; } else { if ($vars['return'] == 'target') { $out = $target; } } } } else { $out = '<a href="' . $link . '" target="' . $target . '">' . $title . '</a>'; } } break; case 'image': $add = ''; $extra = ''; if (@$property->multilanguage == 'true' || $property->multilanguage == '1') { $image_id = $property->value[$session['lang']]; } else { $image_id = $property->value; } if (isset($vars['width'])) { $add .= ' width="' . $vars['width'] . '" '; $extra .= '&width=' . $vars['width']; } if (isset($vars['height'])) { $add .= ' height="' . $vars['height'] . '" '; $extra .= '&height=' . $vars['height']; } if (isset($vars['border'])) { $extra .= '&border=' . $vars['border']; } if (isset($vars['quality'])) { $extra .= '&quality=' . $vars['quality']; } $img_url = NVWEB_OBJECT . '?type=image&id=' . $image_id . $extra; if (empty($image_id)) { $out = ''; } else { if ($vars['return'] == 'url') { $out = $img_url; } else { // retrieve additional info (title/alt), if available if (is_numeric($image_id)) { $f = new file(); $f->load($image_id); $ftitle = $f->title[$current['lang']]; $falt = $f->description[$current['lang']]; if (!empty($ftitle)) { $add .= ' title="' . $ftitle . '" '; } if (!empty($falt)) { $add .= ' alt="' . $falt . '" '; } } $out = '<img class="' . $vars['class'] . '" src="' . $img_url . '" ' . $add . ' />'; } } break; case 'file': if (!empty($property->value)) { $file = $DB->query_single('name', 'nv_files', ' id = ' . protect($property->value) . ' AND website = ' . $website->id); if ($vars['return'] == 'url' || $vars['return'] == 'url-download') { $out = NVWEB_OBJECT . '?type=file&id=' . $property->value . '&disposition=attachment'; } else { if ($vars['return'] == 'url-inline') { $out = NVWEB_OBJECT . '?type=file&id=' . $property->value . '&disposition=inline'; } else { $out = '<a href="' . NVWEB_OBJECT . '?type=file&id=' . $property->value . '&disposition=attachment">' . $file . '</a>'; } } } break; case 'comment': $out = $property->value; break; case 'coordinates': $coordinates = explode('#', $property->value); $out = implode(',', $coordinates); break; case 'rating': // half stars are always enabled (ratings fixed to 0..10) $out = $property->value; // we want nearest integer down if ($vars['option'] == 'floor') { $out = floor($out / 2); } break; case 'color': $out = $property->value; break; case 'video': // value may be a numeric file ID or a provider#id structure, f.e. youtube#3MteSlpxCpo // compatible providers: file,youtube,vimeo if (@$property->multilanguage == 'true' || $property->multilanguage == '1') { $video_id = $property->value[$session['lang']]; } else { $video_id = $property->value; } $provider = ''; $reference = ''; $add = ''; if (isset($vars['width'])) { $add .= ' width="' . $vars['width'] . '" '; } if (isset($vars['height'])) { $add .= ' height="' . $vars['height'] . '" '; } $url_add = '&type=image'; if (isset($vars['width'])) { $url_add .= '&width=' . $vars['width'] . ''; } if (isset($vars['height'])) { $url_add .= '&height=' . $vars['height'] . ''; } if (isset($vars['border'])) { $url_add .= '&border=' . $vars['border'] . ''; } if (strpos($video_id, '#') !== false) { list($provider, $reference) = explode("#", $video_id); } if ($provider == 'file') { $video_id = $reference; } $file = new file(); if (is_numeric($video_id)) { $file->load($video_id); $embed = file::embed('file', $file, $add); } else { if ($provider == 'youtube') { $embed = file::embed('youtube', $reference, $add); if (!empty($vars['part']) || $vars['part'] != 'embed') { $file->load_from_youtube($reference); } } else { if ($provider == 'vimeo') { $embed = file::embed('vimeo', $reference, $add); if (!empty($vars['part']) || $vars['part'] != 'embed') { $file->load_from_vimeo($reference); } } } } switch (@$vars['return']) { case 'title': $out = $file->title; break; case 'mime': $out = $file->mime; break; case 'author': if (is_numeric($file->uploaded_by)) { $out = $website->name; } else { $out = $file->uploaded_by; } break; case 'path': case 'url': $out = $file->extra['link']; break; case 'thumbnail_url': $out = file::file_url($file->extra['thumbnail_cache']) . $url_add; break; case 'thumbnail': $out = '<img src="' . file::file_url($file->extra['thumbnail_cache']) . $url_add . '" class="' . $vars['class'] . '" ' . $add . ' />'; break; case 'reference': $out = $reference; break; case 'provider': $out = $provider; break; case 'embed': default: $out = $embed; } break; case 'article': // TO DO break; case 'category': $return = @$vars['return']; switch ($return) { case 'title': case 'name': nvweb_menu_load_dictionary(); $out = $structure['dictionary'][$property->value]; break; case 'url': case 'link': $out = nvweb_source_url('structure', $property->value); break; default: $out = $property->value; } break; case 'categories': $return = @$vars['return']; $value = explode(",", $property->value); $position = intval(@vars['position']) + 0; switch ($return) { case 'title': case 'name': nvweb_menu_load_dictionary(); $out = $structure['dictionary'][$value[$position]]; break; case 'url': case 'link': $out = nvweb_source_url('structure', $value[$position]); break; default: $out = $property->value; } break; case 'country': $return = @$vars['return']; switch ($return) { case 'name': $countries = property::countries(); $out = $countries[$property->value]; break; case 'id': case 'code': default: $out = $property->value; break; } break; case 'elements': $out = $property->value; break; case 'element': case 'item': // deprecated $return = @$vars['return']; switch ($return) { case 'title': $item = new item(); $item->load($property->value); $out = $item->dictionary[$current['lang']]['title']; break; case 'url': case 'path': $out = nvweb_source_url('item', $property->value, $current['lang']); break; case 'section': $item = new item(); $item->load($property->value); $out = $item->dictionary[$current['lang']]['section-' . $vars['section']]; break; case 'property': $params = array(); foreach ($vars as $attr_name => $attr_value) { if (strpos($attr_name, 'element-property-') === 0) { $attr_name = str_replace('element-property-', '', $attr_name); $params[$attr_name] = $attr_value; } else { if ($attr_name == 'element-property') { $params['property'] = $attr_value; } } } // default parameters $params['mode'] = 'item'; $params['id'] = $property->value; $out = nvweb_properties($params); break; case 'id': default: $out = $property->value; break; } break; default: } return $out; }