Skip to content
Snippets Groups Projects
Select Git revision
  • b16cabaa775c8bb44af1fe27f9b3bb87402b58bd
  • master default protected
  • forbid-save-as
  • upload-via-token
  • moodle-integration
  • patch-double-tap-seek
  • patch_datum_anzeigen
  • patch_raum_anzeigen
  • intros
  • live_sources
  • bootstrap4
  • modules
12 results

moderator.js

Blame
  • Forked from Video AG Infrastruktur / website
    715 commits behind the upstream repository.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    moderator.js 7.37 KiB
    var moderator = {
    	api: {
    		init: function () {
    
    		},
    		set: function(path,value,reload) {
    			var req = {};
    			req[path] = value;
    			moderator.api.set_multi(req,reload)
    		},
    		set_multi: function(dict,reload) {
    			$.ajax({
    				method: "POST",
    				url: "/edit",
    				dataType: "text",
    				contentType: "application/json",
    				data: JSON.stringify(dict),
    				success: function () {
    					if (reload) {
    						window.location.reload();
    					}
    				}
    			});
    		},
    		add_new: function(value,type,reload) {
    			$.ajax({
    				method: "POST",
    				url: "/new/"+type,
    				dataType: "text",
    				contentType: "application/json",
    				data: JSON.stringify(value),
    				success: function () {
    					if (reload) {
    						window.location.reload();
    					}
    				}
    			})
    		},
    		gethttp: function (url){
    			$.ajax({
    				method: "GET",
    				url: url,
    				dataType: "text",
    			})
    		}
    	},
    	editor: {
    		init: function() {
    			var editable = $('.moderator_editor');
    			for (var i=0; i<editable.length; i++) {
    				var e = $(editable[i]);
    				$('.moderator_editor_sign',e).popover(
    					{
    						title: e.data('path'),
    						html: true,
    						trigger: 'click',
    						container: 'body',
    						content: function() {
    							return '<div class="row form-group">'+
    									'<span class="col-xs-12">'+
    										'<textarea class="form-control editor_value" rows="3" data-path="'+$(this.parentElement).data('path')+'">'+this.parentElement.getElementsByClassName('moderator_editor_value')[0].innerHTML+'</textarea>'+
    									'</span>'+
    									'<span class="col-xs-12">'+
    										'<input class="btn btn-default pull-right" type="submit" data-path="'+$(this.parentElement).data('path')+'" value="save" onClick="moderator.editor.editbtnclick(this)">'+
    									'</span>'+
    								'</div>';
    						}
    					}		
    				);
    			}
    		},
    		editbtnclick: function (src) {
    			var path  = $($(src)[0]).data('path');
    			var value = $('.editor_value',src.parentElement.parentElement).val();
    
    			var editable = $('.moderator_editor');
    			for (var i=0; i<editable.length; i++) {
    				var e = $(editable[i]);
    
    				if (e.data('path') == path) {
    					$('.moderator_editor_sign',e).click();
    					$(".moderator_editor_value",e).html(value);
    				}
    			}
    			moderator.api.set(path,value);
    		},
    		changeboxclick: function(src) {
    			var value = $(src)[0].checked;
    			var path = $(src).data('path');
    			moderator.api.set(path,value ? 1 : 0);
    		},
    		deletebtnclick: function(src) {
    			if (confirm('Realy delete this?')) { 
    				moderator.api.set($(src).data('path'),1,true); 
    			}
    		},
    		hintchapterclick: function(src) {
    			$.ajax({
    				method: "GET",
    				url: $(src).data('url'),
    				data: $(src).serialize(),
    				success: function(data)
    				{
    					alert("Kapitelmarker vorgeschlagen. Danke!");
    				}
    			});
    			return false;
    		}
    	},
    	permissioneditor: {
    		permissions: [],
    		setpermissions: function(value) {
    			var idlist = [];
    			for (i in value) {
    				if (idlist.indexOf(value[i]['id']) == -1) {
    					idlist[idlist.length] = value[i]['id'];
    					moderator.permissioneditor.permissions[moderator.permissioneditor.permissions.length] = value[i];
    				}
    			}
    		},
    		init: function () {
    			$('.modmoderator_permissioneditor').popover(
    				{
    					title: "Zugriffsrechte",
    					html: true,
    					placement: "left",
    					trigger: 'click',
    					container: 'body',
    					content: function () {
    						var html = '';
    						var id = $(this).data('id');
    						var type = $(this).data('type');
    						html += '<div width="300px" class="row" data-id="'+id+'" data-type="'+type+'">'; 
    						html += '<select onchange="moderator.permissioneditor.selectpermission(this)" size="6" class="col-xs-12 permissionlist">';
    						var idlist = [];
    						for (i in moderator.permissioneditor.permissions) {
    							if ((moderator.permissioneditor.permissions[i][type+'_id'] == id)) {
    								var perm = {};
    								perm.type = moderator.permissioneditor.permissions[i]['type'];
    								perm.param1 = moderator.permissioneditor.permissions[i]['param1'];
    								perm.param2 = moderator.permissioneditor.permissions[i]['param2'];
    								perm.id = moderator.permissioneditor.permissions[i]['id'];
    								idlist[idlist.length] = perm.id;
    
    								permstring = '';
    								switch (perm.type) {
    									case 'password':
    										permstring = '("'+perm.param1+'":"'+perm.param2+'")'
    										break;
    									case 'public':
    										permstring = '';
    										break;
    									case 'rwth':
    										permstring = '(rwth intern)'
    										break;
    									case 'l2p':
    										permstring = '(' + perm.param1 + ')'
    										break;
    								}
    								html += '<option data-auth_id="'+perm.id+'">#'+perm.id+' '+perm.type+' '+ permstring +'</option>';
    							}
    						}
    						html += '</select>';
    						html += '<select class="col-xs-12 authtype" onchange="moderator.permissioneditor.typechange(this)">';
    							html += '<option value="public">Öffentlich</option>';
    							html += '<option selected value="password">Password</option>';
    							html += '<option value="rwth">RWTH intern</option>';
    							html += '<option value="l2p">L2P Lernraum</option>';
    						html += '</select>';
    						html += '<input class="col-xs-12 passwordinput authuser" type="text" placeholder="Benutzername">';
    						html += '<input class="col-xs-12 passwordinput authpassword" type="text" placeholder="Passwort">';
    						html += '<input class="col-xs-12 authl2p" type="text" placeholder="Lernraum" style="display: none;">';
    						html += '<button class="col-xs-6" onclick="moderator.permissioneditor.addbtnclick(this)">Add</button>';
    						//html += '<button class="col-xs-4" onclick="moderator.permissionedior.updatebtnclick(this)">Update</button>';
    						html += '<button class="col-xs-6" onclick="moderator.permissioneditor.delbtnclick(this)">Delete</button>';
    						html += '</div>';
    						return html;
    					}
    				}		
    			);
    		},
    		selectpermission: function (element) {
    
    		},
    		delbtnclick: function (element) {
    			moderator.api.set("perm."+$(".permissionlist  option:selected", element.parentElement).data('auth_id')+".deleted",1,true);
    		},
    		addbtnclick: function (element) {
    			var perm = {};
    			perm.type = $(".authtype", element.parentElement).val();
    			switch(perm.type) {
    				case 'password':
    					perm.param1 = $(".authuser", element.parentElement).val();
    					perm.param2 = $(".authpassword", element.parentElement).val();
    					break
    				case 'l2p':
    					perm.param1 = $(".authl2p", element.parentElement).val();
    					break
    			}
    			dict = {}
    			dict['type'] = perm.type;
    			dict['param1'] = perm.param1;
    			dict['param2'] = perm.param2;
    			dict[$(element.parentElement).data('type')+'_id'] = $(element.parentElement).data('id');
    
    			moderator.api.add_new(dict,'perm',true);
    			var option = $('<option>', {
    				"text": perm.type+' '+( perm.type == "password" ? ' ("'+perm.param1+'":"'+perm.param2+'")' : '' ) ,
    				"data-auth": JSON.stringify(perm)
    			});
    			$(".permissionlist",element.parentElement).append(option);
    		},
    		typechange: function (element) {
    			switch ($(element).val()) {
    				case 'password':
    					$(".passwordinput",element.parentElement).show();
    					$(".authl2p",element.parentElement).hide();
    					break;
    				case 'l2p':
    					$(".passwordinput",element.parentElement).hide();
    					$(".authl2p",element.parentElement).show();
    					break;
    				default:
    					$(".passwordinput",element.parentElement).hide();
    					$(".authl2p",element.parentElement).hide();
    					break;
    			}
    		}
    	},
    	init: function () {
    		moderator.api.init();
    		moderator.editor.init();
    		moderator.permissioneditor.init();
    	}
    };
    
    $( document ).ready( function () {  moderator.init(); } );