[%
# 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();
~%]
[% WRAPPER l_campinfo options = {class=>'b-campinfo'}%]
[% WRAPPER l_campinfo__row options = {} %]
[% WRAPPER l_campinfo__left options = {} %]
[%~
b_campinfo__navlinks({
show_export_xls => 1,
campOptionsViewOnly => (login_rights.media_control || !allow_edit_camp),
media_show_plan => 1,
PRICE_PLACES => CONSTS.PRICE_PLACES,
ENTRY_PLACES => CONSTS.ENTRY_PLACES
})
~%]
[% END %]
[% WRAPPER l_campinfo__right options = {} %]
[%~
b_campinfo__header({
cid => cid,
name => cname,
camp_select => 1,
optimize_ready => optimize_camp.status.match('Ready'),
is_optimized_mediaplan => is_optimized_mediaplan,
comment => is_optimized_mediaplan ? end_comment : optimize_camp.comment
});
~%]
[% ~%]
[% ~%]
[%~
b_campinfo__brief({
cid => cid,
uid_url => uid_url,
wallet_cid => wallet_cid,
clicks => clicks,
start_date => (dd _ '.' _ mm _ '.' _ yyyy),
show_stat => OrderID != 0,
total => total,
sum => sum,
bonus => bonus,
blocked_money_warning => (sum + 0) && money_type == 'blocked',
currency => currency,
pay_currency => pay_currency,
can_pay => statusNoPay == "No"
&& (statusModerate == "Yes" || manager_uid || agency_uid)
&& allow_edit_camp
&& login_rights.user_allow_pay,
payment_blocked => statusNoPay == 'Yes' && ( login_rights.super_control || login_rights.support_control || login_rights.manager_control || login_rights.placer_control || login_rights.media_control )
});
~%]
[% ~%]
[%~ b_campinfo__status({ status => status }) ~%]
[%~
b_campinfo__manager({
agency_info => agency_uid && agency_info,
manager_info => manager_uid && manager_info
});
~%]
[%~ IF not_view_only && !camp_is_arch ~%]
[%~ IF mediaplan_status == 'InProcess' ~%]
[% ~%]
[% iget("Состояние медиаплана: в работе") %] [% ~%]
[%~ ELSIF mediaplan_status == 'Complete' ~%]
[% ~%]
[% iget("Состояние медиаплана: ожидает утверждения") %] [% ~%]
[%~ END ~%]
[% ~%]
[% ~%]
[% ~%]
[% ~%]
[% ~%]
[%~ IF login_rights.media_control || login_rights.manager_control || login_rights.super_control || login_rights.support_control || login_rights.placer_control ~%]
[% # форма утверждения медиаплана для менеджера и суперпользователя %]
[%~ IF mediaplan_status == 'Complete' && (login_rights.manager_control || login_rights.super_control) ~%]
[% iget('или') %] [% ~%]
[% ~%]
[%~
b_form_button({
text => iget('Утвердить медиаплан'),
type=> 'submit',
height => '22',
theme => 'grey-22',
valign => 'middle'
})
~%]
[%~
# Попап принятия обычного медиаплана для внутренних ролей
b_media_accept_form(is_replace_type_mediaplan ? {
disabled_options => ['show_now', 'copy_or_replace_banners'],
default_values => {
show_now => 'Yes',
copy_or_replace_banners => 'replace'
},
is_lego_mediaplan => is_lego_mediaplan
} :
{ is_lego_mediaplan => is_lego_mediaplan })
~%]
[%~
# Попап оценки медиаплана для внутренних ролей
b_media_accept_form({ evaluate => 1, is_lego_mediaplan => is_lego_mediaplan })
~%]
[% ~%]
[% ~%]
[% iget('Оценить медиаплан') %] [% ~%]
[%~ END ~%]
[%~ END ~%]
[%~ IF (login_rights.manager_control || login_rights.media_control || login_rights.super_control) ~%]
[%~ b_campinfo__end_mediaplan__form() ~%]
[%~ END ~%]
[%~ IF mediaplan_status == 'Complete' && (login_rights.manager_control || login_rights.super_control) ~%]
[% ~%]
[% iget('Комментарий к медиаплану') %] [% ~%]
[%~ END ~%]
[% ~%]
[% ~%]
[% content = BLOCK %]
[%~ END ~%]
[%~
b_dropdowna({
content => content,
has_close => 1,
switcher => {text => iget('Операции с фразами')}
})
~%]
[%~ IF (FORM.removed.size > 0 || FORM.added_mw.size > 0) ~%]
[%~ IF FORM.removed.size > 0 ~%]
[%~ IF FORM.removed ~%]
[% iget('удалено %s дублей', FORM.removed) %]
[%~ ELSE ~%]
[% iget('дубли не найдены') %]
[% END %]
[% END %]
[%~ IF FORM.added_mw.size > 0 ~%]
[%~ IF FORM.added_mw ~%]
[% iget('скорректированы пересечения в %s фразах', FORM.added_mw) %]
[% ELSE %]
[% iget('пересечения не найдены') %]
[% END %]
[%~ END ~%]
[% END %]
[%~ ELSE ~%]
[%~ IF mediaplan_status == 'Complete' && !is_optimized_mediaplan && ((login_rights.is_any_client && allow_edit_camp) || login_rights.role == 'agency') ~%]
[% ~%]
[% ~%]
[% ~%]
[% ~%]
[%~
b_form_button({
text => iget('Принять медиаплан'),
type=> 'submit',
height => '22',
theme => 'grey-22',
valign => 'middle'
})
~%]
[%~
# Попап принятия обычного медиаплана для клиентов и агентств
b_media_accept_form(is_replace_type_mediaplan && is_serviced_client ? {
disabled_options => login_rights.role == 'agency' ? ['show_now', 'copy_or_replace_banners'] : ['show_now'],
default_values => login_rights.role == 'agency' ?
{
show_now => 'Yes',
copy_or_replace_banners => 'replace'
} :
{
show_now => 'Yes'
},
is_lego_mediaplan => is_lego_mediaplan
} :
{ is_lego_mediaplan => is_lego_mediaplan })
~%]
[% ~%]
[% ~%]
[% iget('Комментарий к медиаплану') %] [% ~%]
[% ~%]
[% ~%]
[% ~%]
[%~ END ~%]
[%~ END ~%]
[%~ IF (optimize_camp && optimize_camp.status == 'Ready' || is_optimized_mediaplan) && login_rights.is_any_client ~%]
[%~ # форма утверждения "Первой помощи" и "Оптимизированной кампании" для пользователя ~%]
[%~
b_campaigninfo_show__optimize__accept({
position => 'top',
retpath => SCRIPT _ '?cmd=showCamp&cid=' _ FORM.cid _ FORM.uid_url,
hide_optimize_ready => optimize_camp.hide_optimize_ready || is_optimized_mediaplan,
is_optimized_mediaplan => is_optimized_mediaplan,
is_lego_mediaplan => is_lego_mediaplan
})
~%]
[%~ END ~%]
[% END %]
[% END %]
[%~ IF errors ~%]
[% WRAPPER l_campinfo__row options = {} %]
[% WRAPPER l_campinfo__left options = {} %]
[% END ~%]
[% WRAPPER l_campinfo__right options = {} ~%]
[% INCLUDE form_parts/i_banner_errors.html errors = errors is_mediaplan = 1 %]
[%~ END ~%]
[%~ END ~%]
[%~ END ~%]
[%~ IF FORM.wp.defined ~%]
[% WRAPPER l_campinfo__row options = {} %]
[% WRAPPER l_campinfo__left options = {} %]
[% END ~%]
[% WRAPPER l_campinfo__right options = {} ~%]
[% iget('Показываются только фразы и баннеры по которым есть предупреждения!') %]
[% iget('показать кампанию полностью...') %]
[%~ END ~%]
[%~ END ~%]
[%~ END ~%]
[%~ PROCESS 'i-campaign-tabs/i-campaign-tabs.tt2' ~%]
[% WRAPPER l_campinfo__row options = {} %]
[% WRAPPER l_campinfo__left options = {} %]
[% IF not_view_only && media.size() && !camp_is_arch %]
[% END %]
[% END ~%]
[% WRAPPER l_campinfo__right options = {} ~%]
[% iget('Реальный бюджет и цена клика могут отличаться от прогнозируемого в несколько раз, т.к. они подсчитаны на основе анализа ставок конкурентов и CTR их кампаний, а эти параметры могут изменяться в процессе работы. Прогноз рассчитан на месяц.') %]
[% IF media.defined && media.size %]
[% IF not_view_only %]
[% b_phrases_list_group_operations({
link_style => 'font-weight: normal; color: #37486E;'
}) %]
[% END %]
[% IF is_first_aid || is_optimized_mediaplan %]
[% SET is_client = (login_rights.role == 'manager' || login_rights.role == 'super' || login_rights.media_control || login_rights.support_control) ? 0 : 1 %]
[% iget('Прогноз на') %] [% iget('неделю') %] / [% iget('месяц') %]
[% END %]
[% END %]
[% END ~%]
[% END ~%]
[% END %]
[% IF not_view_only && media.size() %]
[% IF login_rights.role != 'client' && login_rights.FirstAid && optimize_camp && optimize_camp.status.match('^(New|InProcess)$') %]
[% iget("Заявленный клиентом месячный бюджет:") %]
[% IF optimize_camp.budget %]
[% format_sum_of_money(currency, (optimize_camp.budget * 30 / 7), {delim => ' '}) %]
[% ELSIF optimize_camp.autobudget == 'Yes' %]
[% format_sum_of_money(currency, (optimize_camp.autobudget_sum * 30 / 7), {delim => ' '}) %]
[% ELSE %]
[% iget("не указан") %]
[% END %]
[% END %]
[%~ b_mediaplan_view_phrases_actions(options); ~%]
[%~ IF optimize_camp.can_optimize && !camp_is_arch ~%]
[% b_campinfo__optimize__controls({formName => 'orderForm', show_complete => 1, posDecline => 'top', posAccept => 'top', barId => 'actions-bar'}) %]
[%~ b_form_button({
text => iget('Сохранить ставки'),
class => 'b-mediaplan-view__save-btn',
height => '26',
theme => 'grey-26'
}) ~%]
[% ELSIF mediaplan_status != 'None' && !camp_is_arch %]
[% 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__controls({
barId => 'actions-bar',
mediaplan_info => mediaplan_info
})
%]
[% END %]
[%~ b_form_button({
text => iget('Сохранить ставки'),
class => 'b-mediaplan-view__save-btn',
height => '26',
theme => 'grey-26'
}) ~%]
[% END %]
[% END %]
[%
IF (optimize_camp && optimize_camp.status == 'Ready' || is_optimized_mediaplan) &&
(login_rights.is_any_client || login_rights.super_control || login_rights.support_control)
%]
[% # форма утверждения "Первой помощи" и "Оптимизированной кампании" для пользователя %]
[%
b_campaigninfo_show__optimize__accept({
position => 'bottom',
retpath => SCRIPT _ '?cmd=showCamp&cid=' _ FORM.cid _ FORM.uid_url,
hide_optimize_ready => optimize_camp.hide_optimize_ready || is_optimized_mediaplan,
is_optimized_mediaplan => is_optimized_mediaplan,
is_lego_mediaplan => is_lego_mediaplan
})
%]
[% END %]
[% start_url = SCRIPT _ '?cmd=' _ FORM.cmd _ '&cid=' _ FORM.cid _ '&tab=' _ FORM.tab _ uid_url %]
[%~ PROCESS 'i-pages/i-pages.tt2' page, url=start_url %]
[%
# попап отклонение медиаплана для пользователя
# для "Оптимизированной кампании" показывает попап с причинами отклонения
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' %]