This repository has been archived on 2026-10-23. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
aktiv-web/wp-content/themes/aktiv2014/app/scripts/main.js
T

256 lines
8.5 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
'use strict';
/*global moment, jQuery, document, _, $, window */
var program_endpoint = 'https://studentersamfundet.no/api/events/get_today/';
var inside_url = 'https://inside.studentersamfundet.no';
var inside_groups_url = inside_url + '/api/groups.php';
var user_search_endpoint = '/inside-api/';
var query_params = {
//meta_key: '_neuf_events_starttime',
//meta_value: moment().add('days', 1).format('X'),
//meta_compare: '<='
//count: 10
};
function getParameterByName(name) {
name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
var regex = new RegExp('[\\?&]' + name + '=([^&#]*)'),
results = regex.exec(location.search);
return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
}
function format_posts(posts) {
var html = '';
var i=0;
//var stylesheet_dir = jQuery('meta[name=x-stylesheet-directory]').attr('content');
if(posts.length === 0) {
return 'Idag er det stille på huset :-/';
}
for(i=0; i< posts.length; i++) {
var post = posts[i];
html += '<li class="fadein">';
html += '<span class="entry-starttime">'+ moment.unix(post.custom_fields._neuf_events_starttime).utc().format('HH.mm') +'</span>: ';
html += '<a href="'+ post.url +'">'+ post.title +'</a>';
html += ' <span class="entry-venue">'+ post.custom_fields._neuf_events_venue +'</span>';
html += '</li>';
}
return html;
}
function format_results(data) {
var header_template = '<table><thead><tr><th>Navn</th><th>Brukernavn</th><th>Epost</th><th>Telefon</th><th>Har medlemskap</th><th>Grupper</th></tr></thead>';
if(data.error) {
console.log(data.error);
$('.search-result-list').html('');
$('.search-results .meta').html('');
return;
}
if(data.meta.num_results === 0) {
$('.search-result-list').html('Uffda, ingen treff.');
$('.search-results .meta').html('');
return;
}
var list = '<tbody><% _.each(results, function(u) { %>' +
'<tr>' +
'<td><a href="'+ inside_url +'/?page=display-user&userid=<%= u.id %>"><%= u.firstname %> <%= u.lastname %></a></td>' +
'<td><%= u.username %></td>' +
'<td><a href="mailto:<%= u.email %>"><%= u.email %></a></td>' +
'<td><a href="tlf:<%= u.number %>"><%= u.number %></a></td>' +
'<td><% if(u.is_member != 0) { %>Ja<% } else { %>Nei<% } %></td>' +
'<td class="groups"><% _.each(u.groups, function(g, i) { %><%= g.name %><% if(u.groups.length !== i +1){ %>, <% } %><% }); %></td>'+
'</tr> <% }); %>' +
'</tbody></table>';
var html = header_template + _.template(list, data);
$('.search-result-list').html(html);
var search_meta = 'Antall treff: <%= meta.num_results %>';
$('.search-results .meta').html(_.template(search_meta, data));
}
function do_search() {
var validMembershipToggle = $('.filters [data-search-filter="has_valid_membership"]');
var groupString = '';
var groupSelect = $('.groups-select').val();
if( groupSelect !== null) {
groupString = groupSelect.join();
}
var params = {
q: $('.search-field').val(),
filter_groups: groupString,
};
if(validMembershipToggle.hasClass('active')) {
params.has_valid_membership = true;
}
var querystring = $.param(params);
window.History.pushState(null, null, '?'+querystring);
params._wpnonce = $('meta[name=x-inside-api-nonce]').attr('content');
$.getJSON(
user_search_endpoint,
params,
format_results
);
}
function load_initial_values() {
var param_set = false;
var q = getParameterByName('q');
if(q && q.length > 0) {
$('.search-field').val(q);
param_set = true;
}
var hvm = getParameterByName('has_valid_membership');
if(hvm && hvm === 'true') {
$('.filters [data-search-filter="has_valid_membership"]').addClass('active');
param_set = true;
}
var fg = getParameterByName('filter_groups');
var groups = [];
if(fg && fg.length > 0) {
if( fg.indexOf(',') !== -1 ) {
// has comma
groups = fg.split(',');
} else {
groups = [fg];
}
// is every group numeric?
var has_invalid_group = false;
var i=0;
for(i=0; i<groups.length; i++) {
var g = groups[i];
if( !$.isNumeric(g) ) {
has_invalid_group = true;
}
}
if(!has_invalid_group) {
param_set = true;
$('.groups-select').val(groups);
$('.groups-select').trigger('chosen:updated');
}
}
if(param_set) {
do_search();
}
}
jQuery(document).ready(function() {
moment.lang('nb');
var $ = jQuery;
/* Menu toggle */
$('#menu .menu-toggle').on('click', function(e) {
e.preventDefault();
// add open css class
var menu = $('#menu .main-menu, #menu .user-menu-wrap');
menu.toggleClass('visible');
});
/* User Menu toggle */
$('#menu a.profile-badge').on('click', function(e) {
e.preventDefault();
// add open css class
var menu = $('#menu .user-menu');
menu.toggleClass('visible');
});
$('[data-toggle-introduction]').on('click', function() {
$(this).parent().fadeOut(600);
$.cookie('introduction-dismissed', '1');
});
if( $.cookie('introduction-dismissed') !== '1' ) {
$('.introduction').show();
$('.introduction').addClass('fadein');
}
/* Program */
var program_entrypoint = '.program-list';
if( $(program_entrypoint).length ) {
/* */
$.getJSON(
program_endpoint+'?callback=?',
query_params,
function(data) {
if(data && data.events) {
// render template
var html = format_posts(data.events);
$(program_entrypoint).html(html);
}
}
);
}
/* Search page */
if( $('.search-form').length ) {
$.getJSON(inside_groups_url, function(data) {
// create select fields
var list = '<select multiple class="groups-select" data-placeholder="Velg en gruppe..."><option value=""></option><% _.each(results, function(g) { %>' +
'<option value="<%=g.group_id %>"><%= g.group_name %></option>' +
'<% }); %></select>';
var html = _.template(list, data);
$('.groups-select-wrap').html(html);
// run chosen
$('.groups-select').chosen({
no_results_text: 'Uffda, ingen treff!',
allow_single_deselect: true
}).change(function() {
do_search();
});
/* Load intial values from url query */
load_initial_values();
});
$('.search-field').on('keyup keypress', function(e) {
// No <enter>
if (e.keyCode === 10 || e.keyCode === 13) {
e.preventDefault();
}
});
$('.search-field').on('keyup keypress', _.debounce(function() {
do_search();
}, 300));
/* Toggles */
$('.roles a').on('click', function(e) {
e.preventDefault();
$(this).toggleClass('active');
do_search();
});
}
if( $('.profile').length ) {
var params = {
q: $('meta[name=x-username]').attr('content'),
exact: true,
_wpnonce: $('meta[name=x-inside-api-nonce]').attr('content')
};
$.getJSON(
user_search_endpoint,
params,
function(data) {
if(data.results.length === 1) {
var u = data.results[0];
console.log(u);
var group_html = '';
for(var i=0;i<u.groups.length; i++) {
group_html += '<li>' + u.groups[i].name + '</li>';
}
$('.group-list').html(group_html);
var is_member_field = $('.is-member');
if(u.is_member === '1') {
is_member_field.html('Gyldig medlemskap.');
} else {
is_member_field.html('Du har ikke et gyldig medlemskap. Du kan forny medlemskapet ditt via SMS, via <a href="http://snapporder.com">SnappOrder</a> eller via nettbutikken i <a href="https://inside.studentersamfundet.no">Inside</a>.');
}
}
});
}
});