ÿØÿà JFIF    ÿÛ „  ( %"1!%)+...383,7(-.+  -+++--++++---+-+-----+---------------+---+-++7-----ÿÀ  ß â" ÿÄ     ÿÄ H    !1AQaq"‘¡2B±ÁÑð#R“Ò Tbr‚²á3csƒ’ÂñDS¢³$CÿÄ   ÿÄ %  !1AQa"23‘ÿÚ   ? ôÿ ¨pŸªáÿ —åYõõ\?àÒü©ŠÄï¨pŸªáÿ —åYõõ\?àÓü©ŠÄá 0Ÿªáÿ Ÿå[úƒ ú®ði~TÁbqÐ8OÕpÿ ƒOò¤Oè`–RÂáœá™êi€ßÉ< FtŸI“öÌ8úDf´°å}“¾œ6  öFá°y¥jñÇh†ˆ¢ã/ÃÐ:ªcÈ "Y¡ðÑl>ÿ ”ÏËte:qž\oäŠe÷󲍷˜HT4&ÿ ÓÐü6ö®¿øþßèô Ÿ•7Ñi’•j|“ñì>b…þS?*Óôÿ ÓÐü*h¥£ír¶ü UãS炟[AÐaè[ûª•õ&õj?†Éö+EzP—WeÒírJFt ‘BŒ†Ï‡%#tE Øz ¥OÛ«!1›üä±Í™%ºÍãö]°î(–:@<‹ŒÊö×òÆt¦ãº+‡¦%ÌÁ²h´OƒJŒtMÜ>ÀÜÊw3Y´•牋4ǍýʏTì>œú=Íwhyë,¾Ôò×õ¿ßÊa»«þˆѪQ|%6ž™A õ%:øj<>É—ÿ Å_ˆCbõ¥š±ý¯Ýƒï…¶|RëócÍf溪“t.СøTÿ *Ä¿-{†çàczůŽ_–^XþŒ±miB[X±d 1,é”zEù»& î9gœf™9Ð'.;—™i}!ôšåîqêÛ٤ёý£½ÆA–àôe"A$˝Úsäÿ ÷Û #°xŸëí(l »ý3—¥5m! rt`†0~'j2(]S¦¦kv,ÚÇ l¦øJA£Šƒ J3E8ÙiŽ:cÉžúeZ°€¯\®kÖ(79«Ž:¯X”¾³Š&¡* ….‰Ž(ÜíŸ2¥ª‡×Hi²TF¤ò[¨íÈRëÉ䢍mgÑ.Ÿ<öäS0í„ǹÁU´f#Vß;Õ–…P@3ío<ä-±»Ž.L|kªÀê›fÂ6@»eu‚|ÓaÞÆŸ…¨ááå>åŠ?cKü6ùTÍÆ”†sĤÚ;H2RÚ†õ\Ö·Ÿn'¾ ñ#ºI¤Å´%çÁ­‚â7›‹qT3Iï¨ÖÚ5I7Ë!ÅOóŸ¶øÝñØôת¦$Tcö‘[«Ö³šÒ';Aþ ¸èíg A2Z"i¸vdÄ÷.iõ®§)¿]¤À†–‡É&ä{V¶iŽ”.Ó×Õÿ û?h¬Mt–íª[ÿ Ñÿ ÌV(í}=ibÔ¡›¥¢±b Lô¥‡piη_Z<‡z§èŒ)iÖwiÇ 2hÙ3·=’d÷8éŽ1¦¸c¤µ€7›7Ø ð\á)} ¹fËí›pAÃL%âc2 í§æQz¿;T8sæ°qø)QFMð‰XŒÂ±N¢aF¨…8¯!U  Z©RÊ ÖPVÄÀÍin™Ì-GˆªÅËŠ›•zË}º±ŽÍFò¹}Uw×#ä5B¤{î}Ð<ÙD é©¤&‡ïDbàÁôMÁ." ¤‡ú*õ'VŽ|¼´Úgllº¼klz[Æüï÷Aób‡Eÿ dÑ»Xx9ÃÜ£ÁT/`¼¸vI±Ýµ·Ë‚“G³þ*Ÿû´r|*}<¨îºœ @¦mÄ’M¹”.œ«Y–|6ÏU¤jç¥ÕÞqO ˜kDÆÁ¨5ÿ š;ÐЦ¦€GÙk \ –Þ=â¼=SͧµªS°ÚÍpÜãQűÀõ¬?ÃÁ1Ñ•õZà?hóœ€ L¦l{Y*K˜Ù›zc˜–ˆâ ø+¾ ­-Ök¥%ùEÜA'}ˆ><ÊIè“bpÍ/qÞâvoX€w,\úªò6Z[XdÒæ­@Ö—€$òJí#é>'°Ú ôª˜<)4ryÙ£|óAÅn5žêŸyÒäMÝ2{"}‰–¤l÷ûWX\l¾Á¸góÉOÔ /óñB¤f¸çñ[.P˜ZsÊË*ßT܈§QN¢’¡¨§V¼(Üù*eÕ“”5T¨‹Âê¥FŒã½Dü[8'Ò¥a…Ú¶k7a *•›¼'Ò·\8¨ª\@\õ¢¦íq+DÙrmÎ…_ªæ»ŠÓœ¡¯’Ré9MÅ×D™lælffc+ŒÑ,ý™ÿ ¯þǤ=Å’Á7µ÷ÚÛ/“Ü€ñýã¼àí¾ÕÑ+ƒ,uµMâÀÄbm:ÒÎPæ{˜Gz[ƒ¯«® KHà`ߨŠéí¯P8Aq.C‰ à€kòpj´kN¶qô€…Õ,ÜNŠª-­{Zö’æû44‰sŽè‰îVíRœÕm" 6?³D9¡ÇTíÅꋇ`4«¸ÝÁô ï’ýorqКÇZ«x4Žâéþuïf¹µö[P ,Q£éaX±`PÉÍZ ¸äYúg üAx ’6Lê‚xÝÓ*äQ  Ï’¨hÍ =²,6ï#rÃ<¯–£»ƒ‹,–ê•€ aÛsñ'%Æ"®ÛüìBᝠHÚ3ß°©$“XnœÖ’î2ËTeûìxîß ¦å¿çÉ ðK§þ{‘t‚Ϋ¬jéîZ[ ”š7L¥4VÚCE×]m¤Øy”ä4-dz£œ§¸x.*ãÊÊ b÷•h:©‡¦s`BTÁRû¾g⻩‹jø sF¢àJøFl‘È•Xᓁà~*j¯ +(ÚÕ6-£¯÷GŠØy‚<Ç’.F‹Hœw(+)ÜÜâÈzÄäT§FߘãÏ;DmVœ3Àu@mÚüXÝü•3B¨òÌÁÛ<·ÃÜ z,Ì@õÅ·d2]ü8s÷IôÞ¯^Ç9¢u„~ëAŸï4«M? K]­ÅàPl@s_ p:°¬ZR”´›JC[CS.h‹ƒïËœ«Æ]–÷ó‚wR×k7X‰k›‘´ù¦=¡«‰¨¨Â')—71ó’c‡Ðúµ `é.{§p¹ój\Ž{1h{o±Ý=áUÊïGÖŒõ–-BÄm+AZX¶¡ ïHðæ¥JmÙ;…䡟ˆ¦ ° äšiÉg«$üMk5¤L“’çÊvïâï ,=f“"íἊ5ô¬x6{ɏžID0e¸vçmi'︧ºð9$ò¹÷*£’9ÿ ²TÔ…×>JV¥}Œ}$p[bÔ®*[jzS*8 ”·T›Í–ñUîƒwo$áè=LT™ç—~ô·¤ÈÚ$榍q‰„+´kFm)ž‹©i–ËqÞŠ‰à¶ü( ‚•§ •°ò·‡#5ª•µÊ﯅¡X¨šÁ*F#TXJÊ ušJVÍ&=iÄs1‚3•'fý§5Ñ<=[íÞ­ PÚ;ѱÌ_~Ä££8rÞ ²w;’hDT°>ÈG¬8Á²ÚzŽ®ò®qZcqJêäÞ-ö[ܘbň±çb“ж31²n×iƒðÕ;1¶þÉ ªX‰,ßqÏ$>•î íZ¥Z 1{ç൵+ƒÕµ¥°T$§K]á»Ûï*·¤tMI’ÂZbŽÕiÒ˜}bÓ0£ª5›¨ [5Ž^ÝœWøÂÝh° ¢OWun£¤5 a2Z.G2³YL]jåtì”ä ÁÓ‘%"©<Ôúʰsº UZvä‡ÄiÆÒM .÷V·™ø#kèýiíÌ–ª)µT[)BˆõÑ xB¾B€ÖT¨.¥~ð@VĶr#¸ü*åZNDŽH;âi ],©£öØpù(šºãö¼T.uCê•4@ÿ GÕÛ)Cx›®0ø#:ÏðFÒbR\(€€Ä®fã4Þ‰Fä¯HXƒÅ,†öEÑÔÜ]Öv²?tLÃvBY£ú6Êu5ÅAQ³1‘’¬x–HŒÐ‡ ^ ¸KwJôÖŽ5×CÚ¨vÜ«/B0$×k°=ðbÇ(Ï)w±A†Á† 11Í=èQšµ626ŒÜ/`G«µ<}—-Ö7KEHÈÉðóȤmݱû±·ø«Snmá=“䫚mݱŸ¡¶~ó·“äUóJæúòB|E LêŽy´jDÔ$G¢þÐñ7óR8ýÒ…Ç› WVe#·Ÿ p·Fx~•ݤF÷0Èÿ K¯æS<6’¡WШ; ´ÿ ¥Êø\Òuî†åÝ–VNœkÒ7oòX¨Á­Ø÷FÎÑä±g÷ÿ M~Çî=p,X´ ÝÌÚÅ‹’ÃjÖ.ØöÏñ qïQ¤ÓZE†° =6·]܈ s¸>v•Ž^Ý\wq9r‰Î\¸¡kURÒ$­*‹Nq?Þª*!sŠÆ:TU_u±T+øX¡ ®¹¡,ÄâÃBTsÜ$Ø›4m椴zÜK]’’›Pƒ @€#â˜`é¹=I‡fiV•Ôî“nRm+µFPOhÍ0B£ €+¬5c v•:P'ÒyÎ ‰V~‚Ó†ÖuókDoh$å\*ö%Ю=£«…aȼ½÷Û.-½VŒŠ¼'lyî±1¬3ó#ÞE¿ÔS¤gV£m›=§\û"—WU¤ÚǼÿ ÂnÁGŒÃ ‚õN D³õNÚíŒÕ;HôyÄÈ©P¹Ä{:?R‘Ô¨âF÷ø£bÅó® JS|‚R÷ivýáâ€Æé¡è³´IئÑT!§˜•ت‚¬â@q€wnïCWÄ@JU€ê¯m6]Ï:£âx'+ÒðXvÓ¦Úm=–´7œ $ì“B£~p%ÕŸUþ« N@¼üï~w˜ñø5®—'Ôe»¤5ã//€ž~‰Tþ›Å7•#¤× Íö pÄ$ùeåì*«ÓŠEØWEÈsßg ¦ûvžSsLpºÊW–âµEWöˬH; ™!CYõZ ÃÄf æ#1W. \uWâ\,\Çf j’<qTbên›Î[vxx£ë 'ö¨1›˜ÀM¼Pÿ H)ƒêêŒA7s,|F“ 꺸k³9Ìö*ç®;Ö!Ö$Eiž•¹ÒÚ†ýóéÝû¾ÕS®ó$’NÝäŸz¤5r¦ãÄÃD÷Üø!°ø‡Ô&@m™Ì^Ãä­d q5Lnÿ N;.6½·N|#ä"1Nƒx“ã<3('&ñßt  ~ªu”1Tb㫨9ê–›–bìd$ߣ=#ÕãÒmU¯eí$EFù5ýYô櫨æì™Ç—±ssM]·á¿0ÕåJRÓªîiƒ+O58ÖñªŠÒx" \µâá¨i’¤i —Ö ” M+M¤ë9‚‰A¦°Qõ¾ßøK~¼Ã‘g…Ö´~÷Ï[3GUœÒ½#…kàÔ®Ò”‰³·dWV‰IP‰Ú8u¹”E ÖqLj¾êÕCBš{A^Âß;–¨`¯¬ìö ˼ ×tìø.tƐm*n¨y4o&Àx¥n¦×î‡aupáÛj8¿m›è¶ã!o½;ß0y^ý×^EÑ¿ÒjzŒ­)vÚÑnÄL …^ªô× ‡—‚3k Îý­hï]içå–îÏ*÷ñþ»Ô CÒjøjÍznˆ´ ¹#b'Fô‹ ‰v¥'’à'T´ƒHýÍ%M‰ ƒ&ÆÇŒï1 ‘ –Þ ‰i¬s žR-Ÿ kЬá¬7:þ 0ŒÅÒÕ/aÙ¬ÃÝ#Úøœ ©aiVc‰. ¹¦ãµ” ›Yg¦›ÆÎýº°f³7ƒhá·¸­}&D9¡ÂsÉÙÞèŠõØàC™¨ñbFC|´Ü(ŸƒÚÒ-%»'a Ì¿)ËÇn¿úÿ ÞŽX…4ÊÅH^ôΑí@ù¹Eh¶“L8Çjù ¼ÎåVªóR©Ï5uà V4lZß®=€xÖŸ–ÑÈ ÷”¨°¾__yM1tÉ?uÆþIkÄgæ@þ[¢†°XÃJ£j·:nkÅ¢u ‘}âGzö­/IµèЬ¼48q¦F°ŽR¼=ûì{´¯RýicS ÕÛ íNtÍÙï£,w4rêì®»~x(©Uñ§#Ñ&œÕ¤>ÎåÍÓ9’Ö{9eV­[Öjâ²ãu]˜å2›qÑšÕJç0€sÄ|Êëè0튔bÁ>“{×_F`Ø©ºê:µä,v¤ðfc1±"«ÔÍän1#=· Âøv~H½ÐßA¾¿Ü€Óš]Õ; I¾÷ç‚Qi†î¹9ywÔKG˜áñ zQY—§ÃÕZ07§X‚ Áh;ÁM)iÌCH-¯T‘ë|A0{Ò½LÚ–TâÖkÜ’dÀ“rmm»”جPF³ÖcbE§T€ÒxKºû’Ó®7±²(\4ŽÃ¸Uu@j™yĵ;³µ!Á¢b.W¤=mõ´êµK k ¸K^ÜÛ#p*Ü14qkZç5ïë †°5Ï%ÍÛ<Õ¤×Ô¥ê†C Õ´¼ú$ƒÖ“”]Ù¬qÞÚ[4©ý!ûÏ—Áb쳐XµA¬â~`›Çr¸8ìùÝ䫦<>ä÷«?xs´ÇÑ /á;¹øüÊÈÙà{"@Žïzâ¬[âß‚ U_<ÇŸ½4èN˜ú61®qŠu ¦þF£»äJ_ˆÙÎ~ ÞAã–݄ϗrŠD;xTž‘ô`É«…suãO`?³à™ô Lý#Íc5öoæØ‚y´´÷«ZR§<&JÇ+éâô´€i!Àˆ0æAoàðLèÖ-2ŸõW.’t^–(KÁmHµV@xÜÇy®Ñø­â^:Ú3w· 7½¹°ñ¸â¹®:',«Mœ—n­Á+Ãbš LÈ‘ÄnRÓÅœ%¦²‰¨ùQ:¤f‚ "PÕtô¸…cæl…&˜Ú˜Ôkv‹ž+vŠ,=¢v­6—Xy*¥t£«<™:“aîϲ=¦6rO]XI¿Œ÷¤zÚ­›¶ 6÷”w\d ü~v®ˆÌk«^m<ÿ ¢‰Õ\)ùºŽ;… lîÙÅEŠ®cѾ@vnMÏ,¼“ñ•ŽBxðÃzãÇç%3ˆ"}Ù•Åî> BÉú;Ò]V+P˜F_´ßé> Øše|ï‡ÄOmFæÇ ãqÞ$/xÐx­z`ï9"œÜij‚!7.\Td…9M‡•iŽ‹¾‘50ÞŽn¥ß4ÉôO ¹*í^QêËÜÇÌ8=ާs‰'ÂëÙ«á%Pú[O †ÅP¯Vsް.‰,kc¶ ¬A9n˜XÎ-ÞšN["¹QÕ‰ƒMýÁߺXJæÍaLj¾×Ãmã¾ãÚ uñÒþåQô¦¥ /ÄUx:‚ÍÜ’ Đ©ØÝ3V¨‰ÕnÐ6ó*óúK­«…c ¯U òhsý­jóÔj#,ímŒRµ«lbïUTŒÑ8†Ä0œÏr`ð¡¬É Ї ë"À² ™ 6¥ f¶ ¢ÚoܱԷ-<Àî)†a¶ž'Ú»¨TXqØæ¶÷YÄHy˜9ÈIW­YÀuMFë ºÏ’AqÌ4·/Ú †ô'i$øä­=Ä Ý|öK×40è|È6p‘0§)o¥ctî§H+CA-“ xØ|ÐXАç l8íºð3Ø:³¤¬KX¯UÿÙ 2 ), $override = array(), $inherit = array() ) { // Check & and Trigger fallback if needed $class = 'Helper_Form'; $fallback = false; $method = $caller['function']; if ( $caller['component'] == 'com_cck' ) { $class = 'CommonHelper_Form'; $path = JPATH_ADMINISTRATOR.'/components/'.$caller['component'].'/helpers/common/form.php'; } else { $path = JPATH_ADMINISTRATOR.'/components/'.$caller['component'].'/helpers/helper_form.php'; } if ( is_file( $path ) ) { require_once $path; } else { $fallback = true; } if ( !$fallback ) { if ( !method_exists( $class, $method ) ) { $fallback = true; } } if ( $fallback ) { return JCckDev::getForm( $caller['name'], $value, $config, $override, $inherit ); } // Continue if ( !( isset( $override['storage_field'] ) && $override['storage_field'] ) ) { $override['storage_field'] = $caller['name']; } $field = JCckDevField::get( 'core_dev_text', $value, $config, $inherit, $override, 'initialize' ); if ( ! $field ) { return ''; } $name = $field->storage_field; if ( isset( $config['inherit'] ) ) { if ( strpos( $name, '[' ) !== false ) { $parts = explode( '[', $name ); $inherit['name'] = $config['inherit'].'['.$parts[0].']['.$parts[1]; } else { $inherit['name'] = $config['inherit'].'['.$name.']'; } } else { if ( ! isset( $inherit['name'] ) ) { $inherit['name'] = $name; } } if ( ! isset( $inherit['id'] ) ) { $inherit['id'] = str_replace( array('[', ']'), array('_', ''), $name ); } // -- JCckPluginField::g_onCCK_FieldPrepareForm( $field, $config ); // Init if ( count( $inherit ) ) { $id = ( isset( $inherit['id'] ) && $inherit['id'] != '' ) ? $inherit['id'] : $field->name; $name = ( isset( $inherit['name'] ) && $inherit['name'] != '' ) ? $inherit['name'] : $field->name; } else { $id = $field->name; $name = $field->name; } // Validate $validate = ''; if ( $config['doValidation'] > 1 ) { plgCCK_Field_ValidationRequired::onCCK_Field_ValidationPrepareForm( $field, $id, $config ); $validate = ( count( $field->validate ) ) ? ' validate['.implode( ',', $field->validate ).']' : ''; } // Prepare if ( trim( $field->selectlabel ) ) { if ( $config['doTranslation'] ) { $field->selectlabel = JText::_( 'COM_CCK_' . str_replace( ' ', '_', trim( $field->selectlabel ) ) ); } } // Set $field->form = $class::$method( $field, $value, $name, $id, $config ); $field->value = $value; if ( $field->script ) { JCckPluginField::g_addScriptDeclaration( $field->script ); } if ( $field->required ) { if ( trim( $field->label ) == '' ) { $field->required = ''; } } // -- return $field; } // addField public static function addField( $name, &$config = array( 'doValidation' => 2 ) ) { $config['fields'][] = $name; } // addScript public static function addScript( $url, $type = "text/javascript", $defer = false, $async = false ) { $app = JFactory::getApplication(); if ( !isset( $app->cck_document ) ) { $app->cck_document = array(); } // Make sure to have only one inclusion of special external scripts if ( strpos( $url, 'http' ) !== false ) { $url = self::getMergedScript( $url ); if ( $url == '' ) { return; } } $app->cck_document['scripts'][$url]['mime'] = $type; $app->cck_document['scripts'][$url]['defer'] = $defer; $app->cck_document['scripts'][$url]['async'] = $async; } // addStyleSheet public static function addStyleSheet( $url, $type = 'text/css', $media = null, $attribs = array() ) { $app = JFactory::getApplication(); if ( !isset( $app->cck_document ) ) { $app->cck_document = array(); } $app->cck_document['styleSheets'][$url]['mime'] = $type; if ( is_string( $media ) ) { $app->cck_document['styleSheets'][$url]['media'] = $media; } if ( count( $attribs) ) { $app->cck_document['styleSheets'][$url]['attribs'] = $attribs; } } // addValidation public static function addValidation( $rules, $options, $id = '', &$config = array() ) { $app = JFactory::getApplication(); $doc = JFactory::getDocument(); if ( !$id ) { $id = 'seblod_form'; } if ( empty( $rules ) ) { $rules = ''; } $root = JUri::root( true ); $rules = str_replace( array( "\r\n", "\r", "\n", "\t", ' ', ' ', ' ' ), '', $rules ); if ( is_object( $options ) ) { $bgcolor = $options->get( 'validation_background_color', JCck::getConfig_Param( 'validation_background_color', '' ) ); $color = $options->get( 'validation_color', JCck::getConfig_Param( 'validation_color', '' ) ); $position = $options->get( 'validation_position', JCck::getConfig_Param( 'validation_position', 'topRight' ) ); $scroll = ( $options->get( 'validation_scroll', JCck::getConfig_Param( 'validation_scroll', 1 ) ) ) ? 'scroll:true' : 'scroll:false'; if ( $color != '' ) { if ( $position == 'inline' && $id != '_' ) { $doc->addStyleDeclaration( '#'.$id.' .formError .formErrorContent{color: '.$color.'}' ); } else { $doc->addStyleDeclaration( '.formError .formErrorContent{color: '.$color.'}' ); } } if ( $position != 'inline' && $bgcolor != '' ) { $css = '.formError .formErrorContent{background: '.$bgcolor.'}'; if ( $position == 'topLeft' || $position == 'topRight' ) { $css .= '.formError .formErrorArrow{border-color: '.$bgcolor.' transparent transparent transparent;}'; } else { $css .= '.formError .formErrorArrow.formErrorArrowBottom{border-color: transparent transparent '.$bgcolor.' transparent;}'; } $doc->addStyleDeclaration( $css ); } $more = ''; if ( $options->def( 'prettySelect' ) ) { $more .= ',prettySelect:'.( $options->get( 'prettySelect' ) ? 'true' : 'false' ); } if ( $options->def( 'useSuffix' ) ) { $more .= ',useSuffix:"'.$options->get( 'useSuffix' ).'"'; } $options = '{'.$scroll.',promptPosition:"'.$position.'"'.$more.'}'; } else { $options = '{}'; } $js = ( $id == '_' ) ? '' : '$("#'.$id.'").validationEngine('.$options.');'; $js = 'jQuery(document).ready(function($){ $.validationEngineLanguage.newLang({'.$rules.'});'.$js.' });'; if ( $app->input->get( 'tmpl' ) == 'raw' ) { echo ''; echo ''; echo ''; } else { $doc->addStyleSheet( $root.'/media/cck/css/cck.validation-3.9.0.css' ); $doc->addScript( $root.'/media/cck/js/cck.validation-3.16.0.min.js' ); $doc->addScriptDeclaration( $js ); } } // forceStorage public static function forceStorage( $value = 'none', $allowed = '' ) { $doc = JFactory::getDocument(); $js = ''; if ( $value == 'none' ) { if ( $allowed == '' ) { $allowed = false; } } else { if ( $allowed == '' ) { $allowed = true; } } if ( !$allowed ) { $js = '$("#storage").val( "'.$value.'" ).prop("disabled", true); $("#force_storage").val( "1" );'; } else { $js = 'if ( !$("#myid").val() ) { $("#storage").val( "'.$value.'" ); $("#force_storage").val( "1" ); }'; } echo ''; } public static function getMergedScript( $url ) { $app = JFactory::getApplication(); $base = ''; $index = ''; $pos = strpos( $url, '?' ); $base = substr( $url, 0, $pos ); $index = str_replace( array( 'http://', 'https://' ), '', $base ); if ( isset( self::$_urls[$index] ) ) { $cur = self::$_urls[$index]; $cur_vars = JCckDevHelper::getUrlVars( $cur )->toArray(); $new_vars = JCckDevHelper::getUrlVars( $url )->toArray(); $vars = array(); if ( count( $cur_vars ) ) { foreach ( $cur_vars as $k=>$v ) { if ( isset( $new_vars[$k] ) ) { $values = array(); if ( $v != '' ) { $values[] = $v; } $v2 = $new_vars[$k]; if ( $v2 != '' && !in_array( $v2, $values ) ) { $values[] = $v2; } $vars[] = $k.'='.implode( ',', $values ); unset( $new_vars[$k] ); } else { $vars[] = $k.'='.$v; } } } if ( count( $new_vars ) ) { foreach ( $new_vars as $k=>$v ) { $vars[] = $k.'='.$v; } } if ( count( $vars ) ) { $url = $base.'?'.implode( '&', $vars ); } else { $url = $base; } unset( $app->cck_document['scripts'][$cur] ); } self::$_urls[$index] = $url; return $url; } // importPlugin public static function importPlugin( $type, $plugins ) { if ( count( $plugins ) > 0 ) { foreach ( $plugins as $plugin ) { JPluginHelper::importPlugin( $type, $plugin ); /* TODO#SEBLOD: improve */ } } else { JPluginHelper::importPlugin( $type ); } } // init public static function init( $plugins = array(), $core = true, $more = array() ) { self::importPlugin( 'cck_field', $plugins ); $config = array( 'asset'=>'', 'asset_id'=>0, 'client'=>'', 'doTranslation'=>1, 'doValidation'=>0, 'fields'=>array(), 'item'=>'', 'validation'=>array() ); if ( $core === true ) { JFactory::getLanguage()->load( 'plg_cck_field_validation_required', JPATH_ADMINISTRATOR, null, false, true ); $config['doValidation'] = 2; require_once JPATH_PLUGINS.'/cck_field_validation/required/required.php'; } $config['id'] = 0; $config['pk'] = 0; if ( count( $more ) ) { foreach ( $more as $k => $v ) { $config[$k] = $v; } } return $config; } // initScript public static function initScript( $type, &$elem, $options = array() ) { $app = JFactory::getApplication(); $doc = JFactory::getDocument(); $css = ''; $js = ''; $js2 = ''; $js3 = ''; if ( $type == 'field' ) { if ( $app->input->get( 'option' ) == 'com_cck' && $app->input->get( 'view' ) == 'form' ) { unset( $options['doTranslation'] ); unset( $options['hasOptions'] ); } if ( isset( $options['doTranslation'] ) ) { if ( is_array( $options['doTranslation'] ) ) { $flag = ' '; $function = 'after'; $selector = $options['doTranslation']['id']; if ( is_null( $elem->bool8 ) ) { $elem->bool8 = $options['doTranslation']['value']; } } else { $flag = ''; $function = 'before'; $selector = 'sortable_core_options'; if ( is_null( $elem->bool8 ) ) { $elem->bool8 = $options['doTranslation']; } } if ( $elem->bool8 == 1 ) { $c0 = ''; $c1 = 'checked="checked"'; $class = 'publish icon-flag'; } else { $c0 = 'checked="checked"'; $c1 = ''; $class = 'unpublish icon-flag'; } $flag .= '' . '' . ''; $js2 .= '$("#'.$selector.'").'.$function.'("'.addslashes( $flag ).'");' . '$("a#bool8 .hasTooltip").tooltip({});' . '$("#bool8").click(function(){ if ( $("#bool80").prop("checked") == true ) {' . '$("#bool8 span").removeClass("unpublish").addClass("publish"); $("#bool81").prop("checked", true); $("#bool80").prop("checked", false); } else {' . '$("#bool8 span").removeClass("publish").addClass("unpublish"); $("#bool81").prop("checked", false); $("#bool80").prop("checked", true); } });'; } if ( isset( $options['hasOptions'] ) && $options['hasOptions'] === true ) { $html = ''; if ( isset( $options['customAttr'] ) ) { $label = isset( $options['customAttrLabel'] ) ? $options['customAttrLabel'] : JText::_( 'COM_CCK_CUSTOM_ATTRIBUTES' ); $html .= '' . ''; $attribs = ''; if ( is_array( $options['customAttr'] ) ) { $keys = array(); $js3 = 'var disp = ($("#toggle_attr").prop("checked") !== false) ? \'style="display: block"\' : "";'; $n = 0; $nb = count( $options['customAttr'] ); foreach ( $options['customAttr'] as $i=>$customAttr ) { $attribs .= '
' . '' . '
'; $keys[] = $customAttr; $js3 .= '$("#sortable_core_options>div:last input:text[name=\'string[options][]\']").parent().append(\'
\');'; } $keys = implode( ',', $keys ); } elseif ( $options['customAttr'] ) { $js3 = 'var disp = ($("#toggle_attr").prop("checked") !== false) ? \'style="display: block"\' : "";'; $n = (int)$options['customAttr']; $attribs = '
'; for ( $i = 0; $i < $n; $i++ ) { $css = ( ( $i + 2 ) % 3 == 0 ) ? ' middle' : ''; $attribs .= ''; } $attribs .= '
'; $location = ( $elem->location ) ? explode( '||', $elem->location ) : array( 0=>'', 1=>'', 2=>'' ); $html .= '
'; for ( $i = 0; $i < $n; $i++ ) { $css = ( ( $i + 2 ) % 3 == 0 ) ? ' middle' : ''; $html .= ''; } $html .= '
'; $js3 .= 'var content = \'
'; for ( $i = 0; $i < $n; $i++ ) { if ( $i == 0 ) { $js3 .= ''; } else { $css = ( ( $i + 2 ) % 3 == 0 ) ? ' middle' : ''; $js3 .= ''; } } $js3 .= '
\';'; $keys = ''; } if ( !isset( $options['options'] ) ) { $options['options'] = JCckDev::fromJSON( $elem->options2 ); } if ( isset( $options['options']['options'] ) ) { $opts = json_encode( $options['options']['options'] ); } else { $opts = '{}'; } $js = ' var keys = "'.$keys.'"; var len = 0; var len2 = "'.$n.'"; if (keys!="") {keys = keys.split(","); len = keys.length;} var val = []; for(i=0;i0) { $("div#sortable_core_options input[name=\'string[options][]\']").each(function(k, v) { if (len) { if (values[k]) {for(i=0; iinit['fieldPicker'] = JHtml::_( 'select.genericlist', $fields, 'fields_list', 'class="inputbox select" style="max-width:175px;"', 'value', 'text', '', 'fields_list' ); $isNew = ( !$elem->options ) ? 1 : 0; $target = ( is_string( $options['fieldPicker'] ) ) ? $options['fieldPicker'] : 'string[options]'; $js2 .= 'var cur = 9999; var isNew = '.$isNew.'; $("ul.adminformlist").on("change", "select#fields_list", function() { var val = $(this).val(); if (val) { $("#sortable_core_options>div:last .button-add-core_options").click(); $("#sortable_core_options>div:last input:text[name=\''.$target.'[]\']").val(val); '.$js3.' } if (isNew) { var attr = "input:text[name=\'json\[options2\]\[options\]\[0\]\[direction\]\']"; if ($(attr).length) { $(attr).remove(); } } isNew = 0; '; if ( !$elem->options ) { $js2 .= 'if ($("#sortable_core_options").children().length == 2 && $("#collection-group-wrap-core_options__0").length) { $("#collection-group-wrap-core_options__0").parent().remove(); }'; } $js2 .= '});'; if ( !$elem->options ) { // $js2 .= '$("#sortable_core_options>div:last .button-add-core_options").click();'; } $css .= '.button-add{display:none;}'; if ( !$elem->options ) { $css .= '#collection-group-wrap-core_options__0{display:none;}'; } $js3 = ''; } else { $js3 = '(function($){ var cur = 9999; $.fn.JCckFieldxAddAfter = function() {'.$js3.' $(this).next().find(".collection-group-form").append(content);} })(jQuery);'; } if ( $html ) { $html = '
'.$html.'
'; $js = 'if ($("#sortable_core_options")) { '.$js.' $("#sortable_core_options").parent().append("'.addslashes( $html ).'"); }'; } } if ( $css ) { echo ''; } if ( $js || $js2 ) { echo ''; } return; } if ( $type == 'processing' ) { $offset = 0; $path = $elem->scriptfile; $pos = strpos( $path, '.' ); if ( $path[0] == '/' ) { $offset = 1; } $path = substr( $path, $offset, $pos ); $path = str_replace( '/', '_', $path ); JFactory::getLanguage()->load( 'files_pro_cck_'.$path.'.sys', JPATH_SITE, null, false, true ); } else { if ( $elem->name ) { JFactory::getLanguage()->load( 'plg_cck_field_'.$type.'_'.$elem->name, JPATH_ADMINISTRATOR, null, false, true ); } } if ( $type == 'validation' ) { return; } $js2 = ''; $js3 = ''; if ( $type == 'typo' ) { $js2 = 'if($("#typo_label").length) { if (parent.jQuery("#"+eid+"_typo_label").val()!="") { $("#typo_label").val(parent.jQuery("#"+eid+"_typo_label").val()); }}'; $js3 = 'if($("#typo_label").length) { parent.jQuery("#"+eid+"_typo_label").val($("#typo_label").val()); } excluded[0] = "typo_label"'; } if ( !isset( $options['js']['load'] ) ) { $options['js']['load'] = 'var eid = "'.$elem->id.'"; var elem = "'.$elem->id.'_'.$type.'_options"; if(!parent.jQuery("#"+elem).length) { elem = "'.$elem->id.'"; } var encoded = parent.jQuery("#"+elem).val(); var data = ( encoded !== undefined && encoded != "" ) ? $.evalJSON(encoded) : ""; if (data) { var j = 0; $.each(data, function(k, v) { if(!$("#"+k).length) { if (typeof v === "object") { var p = "'.$type.'"; var $clone = $("#'.$type.'_id").parent().clone().addClass("new").appendTo(".target"); $("li.new > *").attr("id",p+j).myVal(k).parent().removeClass("new"); var $clone = $("#'.$type.'_options_id").parent().clone().addClass("new").appendTo(".target"); $("li.new > *").attr("id",p+j+"_options").myVal($.toJSON(v)).parent().removeClass("new"); } else { var temp = v.split("||"); var len = temp.length; for(i = 0; i < len; i++) { if ( i+1 < len ) { $("#sortable_core_dev_texts>div:last .button-add-core_dev_texts").click(); } $("[name=\""+k+"\[\]\"]:eq("+i+")").myVal(temp[i]); } } } else { $("#"+k).myVal( v ); } }); } '.$js2; } if ( !isset( $options['js']['reset'] ) ) { $options['js']['reset'] = 'var elem = "'.$elem->id.'_'.$type.'_options"; if(!parent.jQuery("#"+elem).length) { elem = "'.$elem->id.'"; } parent.jQuery("#"+elem).val(""); this.close();'; } if ( !isset( $options['js']['submit'] ) ) { $options['js']['submit'] = 'if ( $("#adminForm").validationEngine("validate") === true ) { var eid = "'.$elem->id.'"; var elem = "'.$elem->id.'_'.$type.'_options"; if(!parent.jQuery("#"+elem).length) { elem = "'.$elem->id.'"; } var data = {}; var excluded = []; '.$js3.' if (typeof cck_dev != "undefined") { $.each(cck_dev, function(k, v) { if(jQuery.inArray(v, excluded) == -1) { if(!$("#"+v).length) { var temp = []; $("[name=\""+v+"\[\]\"]").each(function(i) { temp[i] = $(this).val(); }); data[v] = temp.join("||"); } else { data[v] = $("#"+v).myVal(); } } }); } else { $(".'.$type.'s").each(function(i) { var v = $(this).myVal(); if (v != "") { var enc = $(".'.$type.'s_options:eq("+i+")").myVal(); if (enc == "") { enc = "{}"; } var d = $.evalJSON(enc); data[v] = d; } }); } var encoded = $.toJSON(data); parent.jQuery("#"+elem).val(encoded); this.close(); return; }'; } $js = ' (function ($){ JCck.Dev = { reset: function() {'.$options['js']['reset'].'}, submit: function() {'.$options['js']['submit'].'} } $(document).ready(function(){'.$options['js']['load'].'}); })(jQuery); '; $doc->addScriptDeclaration( $js ); } // preload public static function preload( $fieldnames ) { $preload = array(); $fields_in = implode( '","', $fieldnames ); $fields = JCckDatabase::loadObjectList( 'SELECT a.* FROM #__cck_core_fields AS a WHERE a.name IN ("'.$fields_in.'")', 'name' ); //# foreach ( $fieldnames as $f ) { $preload[$f] = ( isset( $fields[$f] ) ) ? $fields[$f] : $f; } return $preload; } // validate public static function validate( $config, $id = 'adminForm' ) { $config['validation'] = count( $config['validation'] ) ? implode( ',', $config['validation'] ) : '"null":{}'; $config['validation_options'] = new JRegistry( array( 'validation_background_color'=>'#242424', 'validation_color'=>'#ffffff', 'validation_position'=>'topRight', 'validation_scroll'=>0 ) ); self::addValidation( $config['validation'], $config['validation_options'], $id ); if ( isset( $config['fields'] ) && count( $config['fields'] ) ) { JFactory::getDocument()->addScriptDeclaration( 'var cck_dev = '.json_encode( $config['fields'] ).';' ); } } // -------- -------- -------- -------- -------- -------- -------- -------- // Fields & Markup // get public static function get( $field, $value, &$config = array( 'doValidation' => 2 ), $override = array(), $inherit = array() ) { return JCckDevField::get( $field, $value, $config, $inherit, $override ); } // getEmpty public static function getEmpty( $properties ) { require_once JPATH_ADMINISTRATOR.'/components/com_cck/tables/field.php'; $field = JTable::getInstance( 'Field', 'CCK_Table' ); if ( is_array( $properties ) ) { foreach ( $properties as $k => $v ) { $field->$k = $v; } } return $field; } // getForm public static function getForm( $field, $value, &$config = array( 'doValidation' => 2 ), $override = array(), $inherit = array() ) { $field = JCckDevField::get( $field, $value, $config, $inherit, $override ); if ( ! $field ) { return ''; } $config['fields'][] = $field->storage_field; $html = ( isset( $field->form ) ) ? $field->form : ''; if ( isset( $inherit['after'] ) ) { $html .= $inherit['after']; } return $html; } // getFormFromHelper public static function getFormFromHelper( $caller, $value, &$config = array( 'doValidation' => 2 ), $override = array(), $inherit = array() ) { $field = self::_getField( $caller, $value, $config, $override, $inherit ); $config['fields'][] = $field->storage_field; $html = ( isset( $field->form ) ) ? $field->form : ''; if ( isset( $inherit['after'] ) ) { $html .= $inherit['after']; } return $html; } // renderForm public static function renderForm( $field, $value, &$config = array( 'doValidation' => 2 ), $override = array(), $inherit = array(), $class = '' ) { $field = JCckDevField::get( $field, $value, $config, $inherit, $override ); if ( ! $field ) { return ''; } $config['fields'][] = $field->storage_field; $tag = ( $field->required ) ? ' *' : ''; $class = ( $class ) ? ' class="'.$class.'"' : ''; $html = ( isset( $field->form ) ) ? $field->form : ''; if ( isset( $inherit['after'] ) ) { $html .= $inherit['after']; } $label = ''; if ( $field->label ) { $label = ''; } $html = ''.$label.$html.''; return $html; } // renderFormFromHelper public static function renderFormFromHelper( $caller, $value, &$config = array( 'doValidation' => 2 ), $override = array(), $inherit = array(), $class = '' ) { $field = self::_getField( $caller, $value, $config, $override, $inherit ); $class = ( $class ) ? ' class="'.$class.'"' : ''; $config['fields'][] = $field->storage_field; $html = ( isset( $field->form ) ) ? $field->form : ''; if ( isset( $inherit['after'] ) ) { $html .= $inherit['after']; } $label = ''; $tag = ( $field->required ) ? ' *' : ''; if ( $field->label ) { $label = ''; } $html = ''.$label.$html.''; return $html; } // renderBlank public static function renderBlank( $html = '', $label = '' ) { $app = JFactory::getApplication(); if ( $app->input->get( 'option' ) == 'com_cck' && $app->input->get( 'view' ) == 'form' ) { return; } return '
  • '.$html.'
  • '; } // renderHelp public static function renderHelp( $type, $url = '' ) { if ( !$url ) { return; } $app = JFactory::getApplication(); $raw = false; if ( $app->input->get( 'option' ) == 'com_cck' && $app->input->get( 'view' ) == 'form' ) { return; } switch ( $type ) { case 'addon': $raw = true; break; case 'link': case 'live': case 'typo': $type = 'plugin'; break; case 'validation': $type = 'plugin'; $raw = true; break; default: break; } $app->cck_markup_closed = true; $link = 'https://www.seblod.com/resources/manuals/archives/'.$url.'?tmpl=component'; $opts = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=685,height=600'; $help = '
    '; return ( $raw !== false ) ? $help : ''.$help.''; } // renderLegend public static function renderLegend( $legend, $tooltip = '', $tag = '1' ) { $app = JFactory::getApplication(); if ( $app->input->get( 'option' ) == 'com_cck' && $app->input->get( 'view' ) == 'form' ) { return; } if ( $tooltip != '' ) { $tag = ( $tag == '1' || $tag == '2' ) ? ' &sup'.$tag.';' : ' '.$tag.''; $tag = ''.$tag.''; $tooltip = ' class="hasTooltip qtip_cck" title="'.$tooltip.'"'; } else { $tag = ''; $tooltip = ''; } return '
    '.$legend.$tag.'
    '; } // renderSpacer public static function renderSpacer( $legend, $tooltip = '', $tag = '2', $options = array( 'class_sfx'=>'-2cols' ) ) { $app = JFactory::getApplication(); if ( $app->input->get( 'option' ) == 'com_cck' && $app->input->get( 'view' ) == 'form' ) { return; } if ( isset( $app->cck_markup_closed ) && $app->cck_markup_closed === true ) { $close = ''; $app->cck_markup_closed = false; } else { $close = ''; } $note = ''; if ( $legend == JText::_( 'COM_CCK_STORAGE' ) ) { $note = ''.JText::_( 'COM_CCK_STORAGE_CONTENT_TYPE_FIELD_DESC' ).'' . ''.JText::_( 'COM_CCK_STORAGE_SEARCH_TYPE_FIELD_DESC' ).''; } if ( $tooltip ) { $legend = ''.$legend.' &sup'.$tag.';'; } return $close.'
    '.$legend.$note.'
      '; } // -------- -------- -------- -------- -------- -------- -------- -------- // Variables Manipulation // fromJSON public static function fromJSON( $data = '', $format = 'array' ) { if ( ! $data || ! is_string( $data ) ) { return ( $format == 'array' ) ? array() : new stdClass; } $method = 'to'.ucfirst( $format ); $registry = new JRegistry; $registry->loadString( $data, 'JSON' ); return $registry->$method(); } // toJSON public static function toJSON( $data = '' ) { $registry = new JRegistry; $registry->loadArray( $data ); return $registry->toString(); } // fromSTRING public static function fromSTRING( $data = '', $glue = '||', $format = 'array' ) { /* TODO#SEBLOD: object */ if ( ! $data || ! is_string( $data ) ) { return ( $format == 'array' ) ? array() : new stdClass; } return ( $glue != '' ) ? explode( $glue, $data ) : array( $data ); } // toSTRING public static function toSTRING( $data = '', $glue = '||' ) { /* TODO#SEBLOD: object */ if ( ! is_array( $data ) ) { return ''; } return implode( $glue, $data ); } // toSafeID public static function toSafeID( $string ) { $str = str_replace( array( '&', '"', '<', '>' ), array( 'a', 'q', 'l', 'g' ), $string ); $str = trim( preg_replace( array( '/\s+/', '/[^A-Za-z0-9_]/' ), array( '_', '' ), $str ) ); return $str; } // toSafeSTRING public static function toSafeSTRING( $string, $char = '_', $case = 0 ) { $len = strlen( $char ); if ( $len > 1 ) { $chars = ''; for ( $i = 0; $i < $len; $i++ ) { $chars .= '\\'.$char[$i]; } $char = $chars[1]; $str = str_replace( $char, ' ', $string ); if ( $case != 2 ) { $str = JFactory::getLanguage()->transliterate( $str ); } $str = preg_replace( array( '/\s+/', '/[^A-Za-z0-9'.$chars.']/' ), array( $char, '' ), $str ); } else { $str = str_replace( $char, ' ', $string ); if ( $case != 2 ) { $str = JFactory::getLanguage()->transliterate( $str ); } $str = preg_replace( array( '/\s+/', '/[^A-Za-z0-9'.$char.']/' ), array( $char, '' ), $str ); } if ( $case == 1 ) { $str = strtoupper( $str ); } elseif ( $case == 0 ) { $str = strtolower( $str ); } $str = trim( $str ); return $str; } // fromXML public static function fromXML( $data = '', $isFile = true ) { libxml_use_internal_errors( true ); if ( $isFile ) { $xml = simplexml_load_file( $data, 'JCckDevXml' ); } else { $xml = simplexml_load_string( $data, 'JCckDevXml' ); } if ( empty( $xml ) ) { JError::raiseWarning( 100, JText::_( 'JLIB_UTIL_ERROR_XML_LOAD' ) ); if ( $isFile ) { JError::raiseWarning( 100, $data ); } foreach ( libxml_get_errors() as $error ) { JError::raiseWarning( 100, 'XML: ' . $error->message ); } } return $xml; } } ?>