From b899cda7eabecaba15de282dcbecaf3473579844 Mon Sep 17 00:00:00 2001 From: Nikolai Kristiansen Date: Thu, 4 Sep 2014 10:24:28 +0200 Subject: [PATCH] Fixes dismiss dialog, now uses localstorage and db --- .../themes/aktiv2014/app/scripts/main.js | 58 ++++++++++++------- .../aktiv2014/dist/images/icon-menu.svg | 2 +- .../themes/aktiv2014/dist/scripts/main.js | 2 +- wp-content/themes/aktiv2014/functions.php | 14 ++--- wp-content/themes/aktiv2014/gulpfile.js | 20 +------ 5 files changed, 49 insertions(+), 47 deletions(-) diff --git a/wp-content/themes/aktiv2014/app/scripts/main.js b/wp-content/themes/aktiv2014/app/scripts/main.js index b90d21d..ac45cae 100644 --- a/wp-content/themes/aktiv2014/app/scripts/main.js +++ b/wp-content/themes/aktiv2014/app/scripts/main.js @@ -138,39 +138,55 @@ function load_initial_values() { } } function save_user_meta(key, value) { - console.log(key, value); + /* set localstorage first, then update database with usermeta key and value */ + try { + localStorage.setItem(key, value); + } catch(err) { /* do nothing */ } + var url = $('meta[name=x-siteurl]').attr('content') + '/wp-admin/admin-ajax.php'; var params = { action: 'neuf_save_user_meta', meta_key: key, meta_value: value, unique: true, - user_id: $('meta[name=x-user-id]').attr('content'), + user_id: parseInt($('meta[name=x-user-id]').attr('content'), 10), _wpnonce: $('meta[name=x-user-meta-nonce]').attr('content') }; - $.post(url, params, function() { - localStorage.setItem(key, value); + + $.post(url, params, function(data) { + console.log(data); }); - } - function get_user_meta(key, callback) { - // TODO you are here +} + +function get_user_meta(key, callback) { + /* Check localstorage first, then database for usermeta key */ try { var value = localStorage.getItem(key); - callback({result:value}); - return; - } catch(err) { - console.log('no '+ key); - } + if(value !== null) { + callback({result:value}); + return; + } + } catch(err) { /* Do nothing */ } + var url = $('meta[name=x-siteurl]').attr('content') + '/wp-admin/admin-ajax.php'; var params = { action: 'neuf_get_user_meta', meta_key: key, single: true, - user_id: $('meta[name=x-user-id]').attr('content'), + user_id: parseInt($('meta[name=x-user-id]').attr('content'), 10), _wpnonce: $('meta[name=x-user-meta-nonce]').attr('content') }; - $.get(url, params, callback); - } + $.getJSON(url, params, function(data) { + // Update localstorage if it's set + if(data.hasOwnProperty('result') && data.result !== '') { + try { + localStorage.setItem(key, data.result); + } catch(err) { /* do nothing */ } + } + // continue + callback(data); + }); +} jQuery(document).ready(function() { moment.lang('nb'); @@ -192,24 +208,25 @@ jQuery(document).ready(function() { var menu = $('#menu .user-menu'); menu.toggleClass('visible'); }); + /* User intro dismiss and save */ $('[data-toggle-introduction]').on('click', function() { - //$(this).parent().fadeOut(600); + $(this).parent().fadeOut(600); save_user_meta('introduction_dismissed', true); }); - if( $('.introduction').length ) { + if( $('.front-page .introduction').length ) { get_user_meta('introduction_dismissed', function(data) { if(data.hasOwnProperty('result') && data.result !== 'true') { $('.introduction').show(); $('.introduction').addClass('fadein'); } - }); + }); } - /* Program */ + /* Program page */ var program_entrypoint = '.program-list'; if( $(program_entrypoint).length ) { - /* */ + /* Load program */ $.getJSON( program_endpoint+'?callback=?', query_params, @@ -223,7 +240,6 @@ jQuery(document).ready(function() { ); } - /* Search page */ if( $('.search-form').length ) { $.getJSON(inside_groups_url, function(data) { diff --git a/wp-content/themes/aktiv2014/dist/images/icon-menu.svg b/wp-content/themes/aktiv2014/dist/images/icon-menu.svg index fe5bf2d..69bbae3 100644 --- a/wp-content/themes/aktiv2014/dist/images/icon-menu.svg +++ b/wp-content/themes/aktiv2014/dist/images/icon-menu.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/wp-content/themes/aktiv2014/dist/scripts/main.js b/wp-content/themes/aktiv2014/dist/scripts/main.js index 2174cf8..22e7b48 100644 --- a/wp-content/themes/aktiv2014/dist/scripts/main.js +++ b/wp-content/themes/aktiv2014/dist/scripts/main.js @@ -1 +1 @@ -"use strict";function getParameterByName(e){e=e.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var t=new RegExp("[\\?&]"+e+"=([^&#]*)"),a=t.exec(location.search);return null===a?"":decodeURIComponent(a[1].replace(/\+/g," "))}function format_posts(e){var t="",a=0;if(0===e.length)return"Idag er det stille på huset :-/";for(a=0;a',t+=''+moment.unix(r.custom_fields._neuf_events_starttime).utc().format("HH.mm")+": ",t+=''+r.title+"",t+=' '+r.custom_fields._neuf_events_venue+"",t+=""}return t}function format_results(e){var t="";if(e.error)return console.log(e.error),$(".search-result-list").html(""),void $(".search-results .meta").html("");if(0===e.meta.num_results)return $(".search-result-list").html("Uffda, ingen treff."),void $(".search-results .meta").html("");var a='<% _.each(results, function(u) { %> <% }); %>
NavnBrukernavnEpostTelefonHar medlemskapGrupper
<%= u.firstname %> <%= u.lastname %><%= u.username %><%= u.email %><%= u.number %><% if(u.is_member != 0) { %>Ja<% } else { %>Nei<% } %><% _.each(u.groups, function(g, i) { %><%= g.name %><% if(u.groups.length !== i +1){ %>, <% } %><% }); %>
',r=t+_.template(a,e);$(".search-result-list").html(r);var n="Antall treff: <%= meta.num_results %>";$(".search-results .meta").html(_.template(n,e))}function do_search(){var e=$('.filters [data-search-filter="has_valid_membership"]'),t="",a=$(".groups-select").val();null!==a&&(t=a.join());var r={q:$(".search-field").val(),filter_groups:t};e.hasClass("active")&&(r.has_valid_membership=!0);var n=$.param(r);window.History.pushState(null,null,"?"+n),r._wpnonce=$("meta[name=x-inside-api-nonce]").attr("content"),$.getJSON(user_search_endpoint,r,format_results)}function load_initial_values(){var e=!1,t=getParameterByName("q");t&&t.length>0&&($(".search-field").val(t),e=!0);var a=getParameterByName("has_valid_membership");a&&"true"===a&&($('.filters [data-search-filter="has_valid_membership"]').addClass("active"),e=!0);var r=getParameterByName("filter_groups"),n=[];if(r&&r.length>0){n=-1!==r.indexOf(",")?r.split(","):[r];var s=!1,i=0;for(i=0;i"+a.groups[n].name+"";e(".group-list").html(r);var s=e(".is-member");s.html("1"===a.is_member?"Gyldig medlemskap.":'Du har ikke et gyldig medlemskap. Du kan forny medlemskapet ditt via SMS, via SnappOrder eller via nettbutikken i Inside.')}}),a.q=e(".profile-details .user-email").text(),a.inherited=!0,e.getJSON(email_search_endpoint,a,function(t){var r='<% _.each(results, function(r) { %>
  • <%= r.name %>
  • <% }); %>',n=_.template(r,t);e(".account-details .email-list").html(n),a.inherited&&(t.results=t.inherited_results,n=_.template(r,t),e(".account-details .email-list-inherited").html(n))})}}); \ No newline at end of file +"use strict";function getParameterByName(e){e=e.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var t=new RegExp("[\\?&]"+e+"=([^&#]*)"),a=t.exec(location.search);return null===a?"":decodeURIComponent(a[1].replace(/\+/g," "))}function format_posts(e){var t="",a=0;if(0===e.length)return"Idag er det stille på huset :-/";for(a=0;a',t+=''+moment.unix(r.custom_fields._neuf_events_starttime).utc().format("HH.mm")+": ",t+=''+r.title+"",t+=' '+r.custom_fields._neuf_events_venue+"",t+=""}return t}function format_results(e){var t="";if(e.error)return console.log(e.error),$(".search-result-list").html(""),void $(".search-results .meta").html("");if(0===e.meta.num_results)return $(".search-result-list").html("Uffda, ingen treff."),void $(".search-results .meta").html("");var a='<% _.each(results, function(u) { %> <% }); %>
    NavnBrukernavnEpostTelefonHar medlemskapGrupper
    <%= u.firstname %> <%= u.lastname %><%= u.username %><%= u.email %><%= u.number %><% if(u.is_member != 0) { %>Ja<% } else { %>Nei<% } %><% _.each(u.groups, function(g, i) { %><%= g.name %><% if(u.groups.length !== i +1){ %>, <% } %><% }); %>
    ',r=t+_.template(a,e);$(".search-result-list").html(r);var n="Antall treff: <%= meta.num_results %>";$(".search-results .meta").html(_.template(n,e))}function do_search(){var e=$('.filters [data-search-filter="has_valid_membership"]'),t="",a=$(".groups-select").val();null!==a&&(t=a.join());var r={q:$(".search-field").val(),filter_groups:t};e.hasClass("active")&&(r.has_valid_membership=!0);var n=$.param(r);window.History.pushState(null,null,"?"+n),r._wpnonce=$("meta[name=x-inside-api-nonce]").attr("content"),$.getJSON(user_search_endpoint,r,format_results)}function load_initial_values(){var e=!1,t=getParameterByName("q");t&&t.length>0&&($(".search-field").val(t),e=!0);var a=getParameterByName("has_valid_membership");a&&"true"===a&&($('.filters [data-search-filter="has_valid_membership"]').addClass("active"),e=!0);var r=getParameterByName("filter_groups"),n=[];if(r&&r.length>0){n=-1!==r.indexOf(",")?r.split(","):[r];var s=!1,i=0;for(i=0;i"+a.groups[n].name+"";e(".group-list").html(r);var s=e(".is-member");s.html("1"===a.is_member?"Gyldig medlemskap.":'Du har ikke et gyldig medlemskap. Du kan forny medlemskapet ditt via SMS, via SnappOrder eller via nettbutikken i Inside.')}}),a.q=e(".profile-details .user-email").text(),a.inherited=!0,e.getJSON(email_search_endpoint,a,function(t){var r='<% _.each(results, function(r) { %>
  • <%= r.name %>
  • <% }); %>',n=_.template(r,t);e(".account-details .email-list").html(n),a.inherited&&(t.results=t.inherited_results,n=_.template(r,t),e(".account-details .email-list-inherited").html(n))})}}); \ No newline at end of file diff --git a/wp-content/themes/aktiv2014/functions.php b/wp-content/themes/aktiv2014/functions.php index 86162c9..c8d6c5c 100644 --- a/wp-content/themes/aktiv2014/functions.php +++ b/wp-content/themes/aktiv2014/functions.php @@ -414,13 +414,13 @@ add_filter( 'excerpt_more', 'neuf_excerpt_more' ); function neuf_save_user_meta() { global $wpdb; - $user_id = (int) $_POST['user_id']; // TODO: sanitize + $user_id = (int) $_POST['user_id']; $meta_key = $_POST['meta_key']; // TODO: sanitize $meta_value = $_POST['meta_value']; // TODO: sanitize $unique = (bool) $_POST['unique']; if( !get_userdata($user_id) ) { - die(json_encode(array('error' => 'Invalid user_id'.$_POST['user_id']))); + die(json_encode(array('error' => 'Invalid user_id: \''. $_POST['user_id'] .'\''))); } if( !is_user_logged_in() ) { die(json_encode(array('error' => 'Log in first'))); @@ -443,18 +443,18 @@ function neuf_save_user_meta() { function neuf_get_user_meta() { global $wpdb; - $user_id = (int) $_POST['user_id']; // TODO: sanitize - $meta_key = $_POST['meta_key']; // TODO: sanitize - $single = (bool) $_POST['single']; // TODO: sanitize + $user_id = (int) $_GET['user_id']; + $meta_key = $_GET['meta_key']; // TODO: sanitize + $single = (bool) $_GET['single']; if( !get_userdata($user_id) ) { - die(json_encode(array('error' => 'Invalid user_id'.$_POST['user_id']))); + die(json_encode(array('error' => 'Invalid user_id: \''. $_GET['user_id'] .'\''))); } if( !is_user_logged_in() ) { die(json_encode(array('error' => 'Log in first'))); } - if( !wp_verify_nonce( $_POST['_wpnonce'], 'user-meta' ) ) { + if( !wp_verify_nonce( $_GET['_wpnonce'], 'user-meta' ) ) { die(json_encode(array('error' => 'Invalid nonce'))); } diff --git a/wp-content/themes/aktiv2014/gulpfile.js b/wp-content/themes/aktiv2014/gulpfile.js index 18efa69..d9848fa 100644 --- a/wp-content/themes/aktiv2014/gulpfile.js +++ b/wp-content/themes/aktiv2014/gulpfile.js @@ -6,30 +6,16 @@ var gulp = require('gulp'); // load plugins var $ = require('gulp-load-plugins')(); -var gutil = require('gulp-util'); var bowerFiles = require('main-bower-files'); -var onError = function (err) { - gutil.beep(); - gutil.log( gutil.colors.red(err)); -}; - -//gulp.task('components', function() { -// return gulp.src(['app/bower_components/chosen-bower/chosen.css']) -// .pipe($.rename('_chosen.scss')) -// .pipe(gulp.dest('app/styles')); -//}); - gulp.task('styles', function () { return gulp.src('app/styles/main.scss') - //.pipe($.plumber(onError)) .pipe($.sass({ includePaths: ['app/bower_components/foundation/scss'], - errLogToConsole: true, - sourceComments: 'map' + errLogToConsole: true +// sourceComments: 'map' // TODO does not work yet })) - //.pipe($.autoprefixer('last 1 version')) - .pipe($.plumber.stop()) + .pipe($.autoprefixer('last 1 version')) .pipe(gulp.dest('dist/styles')) .pipe($.size()); });