[% # DIRECT-58085: Минус слова как массив в Медиапланах (фронт) campaign.minus_words = campaign.minus_words.join(' '); IF media.size; FOREACH banner IN media; IF banner.banner_minus_words.size; banner.banner_minus_words = '-' _ banner.banner_minus_words.join(' -'); ELSE; banner.banner_minus_words = ''; END; IF banner.campaign_minus_words.size; # camp_minus_words отдается строкой, в минус фразах сервер будет исправлять # DIRECT-51480: Минус-фразы на кампанию, группу (этап 3) banner.camp_minus_words = '-' _ banner.campaign_minus_words.join(' -'); END; END; END; %] [%~ SET not_view_only = login_rights.ModifyMediaplan; SET camp_is_arch = archived == 'Yes'; # клиент сервисируемый SET is_serviced_client = manager_uid || agency_uid; # медиаплан завершен с параметром Замена всей кампании SET is_replace_type_mediaplan = accept_type == 'replace' && mediaplan_status == 'Complete'; # клиент самоходный и медиаплан завершен с параметром Замена всей кампании - медиаплан типа "Оптимизированная кампания" SET is_optimized_mediaplan = !is_serviced_client && is_replace_type_mediaplan; # внутренний ли пользователь SET is_internal_user = login_rights.media_control || login_rights.manager_control || login_rights.super_control || login_rights.support_control || login_rights.placer_control; PROCESS 'i-header-bem/i-header-bem.tt2' title = iget("Список объявлений кампании") require_js = "js/autobroker.js,js/ajaxobject.js" require_css = "css/mediaplan.css" ; PROCESS 'blocks/b-form-button/b-form-button.tt2' + 'b-banner/model/b-banner__model.tt2' + 'b-phrases-list-group-operations/b-phrases-list-group-operations.tt2' + 'b-campaigninfo-show/optimize/text/b-campaigninfo-show__optimize__text.tt2' + 'b-campaigninfo-show/optimize/text/b-campaigninfo-show__optimize__text-optimized-mediaplan.tt2' + 'b-campaigninfo-show/optimize/accept/b-campaigninfo-show__optimize__accept.tt2' + 'b-campaigninfo-show/optimize/accept-popup/b-campaigninfo-show__optimize__accept-popup.tt2' + 'b-campaigninfo-show/optimize/reject-popup/b-campaigninfo-show__optimize__reject-popup.tt2' + 'b-campinfo/b-campinfo.tt2' + 'b-phrases-list/_page/b-phrases-list_page_mediaplan.tt2' + 'b-phrases-list-phrase/_page/b-phrases-list-phrase_page_mediaplan-view.tt2' + 'i-phrases/i-phrases.tt2' + 'b-mediaplan-view-phrases-actions/b-mediaplan-view-phrases-actions.tt2' + 'b-comment-form-template/_mode/b-comment-form-template_mode_media.tt2' + 'b-media-accept-form/b-media-accept-form.tt2' + 'blocks/b-form-checkbox/b-form-checkbox.tt2' + 'b-mediaplan-show-banner/b-mediaplan-show-banner.tt2' + 'b-phrases-list-sort/_page/b-phrases-list-sort_page_mediaplan-view.tt2' + 'b-minus-words-link/_page/b-minus-words-link_page_campview.tt2' + 'i-inline-bid/i-inline-bid.tt2' + 'i-campaign-hash/i-campaign-hash.tt2' + 'b-mediaplan-search-block/b-mediaplan-search-block.tt2' + 'b-banner-preview/b-banner-preview.tt2' + 'b-banner-list/region/b-banner-list__region.tt2' + 'i-mediaplan-info/i-mediaplan-info.tt2' + 'i-mediaplan-validate/i-mediaplan-validate.tt2' ; # Является ли медиаплан Первой/второй помощью # подробнее о полях optimize_camp в db_schema/ppc/optimizing_campaign_requests.text # наличие optimize_camp говорит о том, что была заявка на первую/вторую помощь SET is_first_aid = optimize_camp && ( (login_rights.role == 'client' && optimize_camp.status == 'Ready') || ((login_rights.FirstAid || login_rights.support_control) && (optimize_camp.status == 'New' || optimize_camp.status == 'AutoRequest' || optimize_camp.status == 'InProcess' || optimize_camp.status == 'Ready')) ); m_inline_bid_js_phrase; campaign_hash_strategy_hacks(campaign); mediaplan_info = {}; mediaplan_errors = []; i_mediaplan_info(mediaplan_info, { mediaplan_banners => media, campaign_active_groups_count => tabclass_all_count, is_replace_type => is_replace_type_mediaplan, max_campaign_groups => client_limits.banner_count_limit }); i_mediaplan_validate(mediaplan_errors, mediaplan_info); IF mediaplan_errors.size; IF !errors.common; errors.common = []; END; FOREACH mediaplan_error IN mediaplan_errors; errors.common.push(mediaplan_error); END; END; ~%] [% b_campinfo__optimize(optimize_camp, login_rights); %] [%~ PROCESS 'blocks/b-form-input/b-form-input.tt2' + 'b-minus-words-popup/b-minus-words-popup.tt2'; b_minus_words_popup(); b_phrase_minus_words_popup(); ~%] [% # попап отклонение медиаплана для пользователя # для "Оптимизированной кампании" показывает попап с причинами отклонения b_campaigninfo_show__optimize__reject_popup({ type => is_optimized_mediaplan ? 'optimized-camp' : 'first-aid' }); %] [% # Попап принятия Первой помощи и Оптимизированной кампании b_campaigninfo_show__optimize__accept_popup({ type => is_optimized_mediaplan ? 'optimized-camp' : 'first-aid', is_lego_mediaplan => is_lego_mediaplan }); %] [% #закончить оптимизацию - для админа b_campinfo__optimize__accept_popup(optimize_camp) %] [% #не нуждается в оптимизации - для админа b_campinfo__optimize__decline_popup(optimize_camp); %] [%~ #попап с показателем качества фразы b_phrase_qs_popup(); ~%] [% IF ( login_rights.media_control || login_rights.manager_control || login_rights.super_control || login_rights.support_control || login_rights.placer_control) && mediaplan_status != 'Complete' %] [% b_campinfo__end_mediaplan__popup({ hide_optimized_mediaplan_controls => is_first_aid }); %] [% END %] [% PROCESS 'i-footer/i-footer.tt2' %]