acym_translation('ACYM_MENU_FORM_DESC')] ); } public function form($instance) { require_once(rtrim(dirname(dirname(__DIR__)), DS).DS.'back'.DS.'helpers'.DS.'helper.php'); wp_enqueue_style('select2lib', 'https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css'); wp_enqueue_script('select2lib', 'https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js', ['jquery']); wp_enqueue_script('acym_widget_article', ACYM_JS.'widget.min.js', ['select2lib']); acym_addStyle(false, ACYM_CSS.'widget.min.css?v='.filemtime(ACYM_MEDIA.'css'.DS.'widget.min.css')); $listClass = acym_get('class.list'); $fieldClass = acym_get('class.field'); $allFields = $fieldClass->getAllfields(); $fields = []; foreach ($allFields as $field) { if ($field->id == 2) continue; $fields[$field->id] = acym_translation($field->name); } $lists = $listClass->getAll(); foreach ($lists as $i => $oneList) { if ($oneList->active == 0) { unset($lists[$i]); } } $listIds = array_keys($lists); $params = [ 'title' => 'Receive our newsletters', 'mode' => 'tableless', 'hiddenlists' => array_shift($listIds), 'displists' => '', 'listschecked' => '', 'listposition' => 'before', 'fields' => '1', 'textmode' => '1', 'subtext' => '', 'subtextlogged' => '', 'termscontent' => '0', 'privacypolicy' => '0', 'articlepopup' => '1', 'unsub' => '0', 'unsubtext' => '', 'unsubredirect' => '', 'redirect' => '', 'introtext' => '', 'posttext' => '', 'userinfo' => '1', 'formclass' => '', 'alignment' => 'none', 'source' => 'widget __i__', ]; foreach ($params as $oneParam => &$value) { if (!empty($instance)) { if (isset($instance[$oneParam])) { $value = $instance[$oneParam]; } else { $value = ''; } } if (is_array($value)) { $value = implode(',', $value); } $value = esc_attr($value); } if (!isset($instance['hiddenlists']) && !empty($params['displists'])) { $params['hiddenlists'] = ''; } echo '

'.acym_translation('ACYM_MAIN_OPTIONS').'

'; echo '

'; $options = []; $options[] = acym_selectOption('inline', acym_translation('ACYM_MODE_HORIZONTAL')); $options[] = acym_selectOption('vertical', acym_translation('ACYM_MODE_VERTICAL')); $options[] = acym_selectOption('tableless', acym_translation('ACYM_MODE_TABLELESS')); echo '

'; echo acym_Select($options, $this->get_field_name('mode'), $params['mode'], 'class="acym_simple_select2"', 'value', 'text', $this->get_field_id('mode')).'

'; echo '

'; echo acym_selectMultiple($lists, $this->get_field_name('hiddenlists'), explode(',', $params['hiddenlists']), ['class' => 'acym_simple_select2', 'id' => $this->get_field_id('hiddenlists')], 'id', 'name'); echo '

'; echo acym_selectMultiple($lists, $this->get_field_name('displists'), explode(',', $params['displists']), ['class' => 'acym_simple_select2', 'id' => $this->get_field_id('displists')], 'id', 'name'); echo '

'; echo acym_selectMultiple($lists, $this->get_field_name('listschecked'), explode(',', $params['listschecked']), ['class' => 'acym_simple_select2', 'id' => $this->get_field_id('listschecked')], 'id', 'name'); $options = []; $options[] = acym_selectOption('before', acym_translation('ACYM_BEFORE_FIELDS')); $options[] = acym_selectOption('after', acym_translation('ACYM_AFTER_FIELDS')); echo '

'; echo acym_select($options, $this->get_field_name('listposition'), $params['listposition'], 'class="acym_simple_select2"', 'value', 'text', $this->get_field_id('listposition')).'

'; echo '

'; echo acym_selectMultiple($fields, $this->get_field_name('fields'), explode(',', $params['fields']), ['class' => 'acym_simple_select2', 'id' => $this->get_field_id('fields')]); $options = []; $options[] = acym_selectOption('1', acym_translation('ACYM_TEXT_INSIDE')); $options[] = acym_selectOption('0', acym_translation('ACYM_TEXT_OUTSIDE')); echo '

'; echo acym_select($options, $this->get_field_name('textmode'), $params['textmode'], 'class="acym_simple_select2"', 'value', 'text', $this->get_field_id('textmode')).'

'; echo '

'; echo '

'; $options = []; if (!empty($params['termscontent'])) { $options[] = acym_selectOption($params['termscontent'], get_the_title($params['termscontent'])); } echo '

'; echo acym_select($options, $this->get_field_name('termscontent'), $params['termscontent'], 'class="acym_post_select2" title="'.acym_translation('ACYM_PRIVACY_POLICY', true).'"', 'value', 'text', $this->get_field_id('termscontent')).'

'; $options = []; if (!empty($params['privacypolicy'])) { $options[] = acym_selectOption($params['privacypolicy'], get_the_title($params['privacypolicy'])); } echo '

'; echo acym_select($options, $this->get_field_name('privacypolicy'), $params['privacypolicy'], 'class="acym_post_select2" title="'.acym_translation('ACYM_PRIVACY_POLICY', true).'"', 'value', 'text', $this->get_field_id('privacypolicy')).'

'; echo '

'.acym_translation('ACYM_ADVANCED_OPTIONS').'

'; echo '

'; $onclick = "var disp = 'none';"; $onclick .= "if(this.value == 1){disp = 'block';}"; $onclick .= "var elements = document.getElementsByClassName('".$this->get_field_id('unsubtextrow')."');"; $onclick .= "for(var i = 0 ; i < elements.length ; i++){elements[i].style.display = disp;}"; echo acym_boolean($this->get_field_name('unsub'), $params['unsub'], $this->get_field_id('unsub'), ['onclick' => $onclick]).'

'; echo '

'; echo '

'; echo '

'; echo '

'; echo '

'; echo '

'; echo acym_boolean($this->get_field_name('userinfo'), $params['userinfo'], $this->get_field_id('userinfo')).'

'; echo '

'; $options = []; $options[] = acym_selectOption('none', acym_translation('ACYM_DEFAULT')); $options[] = acym_selectOption('left', acym_translation('ACYM_LEFT')); $options[] = acym_selectOption('center', acym_translation('ACYM_CENTER')); $options[] = acym_selectOption('right', acym_translation('ACYM_RIGHT')); echo '

'; echo acym_select($options, $this->get_field_name('alignment'), $params['alignment'], 'class="acym_simple_select2"', 'value', 'text', $this->get_field_id('alignment')).'

'; echo '

'; echo '
'; } public function widget($args, $instance) { require_once(rtrim(dirname(dirname(__DIR__)), DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR.'back'.DIRECTORY_SEPARATOR.'helpers'.DIRECTORY_SEPARATOR.'helper.php'); echo $args['before_widget']; $params = new acymParameter($instance); acym_initModule($params); $title = apply_filters('widget_title', $instance['title']); if (!empty($title)) { echo $args['before_title'].$title.$args['after_title']; } $identifiedUser = null; $currentUserEmail = acym_currentUserEmail(); if ($params->get('userinfo', '1') == '1' && !empty($currentUserEmail)) { $userClass = acym_get('class.user'); $identifiedUser = $userClass->getOneByEmail($currentUserEmail); } $visibleLists = $params->get('displists', []); $hiddenLists = $params->get('hiddenlists', []); $allfields = $params->get('fields', []); if (!in_array('2', $allfields)) { $allfields[] = 2; } acym_arrayToInteger($visibleLists); acym_arrayToInteger($hiddenLists); acym_arrayToInteger($allfields); $listClass = acym_get('class.list'); $fieldClass = acym_get('class.field'); $allLists = $listClass->getAll(); $visibleLists = array_intersect($visibleLists, array_keys($allLists)); $hiddenLists = array_intersect($hiddenLists, array_keys($allLists)); $allfields = $fieldClass->getFieldsByID($allfields); $fields = []; foreach ($allfields as $field) { $fields[$field->id] = $field; } if (empty($visibleLists) && empty($hiddenLists)) { $hiddenLists = array_keys($allLists); } if (!empty($visibleLists) && !empty($hiddenLists)) { $visibleLists = array_diff($visibleLists, $hiddenLists); } if (empty($identifiedUser->id)) { $checkedLists = $params->get('listschecked', []); if (!is_array($checkedLists)) { if (strtolower($checkedLists) == 'all') { $checkedLists = $visibleLists; } elseif (strpos($checkedLists, ',') || is_numeric($checkedLists)) { $checkedLists = explode(',', $checkedLists); } else { $checkedLists = []; } } } else { $checkedLists = []; $userLists = $userClass->getUserSubscriptionById($identifiedUser->id); $countSub = 0; $countUnsub = 0; $formLists = array_merge($visibleLists, $hiddenLists); foreach ($formLists as $idOneList) { if (empty($userLists[$idOneList]) || $userLists[$idOneList]->status == 0) { $countSub++; } else { $countUnsub++; $checkedLists[] = $idOneList; } } } acym_arrayToInteger($checkedLists); $config = acym_config(); $subscribeText = $params->get('subtext', 'ACYM_SUBSCRIBE'); if (!empty($identifiedUser->id)) $subscribeText = $params->get('subtextlogged', 'ACYM_SUBSCRIBE'); $unsubscribeText = $params->get('unsubtext', 'ACYM_UNSUBSCRIBE'); $listPosition = $params->get('listposition', 'before'); $displayOutside = $params->get('textmode') == '0'; $redirectURL = $params->get('redirect', ''); $unsubRedirectURL = $params->get('unsubredirect', ''); $ajax = empty($redirectURL) && empty($unsubRedirectURL) ? '1' : '0'; $formClass = $params->get('formclass', ''); $alignment = $params->get('alignment', 'none'); $style = $alignment == 'none' ? '' : 'style="text-align: '.$alignment.'"'; $displayInAPopup = 0; // $params->get('articlepopup', 1); $termsURL = acym_getArticleURL($params->get('termscontent', 0), $displayInAPopup, 'ACYM_TERMS_CONDITIONS'); $privacyURL = acym_getArticleURL($params->get('privacypolicy', 0), $displayInAPopup, 'ACYM_PRIVACY_POLICY'); if (empty($termsURL) && empty($privacyURL)) { $termslink = ''; } elseif (empty($privacyURL)) { $termslink = acym_translation_sprintf('ACYM_I_AGREE_TERMS', $termsURL); } elseif (empty($termsURL)) { $termslink = acym_translation_sprintf('ACYM_I_AGREE_PRIVACY', $privacyURL); } else { $termslink = acym_translation_sprintf('ACYM_I_AGREE_BOTH', $termsURL, $privacyURL); } $formName = acym_getModuleFormName(); $formAction = htmlspecialchars_decode(acym_rootURI().acym_addPageParam('frontusers', true, true)); $js = "window.addEventListener('DOMContentLoaded', (event) => {"; $js .= "\n"."acymModule['excludeValues".$formName."'] = [];"; $fieldsToDisplay = []; foreach ($fields as $field) { $fieldsToDisplay[$field->id] = $field->name; $js .= "\n"."acymModule['excludeValues".$formName."']['".$field->id."'] = '".acym_translation($field->name, true)."';"; } $js .= " });"; echo ''; ?>
>
get('introtext', ''); if (!empty($introText)) { echo '
'.$introText.'
'; } if ($params->get('mode', 'tableless') == 'tableless') { include(__DIR__.DS.'tmpl'.DS.'tableless.php'); } else { $displayInline = $params->get('mode', 'tableless') != 'vertical'; include(__DIR__.DS.'tmpl'.DS.'default.php'); } ?>
'; if (!empty($unsubRedirectURL)) echo ''; ?> get('posttext', ''); if (!empty($postText)) { echo '
'.$postText.'
'; } ?>