var n_permission = { wait_with_reload: false, checkReload: function() { if ( this.wait_with_reload ) { nw.openWaiting(); location.reload(); } }, isATag: function( el ) { return ( el.nodeName.toLowerCase() == "a" ) ? el : false; }, isForm: function( el ) { if ( el.nodeName.toLowerCase() == "form" ) { return el; } else if ( el.form ) { return el.form; } return false; }, setAlertbuttonToReload: function() { if ( !this.wait_with_reload ) { return true; } alert_lightbox.hideAlertDialog = function() { indicator.showIndicator( "alert_dialog" ); location.reload(); return false; } } } var n_permission_lb = { join_form_id: null, lightbox: null, redirect_url: "", source_el: null, onReady: null, /** * adds permission lightbox to links * @param {Object} linktype * @param {Object} redirect_url * @param {Object} contenttype * @returns true if has permission */ hasPermission: function( linktype, redirect_url, contenttype ) { var e = Event.getEvent(); var el = Event.getTarget(e); this.source_el = el; this.onReady = null; this.redirect_url = redirect_url; var clublightbox = "permissionlightbox_" + linktype; var redirect_linktype = Dom.get( "permissionlightbox_redirect_" + linktype ); var url; if ( redirect_linktype ) { redirect_linktype.value = redirect_url; } if ( Dom.get( clublightbox ) ) { this.clublightbox = Dom.get( clublightbox ); n_permission.wait_with_reload = false; nw.openLight( clublightbox ); this.lightbox = custom_lightbox.act_dialog; return false; } else { return true; } }, //join join: function() { indicator.showIndicator( n_permission_lb.lightbox.id ); nw.ajax( Dom.get( this.join_form_id ).action, this.joinCallback, Dom.get( this.join_form_id ).method ); }, joinCallback: { success: function( o ) { indicator.hideIndicator(); n_permission_lb.lightbox.hide(); n_permission_lb.lightbox.destroy(); try { eval( "var error_response = " + o.getResponseHeader['Errormsg'] ); } catch(e) { } //join failed you're already a member of the club if ( error_response ) { n_permission_lb.succeed( error_response ); return true; } try { eval( "var success_response = " + o.getResponseHeader['Successmsg'] ); } catch(e) { } //if join was success and there are no join questions if ( success_response ) { n_permission_lb.succeed( success_response ); return true; } //if join was success and there are join questions ajax_lightbox.onReady = function() { ajax_lightbox.ajax_dialog.center(); var mask_height = parseInt( Dom.getStyle( Dom.get( "ajax_dialog_mask" ), "height" ) ); var document_height = Dom.getDocumentHeight(); if ( document_height > mask_height ) { Dom.setStyle( Dom.get( "ajax_dialog_mask" ), "height", ( document_height + 30 ) + "px" ) } ajax_lightbox.onReady = function(){} } ajax_lightbox.dialog_config = { fixedcenter: false, constraintoviewport: true } ajax_lightbox.ajax_wrap = Dom.get( "ajax_wrap" ); ajax_lightbox.showCallback.success( o ); Dom.get( "joinform_cancel" ).onclick = function() { indicator.showIndicator( "ajax_dialog" ); location.reload(); } }, failure: function() { indicator.hideIndicator(); } }, //login ajax_login: null, /** * handles login in lightbox * @param {Object} linktype use to get joinform id * @param {Object} id_prefix use to get joinform id * @param {Object} form_el form to send */ login: function( linktype, id_prefix, form_el ) { if ( Dom.get( id_prefix + "_jointheclub_" + linktype ) ) { n_permission_lb.join_form_id = id_prefix + "_jointheclub_" + linktype; } else { n_permission_lb.join_form_id = null; } n_permission_lb.ajax_login = new n_ajax_class( "", n_permission_lb.lightbox.id, n_permission_lb.loginCallback ); n_permission_lb.ajax_login.sendForm( n_permission_lb, form_el ); return true; }, loginCallback: function( o ) { if ( !this.ajax_login.json_response ) { return false; } //handle invalid user email if ( this.ajax_login.json_response.type == 2 ) { if ( !Dom.get( "invaliduser_holder" ) ) { var invaliduser_holder_el = document.createElement( "div" ); invaliduser_holder_el.id= "invaliduser_holder"; document.body.appendChild( invaliduser_holder_el ); invaliduser_holder_el.innerHTML = this.ajax_login.json_response.message; } nw.openLight( "invaliduser_dialog" ); return false; } if ( this.join_form_id ) { this.join(); return true; } this.succeedCore(); return true; }, //common /** * adds permission lightbox to links * @param {Object} linktype * @param {Object} redirect_url * @param {Object} contenttype * @param {Object} onReadyFunc * @param {Boolean} wait_with_reload if set to true waits with page reload */ run: function( linktype, redirect_url, contenttype, onReadyFunc, wait_with_reload ) { var e = Event.getEvent(); var el = Event.getTarget(e); this.source_el = el; this.onReady = onReadyFunc || null; this.redirect_url = redirect_url; var clublightbox = "permissionlightbox_" + linktype; var redirect_linktype = Dom.get( "permissionlightbox_redirect_" + linktype ); var url; if ( redirect_linktype ) { redirect_linktype.value = redirect_url; } if ( Dom.get( clublightbox ) ) { this.clublightbox = Dom.get( clublightbox ); n_permission.wait_with_reload = wait_with_reload || false; this.measure( linktype ); this.lightbox = custom_lightbox.act_dialog; //redirect to club frontpage if ( Dom.get( "permissionlightbox_redirecturl_" + linktype ) ) { location.href = Dom.get( "permissionlightbox_redirecturl_" + linktype ).value; return false; } else { /* open login window for every 5th click */ var cookie_name = 'clickcount', clickcount; function getCookie(cname) { var name = cname + "="; var ca = document.cookie.split(';'); for(var i=0; i 2) { /*document.cookie="clickcount=1;domain=."+domain+";path=/";*/ } else { document.cookie="clickcount="+clickcount+";domain=."+domain+";path=/"; return true; }; }; /* // */ nw.openLight( clublightbox ); document.cookie="clickcount=1;domain=."+domain+";path=/"; this.lightbox = custom_lightbox.act_dialog; return false; } } else { if ( onReadyFunc ) { //if tag name is a, and there is code to run if ( el.nodeName.toLowerCase() == "a" ) { if ( onReadyFunc.call( el ) !== false ) { location.href = el.href; } return false; } else if ( el.nodeName.toLowerCase() == "form" ) { if ( this.onReady.call( el ) !== false ) { el.submit(); } return false; } else if ( el.nodeName.toLowerCase() == "input" && el.type == "button" ) { el.onclick = this.onReady; el.onclick(); return false; } else if ( el.form ) { el.form.onsubmit = this.onReady; if ( el.form.onsubmit() ) { el.form.submit(); } return false; } else { return false; } } return true; } }, succeed: function( msg ) { nw.alert( msg ); alert_lightbox.hideAlertDialog = function() { alert_lightbox.hideAlertDialog = function() { alert_lightbox.alert_dialog.hide(); } n_permission_lb.succeedCore( alert_lightbox.alert_dialog ); } }, succeedCore: function( dialog ) { if ( dialog ) { indicator.showIndicator( dialog.id ); } else { nw.openWaiting(); } var is_a = false; var is_form = false; var el = null; if ( n_permission.isATag( n_permission_lb.source_el ) ) { is_a = true; el = n_permission.isATag( n_permission_lb.source_el ); } else if ( n_permission.isForm( n_permission_lb.source_el ) ) { is_form = true; el = n_permission.isForm( n_permission_lb.source_el ); } var redirect = n_permission_lb.redirect_url; var onReady = n_permission_lb.onReady; var wait = n_permission.wait_with_reload; if ( redirect && !onReady ) { location.href = redirect; return true; } else if ( onReady && wait ) { indicator.hideIndicator(); if ( dialog ) { dialog.hide(); } nw.hideWaiting(); //n_permission_lb.lightbox.hide(); //n_permission_lb.lightbox.destroy(); n_permission_lb.clublightbox.parentNode.removeChild( n_permission_lb.clublightbox ); if ( is_a ) { if ( n_permission_lb.onReady.call( el ) !== false ) { location.href = el.href; } return false; } else if ( is_form ) { if ( n_permission_lb.onReady.call( el ) !== false ) { el.submit(); } return false; } return true; } else { location.reload(); return false; } }, //initial checkInitialPermission: function() { var is_hash = location.href.indexOf( "#auth" ) != -1; if ( is_hash ) { this.showFrontendLight(); } return true; }, showFrontendLight: function() { //console.log( "megjelenik a lightbox" ); nw.openLight( "permissionlightbox_restricted_content" ); this.lightbox = custom_lightbox.act_dialog; return true; }, //measure ajax_measure: null, measure: function( linktype) { if ( !Dom.get( "permissionlightbox_measure_" + linktype ) ) { return false; } var url = Dom.get( "permissionlightbox_measure_" + linktype ).value; //already measured if ( this.ajax_measure ) { return true; } this.ajax_measure = new n_ajax_class( url, "", this.measureCallback ); this.ajax_measure.indicator_is_disabled = true; this.ajax_measure.send(); return true; }, measureCallback: function( o ) { //do nothing return true; } } //script hiányzó permissionok teszteléséhez: /* var a = $("a"); for ( i = 0; i< a.length; i++ ) { var act_a = a[i]; var act_arr = [ act_a.onclick, act_a ]; if ( !act_a.onclick ) { console.log( act_a ); continue; } if ( act_a.onclick.toString().indexOf("permission") == -1 ) { console.log( act_a ); } } */