Changeset 2200549
- Timestamp:
- 11/25/2019 01:10:00 PM (6 years ago)
- Location:
- experience-manager/trunk
- Files:
-
- 17 edited
-
assets/elementor/experience-manager-elementor.js (modified) (1 diff)
-
experience-manager.php (modified) (4 diffs)
-
includes/backend/class.tma_wpadminbar.php (modified) (1 diff)
-
includes/backend/segment/class.segment-editor.php (modified) (7 diffs)
-
includes/backend/segment/description.php (modified) (1 diff)
-
includes/class.request.php (modified) (4 diffs)
-
includes/class.tma_rest.php (modified) (1 diff)
-
includes/frontend/class.shortcode_tma_content.php (modified) (3 diffs)
-
includes/modules/ads/advanced/class.advanced_ads.php (modified) (1 diff)
-
includes/modules/editors/class.integration.php (modified) (1 diff)
-
includes/modules/editors/elementor/class.elementor_integration.php (modified) (2 diffs)
-
includes/modules/editors/elementor/class.elementor_preview.php (modified) (5 diffs)
-
includes/modules/messages/popup-maker/class.popup-maker.php (modified) (1 diff)
-
includes/tma_functions.php (modified) (4 diffs)
-
includes/widgets/class.widget_targeting.php (modified) (1 diff)
-
js/experience-manager-frontend.js (modified) (1 diff)
-
readme.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
experience-manager/trunk/assets/elementor/experience-manager-elementor.js
r2192435 r2200549 13 13 14 14 onElementorReady().then(function () { 15 console.log("Hallo Leute"); 16 console.log("exm", window.elementor); 17 18 window.elementor.channels.editor.on("exm:editor:preview", function () { 19 console.log("event"); 15 window.elementor.channels.editor.on("exm:editor:highlight", function () { 16 tma_toggle_highlight(); 20 17 }); 21 18 22 19 }); 23 //webtools.domReady(function (event) { 24 // console.log("Hallo Leute"); 25 // console.log("exm", window.elementor); 26 // 27 // window.elementor.channels.editor.on("exm:editor:preview", function () { 28 // console.log("event"); 29 // }); 30 // 31 //}); 20 var tma_exm_elementor_highlight = false; 21 function tma_toggle_highlight() { 22 if (tma_exm_elementor_highlight) { 23 tma_exm_elementor_highlight = false; 24 webtools.Highlight.deactivate(); 25 } else { 26 tma_exm_elementor_highlight = true; 27 webtools.Highlight.activate(Array.apply([], document.querySelectorAll('[data-tma-group]'))); 28 } 29 } 30 -
experience-manager/trunk/experience-manager.php
r2192435 r2200549 5 5 Description: The integration for the experience platform. 6 6 Author: Thorsten Marx 7 Version: 2. 1.07 Version: 2.2.0 8 8 Author URI: https://wp-digitalexperience.com/ 9 9 Text Domain: tma-webtools … … 14 14 } 15 15 16 define("TMA_EXPERIENCE_MANAGER_VERSION", "2. 1.0");16 define("TMA_EXPERIENCE_MANAGER_VERSION", "2.2.0"); 17 17 define("TMA_EXPERIENCE_MANAGER_SEGMENT_MATCHING_ALL", "all"); 18 18 define("TMA_EXPERIENCE_MANAGER_SEGMENT_MATCHING_ANY", "any"); … … 43 43 44 44 if (\TMA\ExperienceManager\Plugins::getInstance()->elementor()) { 45 new \TMA\ExperienceManager\Elementor_Integration();46 //new \TMA\ExperienceManager\Elementor_Preview();45 \TMA\ExperienceManager\Elementor_Integration::getInstance(); 46 \TMA\ExperienceManager\Elementor_Preview::getInstance(); 47 47 } 48 48 if (\TMA\ExperienceManager\Plugins::getInstance()->popup_maker()) { … … 77 77 // Settings 78 78 // require_once 'includes/frontend/class.tma_script_helper.php'; 79 require_once 'includes/frontend/class.shortcode_tma_content.php';79 //require_once 'includes/frontend/class.shortcode_tma_content.php'; 80 80 require_once 'includes/frontend/template_tags.php'; 81 81 82 new TMA\ExperienceManager\TMA_Widget_Targeting(); 82 // IS not stored 83 //new TMA\ExperienceManager\TMA_Widget_Targeting(); 83 84 84 85 require_once 'includes/modules/events/class.ecommerce_events.php'; -
experience-manager/trunk/includes/backend/class.tma_wpadminbar.php
r2096995 r2200549 88 88 89 89 $segments = tma_exm_get_segments_as_array(); 90 tma_exm_log("hier sind die segmente"); 91 tma_exm_log(json_encode($segments)); 90 92 if (sizeof($segments) > 0) { 91 93 foreach ($segments as $segment) { -
experience-manager/trunk/includes/backend/segment/class.segment-editor.php
r2192435 r2200549 100 100 */ 101 101 102 wp_enqueue_script ( 'tma-webtools-backend');102 wp_enqueue_script('tma-webtools-backend'); 103 103 wp_enqueue_style('experience-manager-codemirror-styles', TMA_EXPERIENCE_MANAGER_URL . 'assets/codemirror/codemirror.css', array(), "5.48.4", false); 104 104 wp_enqueue_script('experience-manager-codemirror', TMA_EXPERIENCE_MANAGER_URL . 'assets/codemirror/codemirror.js', array(), "5.48.4", false); … … 147 147 $siteid = get_option('tma_webtools_option')['webtools_siteid']; 148 148 } 149 $dsl = get_post_meta($post->ID, 'tma_segment_editor', true);150 151 152 149 $post_data = array( 153 150 'name' => $post->post_title, 154 151 'externalId' => $ID, 155 152 'active' => $post->post_status === "publish", 156 'dsl' => $dsl 157 ); 158 159 tma_exm_log($post_data); 153 'dsl' => $this->get_segment_dsl($post->ID), 154 'period' => $this->get_segment_period($post->ID) 155 ); 156 157 tma_exm_log("post data"); 158 tma_exm_log(json_encode($post_data)); 160 159 161 160 $request = new \TMA\ExperienceManager\TMA_Request(); … … 237 236 } 238 237 239 public function save($post_id) {238 public function get_segment_dsl($post_id) { 240 239 if (array_key_exists('exm_audience_editor', $_POST)) { 241 240 $editor_value = filter_input(INPUT_POST, 'exm_audience_editor'); 242 //$editor_value = sanitize_textarea_field($_POST['exm_audience_editor']); 241 242 return $editor_value; 243 } else { 244 return get_post_meta($post_id, 'tma_segment_editor', true); 245 } 246 } 247 public function get_segment_period($post_id) { 248 $period = [ 249 'unit' => "YEAR", // MINUTE, HOUR, DAY, WEEK, MONTH, YEAR 250 'count' => 1 251 ]; 252 if (array_key_exists('exm_audience_editor_tw_unit', $_POST)) { 253 $period['unit'] = $_POST['exm_audience_editor_tw_unit']; 254 } else { 255 $period['unit'] = get_post_meta($post_id, 'tma_segment_editor_unit', true); 256 } 257 258 if (array_key_exists('exm_audience_editor_tw_count', $_POST)) { 259 $period['count'] = intval($_POST['exm_audience_editor_tw_count']); 260 } else { 261 $period['count'] = intval(get_post_meta($post_id, 'tma_segment_editor_count', true)); 262 } 263 264 return $period; 265 } 266 267 public function save($post_id) { 268 tma_exm_log("save"); 269 if (array_key_exists('exm_audience_editor', $_POST)) { 270 $editor_value = filter_input(INPUT_POST, 'exm_audience_editor'); 243 271 update_post_meta( 244 272 $post_id, … … 247 275 ); 248 276 } 277 if (array_key_exists('exm_audience_editor_tw_unit', $_POST)) { 278 update_post_meta( 279 $post_id, 280 'tma_segment_editor_unit', 281 $_POST['exm_audience_editor_tw_unit'] 282 ); 283 } 284 if (array_key_exists('exm_audience_editor_tw_count', $_POST)) { 285 update_post_meta( 286 $post_id, 287 'tma_segment_editor_count', 288 $_POST['exm_audience_editor_tw_count'] 289 ); 290 } 291 249 292 } 250 293 … … 269 312 SegmentType::$TYPE // Post type 270 313 ); 314 add_meta_box( 315 'tma_segment_editor_timewindow', // Unique ID 316 'Time window', // Box title 317 [$this, 'time_meta_box'], // Content callback, must be of type callable 318 SegmentType::$TYPE // Post type 319 ); 271 320 } 272 321 … … 277 326 public function categories($post) { 278 327 include 'categories.php'; 328 } 329 330 function time_meta_box($post) { 331 $unit = get_post_meta($post->ID, 'tma_segment_editor_unit', true); 332 $count = get_post_meta($post->ID, 'tma_segment_editor_count', true); 333 ?> 334 <div> 335 <label for="exm_audience_editor_tw_unit">Unit</label> 336 <select name="exm_audience_editor_tw_unit" id="tma_segment_editor_tw_unit" class="postbox"> 337 <option value="YEAR" <?php selected($unit, 'YEAR'); ?> >YEAR</option> 338 <option value="MONTH" <?php selected($unit, 'MONTH'); ?> >MONTH</option> 339 <option value="WEEK" <?php selected($unit, 'WEEK'); ?> >WEEK</option> 340 <option value="DAY" <?php selected($unit, 'DAY'); ?> >DAY</option> 341 <option value="HOUR" <?php selected($unit, 'HOUR'); ?> >HOUR</option> 342 <option value="MINUTE" <?php selected($unit, 'MINUTE'); ?> >MINUTE</option> 343 </select> 344 </div> 345 <div> 346 <label for="exm_audience_editor_tw_unit">Count</label> 347 <input type="number" name="exm_audience_editor_tw_count" class="postbox" value="<?php echo $count?>" /> 348 </div> 349 <?php 279 350 } 280 351 … … 282 353 $value = get_post_meta($post->ID, 'tma_segment_editor', true); 283 354 ?> 284 <textarea name="exm_audience_editor" id="exm_audience_editor" cols="50" rows="10"><?php if ($value && $value !== "") { 355 <textarea name="exm_audience_editor" id="exm_audience_editor" cols="50" rows="10"><?php 356 if ($value && $value !== "") { 285 357 echo $value; 286 } ?></textarea> 358 } 359 ?></textarea> 287 360 <script type="text/javascript"> 288 361 CodeMirror.fromTextArea(document.getElementById("exm_audience_editor"), { -
experience-manager/trunk/includes/backend/segment/description.php
r2192433 r2200549 103 103 <span>User has visited at least two products of the category T-Shirts: </span><b>rule(CATEGORY).path('/tshirts/').field('c_categories').count(2)</b> 104 104 </p> 105 <p> 106 <span class="headline">KEYVALUE</span> 107 <br /> 108 Check if a user has visited posts or products of a specific category. 109 User the category path generator to get the correct path: <a href="#exm_categories">Category path generator</a> 110 <br /> 111 <b>rule(CATEGORY).field('c_categories')</b> 112 <br /> 113 "browser.name", ua.getBrowser().name()); 114 "browser.group", ua.getBrowser().getGroup().name()); 115 "browser.version", ua.getBrowserVersion().getVersion()); 116 "os.name", ua.getOperatingSystem().name()); 117 "os.group", ua.getOperatingSystem().getGroup().name()); 118 "os.type", ua.getOperatingSystem().getDeviceType().name()); 119 <span class="subheadline">Examples</span><br/> 120 <span>User has visited at least two post of a category: </span><b>rule(CATEGORY).path('/news/local').field('c_categories').count(2)</b> 121 <br/> 122 <span>User has visited at least two products of the category T-Shirts: </span><b>rule(CATEGORY).path('/tshirts/').field('c_categories').count(2)</b> 123 </p> 105 124 106 </div> 125 107 -
experience-manager/trunk/includes/class.request.php
r2141767 r2200549 31 31 public function __construct() { 32 32 $this->options = get_option('tma_webtools_option'); 33 33 34 } 34 35 … … 215 216 */ 216 217 public function getSegments($userid) { 217 /*218 if (tma_is_preview()) {219 if (isset($_GET['segment'])) {220 $segments = filter_input(INPUT_GET, 'segment', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);221 $result = '{"user" :{"segments" : ["' . implode("\",\"", $segments) . '"]}, "status" : "ok"}';222 return json_decode($result);223 } else {224 $result = '{"user" : {"segments" : []}, "status" : "ok"}';225 return json_decode($result);226 }227 } */228 229 230 218 if (!isset($this->options["webtools_apikey"]) || !isset($this->options['webtools_url'])) { 231 219 $result = '{"user" : {"segments" : []}}'; … … 236 224 if (false === $result) { 237 225 $url = $this->options['webtools_url'] . 'rest/userinformation/user?apikey=' . $apikey . '&user=' . $userid; 238 $result = $this->loadContent($url, '{"user" : {"segments" : []}, "status" : "ok" }');226 $result = $this->loadContent($url, '{"user" : {"segments" : []}, "status" : "ok", "default": true}'); 239 227 240 228 wp_cache_set($userid, $result, "", 60); … … 375 363 376 364 $response = wp_remote_get($url, $parameters); 377 365 tma_exm_log(json_encode($response)); 378 366 if ((is_object($response) || is_array($response)) && !is_wp_error($response)) { 379 367 $result = $response['body']; // use the content -
experience-manager/trunk/includes/class.tma_rest.php
r2192435 r2200549 75 75 76 76 $segments['segments'] = tma_exm_get_segments_as_array(); 77 $segments['user_segments'] = tma_ex p_get_user_segments();77 $segments['user_segments'] = tma_exm_get_user_segments(); 78 78 79 79 return apply_filters("experience-manager/rest/segments", $segments); -
experience-manager/trunk/includes/frontend/class.shortcode_tma_content.php
r2192435 r2200549 32 32 */ 33 33 public static $match_mode_all = TMA_EXPERIENCE_MANAGER_SEGMENT_MATCHING_ALL; //'all'; 34 34 35 /** 35 36 * … … 37 38 */ 38 39 public static $match_mode_none = TMA_EXPERIENCE_MANAGER_SEGMENT_MATCHING_NONE; //'none'; 39 40 40 public static $delimiter = ','; 41 41 private static $contentGroups = array(); … … 166 166 } 167 167 168 public static function array_flat($usersSegments) { 169 $segments = []; 170 171 foreach ($usersSegments as $segment) { 172 $segments[] = $segment->wpid; 173 } 174 175 return $segments; 176 } 177 168 178 /** 169 179 * -
experience-manager/trunk/includes/modules/ads/advanced/class.advanced_ads.php
r2192435 r2200549 63 63 } 64 64 65 $user_segments = array_map('trim', $user_segments);65 //$user_segments = array_map('trim', $user_segments); 66 66 $settings_segments = array_map('trim', $settings_segments); 67 return ShortCode_TMA_CONTENT::matching_mode_all($user_segments, $settings_segments);67 return tma_exm_array_match_all($settings_segments, $user_segments); 68 68 } 69 69 -
experience-manager/trunk/includes/modules/editors/class.integration.php
r2192435 r2200549 124 124 125 125 $matching = false; 126 $segments = array_map('trim', $segments);126 // $segments = array_map('trim', $segments); 127 127 $attr_segments = array_map('trim', $attr_segments); 128 128 if ($matching_mode === ShortCode_TMA_CONTENT::$match_mode_all) { 129 $matching = ShortCode_TMA_CONTENT::matching_mode_all($segments, $attr_segments); 129 // $matching = ShortCode_TMA_CONTENT::matching_mode_all(ShortCode_TMA_CONTENT::array_flat($segments), $attr_segments); 130 $matching = tma_exm_array_match_all($attr_segments, $segments); 130 131 } else if ($matching_mode === ShortCode_TMA_CONTENT::$match_mode_any) { 131 $matching = ShortCode_TMA_CONTENT::matching_mode_any($segments, $attr_segments); 132 // $matching = ShortCode_TMA_CONTENT::matching_mode_any(ShortCode_TMA_CONTENT::array_flat($segments), $attr_segments); 133 $matching = tma_exm_array_match_any($attr_segments, $segments); 132 134 } else if ($matching_mode === ShortCode_TMA_CONTENT::$match_mode_none) { 133 $matching = !ShortCode_TMA_CONTENT::matching_mode_any($segments, $attr_segments); 135 // $matching = !ShortCode_TMA_CONTENT::matching_mode_any(ShortCode_TMA_CONTENT::array_flat($segments), $attr_segments); 136 $matching = !tma_exm_array_match_all($attr_segments, $segments); 134 137 } 135 138 -
experience-manager/trunk/includes/modules/editors/elementor/class.elementor_integration.php
r2192471 r2200549 22 22 class Elementor_Integration extends Integration { 23 23 24 protected static $_instance = null; 25 26 public static function getInstance() { 27 if (null === self::$_instance) { 28 self::$_instance = new self; 29 } 30 return self::$_instance; 31 } 32 24 33 /** 25 34 * Start up 26 35 */ 27 p ublicfunction __construct() {36 private function __construct() { 28 37 29 38 parent::__construct(); … … 92 101 return Elementor_Integration::_isActivated($args); 93 102 } 94 103 95 104 protected function isGroupDefault($args) { 96 105 return (is_array($args) && !empty($args['tma_default']) && $args['tma_default'] === "yes"); -
experience-manager/trunk/includes/modules/editors/elementor/class.elementor_preview.php
r2192435 r2200549 21 21 22 22 class Elementor_Preview { 23 24 protected static $_instance = null; 25 26 public static function getInstance() { 27 if (null === self::$_instance) { 28 self::$_instance = new self; 29 } 30 return self::$_instance; 31 } 23 32 24 33 /** 25 34 * Start up 26 35 */ 27 p ublicfunction __construct() {36 private function __construct() { 28 37 add_action('elementor/element/post/document_settings/after_section_end', array($this, 'add_elementor_page_settings_controls')); 29 38 … … 32 41 add_action("elementor/widget/render_content", function ($content, $element) { 33 42 if (\Elementor\Plugin::$instance->editor->is_edit_mode()) { 34 $attrs = Elementor_Integration::getAttributes($element, true); 43 // TODO: static call not working anymore 44 $attrs = Elementor_Integration::getInstance()->getAttributes($element, true); 35 45 $element->add_render_attribute('exm_wrapper', $attrs); 36 46 return '<div id="exm_wrapper" ' . $element->get_render_attribute_string('exm_wrapper') . ' >' . $content . "</div>"; … … 41 51 42 52 function widget_scripts() { 43 wp_register_script('exm-elementor', plugins_url('experience-manager/assets/elementor/experience-manager-elementor.js'), [], "2. 1.0", true);53 wp_register_script('exm-elementor', plugins_url('experience-manager/assets/elementor/experience-manager-elementor.js'), [], "2.2.0", true); 44 54 wp_enqueue_script('exm-elementor'); 45 55 } 46 56 47 function add_elementor_page_settings_controls( \Elementor\Core\DocumentTypes\Post $page) {57 function add_elementor_page_settings_controls( $page) { // \Elementor\Core\DocumentTypes\Post 48 58 49 59 $page->start_controls_section( … … 57 67 'exm_toggle_preview', 58 68 [ 59 'label' => __('Toggle preview', 'tma-webtools'), 69 'label' => __('Toggle highlight', 'tma-webtools'), 70 'description' => __("Highlight the elements with configured targeting!", "tma-webtools"), 60 71 'type' => \Elementor\Controls_Manager::BUTTON, 61 72 'separator' => 'before', 62 73 'button_type' => 'success', 63 'text' => __(' Preview', 'tma-webtools'),64 'event' => 'exm:editor: preview',74 'text' => __('Highlight', 'tma-webtools'), 75 'event' => 'exm:editor:highlight', 65 76 ] 66 77 ); … … 70 81 71 82 } 72 73 /**74 function handleMenuItemColor ( newValue ) {75 console.log( newValue );76 elementor.reloadPreview();77 }78 elementor.settings.page.addChangeCallback( 'menu_item_color', handleMenuItemColor );79 80 */81 82 //$tma_elementor_integration = new Elementor_Integration(); -
experience-manager/trunk/includes/modules/messages/popup-maker/class.popup-maker.php
r2192435 r2200549 55 55 } 56 56 57 $user_segments = array_map('trim', $user_segments);57 //$user_segments = array_map('trim', $user_segments); 58 58 $settings_segments = array_map('trim', $settings_segments); 59 return ShortCode_TMA_CONTENT::matching_mode_all($user_segments, $settings_segments); 59 // return ShortCode_TMA_CONTENT::matching_mode_all(ShortCode_TMA_CONTENT::array_flat($user_segments), $settings_segments); 60 return tma_exm_array_match_all($settings_segments, $user_segments); 60 61 } 61 62 -
experience-manager/trunk/includes/tma_functions.php
r2192435 r2200549 1 1 <?php 2 2 3 function tma_exm_get_user_segments ($defaultValue = []) { 3 function tma_exm_array_match_all($settings_segments, $user_segments) { 4 tma_exm_log("tma_exm_array_match_all"); 5 tma_exm_log(json_encode($settings_segments)); 6 $user_segments = TMA\ExperienceManager\ShortCode_TMA_CONTENT::array_flat($user_segments); 7 tma_exm_log(json_encode($user_segments)); 8 9 return TMA\ExperienceManager\ShortCode_TMA_CONTENT::matching_mode_all($user_segments, $settings_segments); 10 } 11 12 function tma_exm_array_match_any($settings_segments, $user_segments) { 13 tma_exm_log("tma_exm_array_match_all"); 14 tma_exm_log(json_encode($settings_segments)); 15 $user_segments = TMA\ExperienceManager\ShortCode_TMA_CONTENT::array_flat($user_segments); 16 tma_exm_log(json_encode($user_segments)); 17 18 return TMA\ExperienceManager\ShortCode_TMA_CONTENT::matching_mode_any($user_segments, $settings_segments); 19 } 20 21 function tma_exm_get_user_segments($defaultValue = []) { 4 22 $request = new TMA\ExperienceManager\TMA_Request(); 5 23 $response = $request->getSegments(\TMA\ExperienceManager\TMA_Request::getUserID()); 6 24 tma_exm_log(json_encode($response)); 7 25 if ($response !== NULL && $response !== FALSE && $response->status === "ok" && property_exists($response->user, "actionSystem")) { 8 $tma_config['user_segments'] = $response->user->actionSystem->segments; 26 // $tma_config['user_segments'] = $response->user->actionSystem->segments; 27 return $response->user->actionSystem->segments; 9 28 } 10 29 return $defaultValue; 11 12 30 } 13 31 … … 44 62 $segments = []; 45 63 46 $args = array('post_type' => \TMA\ExperienceManager\Segment\SegmentType::$TYPE, 'orderby' => 'title'); 64 $args = array( 65 'post_type' => \TMA\ExperienceManager\Segment\SegmentType::$TYPE, 66 'orderby' => 'title', 67 'post_status' => array('publish', 'pending', 'draft', 'auto-draft', 'future', 'private', 'inherit') 68 ); 47 69 $loop = new WP_Query($args); 48 70 … … 111 133 } 112 134 113 function tma_exm_is_elementor_active () { 114 return \TMA\ExperienceManager\Plugins::getInstance()->elementor() 115 && (\Elementor\Plugin::$instance->editor->is_edit_mode() || \Elementor\Plugin::$instance->preview->is_preview_mode()); 135 function tma_exm_is_elementor_active() { 136 return \TMA\ExperienceManager\Plugins::getInstance()->elementor() && (\Elementor\Plugin::$instance->editor->is_edit_mode() || \Elementor\Plugin::$instance->preview->is_preview_mode()); 116 137 } 117 138 118 139 function tma_exm_is_editor_active() { 119 if (isset($_GET['action']) && ($_GET['action'] === 'edit')) { // || $_GET['action'] === 'elementor')140 if (isset($_GET['action']) && ($_GET['action'] === 'edit')) { // || $_GET['action'] === 'elementor') 120 141 tma_exm_log("editor is active gutenberg"); 121 142 return true; … … 124 145 return true; 125 146 } 126 147 127 148 return false; 128 149 } -
experience-manager/trunk/includes/widgets/class.widget_targeting.php
r2096995 r2200549 53 53 54 54 function add_widget_form($widget, $return, $instance) { 55 tma_exm_log(json_encode($widget)); 56 tma_exm_log(json_encode($instance)); 55 57 // Display the description option. 56 58 $enable = isset($instance['tma_personalization']) ? $instance['tma_personalization'] : ''; -
experience-manager/trunk/js/experience-manager-frontend.js
r2096995 r2200549 19 19 20 20 function tma_webtools_update(segments) { 21 webtools.Frontend.update(segments.user_segments); 21 let flat_segments = segments.user_segments.map(segment => "" + segment.wpid); 22 webtools.Frontend.update(flat_segments); 22 23 } 23 24 -
experience-manager/trunk/readme.txt
r2192435 r2200549 3 3 Tags: digital experience platform, experience manager, targeting, analytics, tracking, product targeting, behaviour targets 4 4 Requires at least: 4.4.1 5 Tested up to: 5. 2.26 Stable tag: 2. 1.05 Tested up to: 5.3 6 Stable tag: 2.2.0 7 7 License: GPLv2 or later 8 8 … … 63 63 64 64 == Changelog == 65 66 2.2.0 67 * Add highlighting of widgets with configured targeting to elementor 68 * Segment editor publish-save-order issue fixed 69 * Javascript for updating segments fixed 70 * Widget Targeting removed due to bug 65 71 66 72 2.1.0
Note: See TracChangeset
for help on using the changeset viewer.