wiki: move delete page functionality to the widget
This commit is contained in:
		| @@ -31,16 +31,29 @@ function wiki_page_list($resource_id) { | ||||
| 	if (!$w['path']) { | ||||
| 		return array('pages' => null, 'wiki' => null); | ||||
| 	} | ||||
| 	$pages = array(); | ||||
| 	$pages[] = array('title' => 'Home', 'url' => 'Home'); | ||||
|  | ||||
| 	$pages[] = [ | ||||
| 		'resource_id' => '', | ||||
| 		'title' => 'Home', | ||||
| 		'url' => 'Home', | ||||
| 		'link_id' => 'id_wiki_home_0' | ||||
| 	]; | ||||
|  | ||||
| 	if (is_dir($w['path']) === true) { | ||||
| 		$files = array_diff(scandir($w['path']), array('.', '..', '.git')); | ||||
| 		// TODO: Check that the files are all text files | ||||
| 		 | ||||
| 		$i = 1; | ||||
| 		foreach($files as $file) { | ||||
| 			// strip the .md file extension and unwrap URL encoding to leave HTML encoded name | ||||
| 			if( urldecode(substr($file, 0, -3)) !== 'Home') { | ||||
| 				$pages[] = array('title' => urldecode(substr($file, 0, -3)), 'url' => urlencode(substr($file, 0, -3))); | ||||
| 			$title = substr($file, 0, -3); | ||||
| 			if(urldecode($title) !== 'Home') { | ||||
| 				$pages[] = [ | ||||
| 					'resource_id' => $resource_id, | ||||
| 					'title' => urldecode($title), | ||||
| 					'url' => $title, | ||||
| 					'link_id' => 'id_' . substr($resource_id, 0, 10) . '_' . $i | ||||
| 				]; | ||||
| 				$i++; | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|   | ||||
| @@ -18,6 +18,41 @@ | ||||
| 	word-wrap: break-word; | ||||
| } | ||||
|  | ||||
| .widget-nav-pills-icons { | ||||
| 	opacity: 0; | ||||
| 	padding: 6px 10px; | ||||
| 	float: right; | ||||
| 	position: relative; | ||||
| 	z-index:1; | ||||
| } | ||||
|  | ||||
|  | ||||
| .widget-nav-pills-checkbox { | ||||
| 	padding: 6px 10px; | ||||
| 	float: right; | ||||
| 	position: relative; | ||||
| 	z-index:1; | ||||
| 	cursor: pointer; | ||||
| } | ||||
|  | ||||
| i.widget-nav-pills-icons, | ||||
| i.widget-nav-pills-checkbox { | ||||
| 	margin-top: 2px; | ||||
| } | ||||
|  | ||||
| .widget-nav-pills-icons:hover + a { | ||||
| 	background-color: #eee; | ||||
| } | ||||
|  | ||||
| .widget-nav-pills-checkbox:hover + a { | ||||
| 	background-color: #eee; | ||||
| } | ||||
|  | ||||
| li:hover .widget-nav-pills-icons { | ||||
| 	opacity: 1; | ||||
| } | ||||
|  | ||||
|  | ||||
| /* suggest */ | ||||
|  | ||||
| .suggest-widget-more { | ||||
|   | ||||
| @@ -2040,3 +2040,14 @@ dl.bb-dl > dd > li { | ||||
| 	padding-left: 15px; | ||||
| 	border-left: 3px solid #eee; | ||||
| } | ||||
|  | ||||
| .nav-pills-stacked-icons { | ||||
| 	padding: 6px 10px; | ||||
| 	float: right; | ||||
| 	position: relative; | ||||
| 	z-index:1; | ||||
| } | ||||
|  | ||||
| .nav-pills-stacked-icons:hover + a { | ||||
| 	background-color: #eee; | ||||
| } | ||||
|   | ||||
| @@ -5,12 +5,10 @@ | ||||
| 			{{foreach $groups as $group}} | ||||
| 			<li> | ||||
| 				{{if $group.cid}} | ||||
| 				<a class="pull-right group-edit-tool fakelink" onclick="contactgroupChangeMember('{{$group.id}}','{{$group.enc_cid}}'); return true;"/> | ||||
| 					<i id="group-{{$group.id}}" class="fa {{if $group.ismember}}fa-check-square-o{{else}}fa-square-o{{/if}}"></i> | ||||
| 				</a> | ||||
| 				<i id="group-{{$group.id}}" class="widget-nav-pills-checkbox fa {{if $group.ismember}}fa-check-square-o{{else}}fa-square-o{{/if}}" onclick="contactgroupChangeMember('{{$group.id}}','{{$group.enc_cid}}'); return true;"></i> | ||||
| 				{{/if}} | ||||
| 				{{if $group.edit}} | ||||
| 				<a class="pull-right group-edit-tool" href="{{$group.edit.href}}" title="{{$edittext}}"><i class="group-edit-icon fa fa-pencil"></i></a> | ||||
| 				<a href="{{$group.edit.href}}" class="widget-nav-pills-icons" title="{{$edittext}}"><i class="fa fa-pencil"></i></a> | ||||
| 				{{/if}} | ||||
| 				<a{{if $group.selected}} class="group-selected"{{/if}} href="{{$group.href}}">{{$group.text}}</a> | ||||
| 			</li> | ||||
|   | ||||
| @@ -10,9 +10,6 @@ | ||||
| 					<li class="nav-item"> | ||||
| 						<a id="rename-page" class="nav-link" href="#"><i class="fa fa-edit"></i> Rename Page</a> | ||||
| 					</li> | ||||
| 					<li class="nav-item"> | ||||
| 						<a id="delete-page" class="nav-link" href="#"><i class="fa fa-trash-o"></i> Delete Page</a> | ||||
| 					</li> | ||||
| 					<li class="nav-item"> | ||||
| 						<a id="embed-image" class="nav-link" href="#"><i class="fa fa-picture-o"></i> Embed Image</a> | ||||
| 					</li> | ||||
| @@ -239,33 +236,6 @@ | ||||
|                         ev.preventDefault(); | ||||
| 		}); | ||||
|  | ||||
| 		$('#delete-page').click(function (ev) { | ||||
| 			if (window.wiki_resource_id === '' || window.wiki_page_name === '' || window.wiki_page_name === 'Home') { | ||||
| 			window.console.log('You must have a wiki page open in order to delete pages.'); | ||||
| 			ev.preventDefault(); | ||||
| 			return false; | ||||
| 			} | ||||
| 			if(!confirm('Are you sure you want to delete the page: ' + window.wiki_page_name)) { | ||||
| 					ev.preventDefault(); | ||||
| 			return; | ||||
| 			} | ||||
| 			$.post("wiki/{{$channel}}/delete/page", {name: window.wiki_page_name, resource_id: window.wiki_resource_id},  | ||||
| 			function (data) { | ||||
| 				if (data.success) { | ||||
| 				window.console.log('Page deleted successfully.'); | ||||
| 				var url = window.location.href; | ||||
| 				if (url.substr(-1) == '/') url = url.substr(0, url.length - 2); | ||||
| 				url = url.split('/'); | ||||
| 				url.pop(); | ||||
| 				window.location = url.join('/'); | ||||
| 				} else { | ||||
| 				alert('Error deleting page.'); // TODO: Replace alerts with auto-timeout popups  | ||||
| 				window.console.log('Error deleting page.'); | ||||
| 				} | ||||
| 			}, 'json'); | ||||
| 			ev.preventDefault(); | ||||
| 		}); | ||||
|  | ||||
| 		function wiki_revert_page(commitHash) { | ||||
| 			if (window.wiki_resource_id === '' || window.wiki_page_name === '') { | ||||
| 			window.console.log('You must have a wiki page open in order to revert pages.'); | ||||
|   | ||||
| @@ -4,7 +4,12 @@ | ||||
| 	<ul class="nav nav-pills nav-stacked"> | ||||
| 		{{if $pages}} | ||||
| 		{{foreach $pages as $page}} | ||||
| 		<li><a href="/wiki/{{$channel}}/{{$wikiname}}/{{$page.url}}">{{$page.title}}</a></li> | ||||
| 		<li id="{{$page.link_id}}"> | ||||
| 			{{if $page.resource_id && $canadd}} | ||||
| 			<i class="widget-nav-pills-icons fa fa-trash-o drop-icons" onclick="wiki_delete_page('{{$page.title}}', '{{$page.url}}', '{{$page.resource_id}}', '{{$page.link_id}}')"></i> | ||||
| 			{{/if}} | ||||
| 			<a href="/wiki/{{$channel}}/{{$wikiname}}/{{$page.url}}">{{$page.title}}</a> | ||||
| 		</li> | ||||
| 		{{/foreach}} | ||||
| 		{{/if}} | ||||
| 		{{if $canadd}} | ||||
| @@ -39,4 +44,31 @@ | ||||
| 		}, 'json'); | ||||
| 		ev.preventDefault(); | ||||
| 	}); | ||||
|  | ||||
| 	function wiki_delete_page(wiki_page_name, wiki_page_url, wiki_resource_id, wiki_link_id) { | ||||
| 		if(!confirm('Are you sure you want to delete the page: ' + wiki_page_name)) { | ||||
| 			return; | ||||
| 		} | ||||
| 		$.post("wiki/{{$channel}}/delete/page", {name: wiki_page_url, resource_id: wiki_resource_id}, | ||||
| 		function (data) { | ||||
| 			if (data.success) { | ||||
| 				window.console.log('Page deleted successfully.'); | ||||
| 				if(wiki_page_url == window.wiki_page_name) { | ||||
| 					var url = window.location.href; | ||||
| 					if(url.substr(-1) == '/') | ||||
| 						url = url.substr(0, url.length - 2); | ||||
| 					url = url.split('/'); | ||||
| 					url.pop(); | ||||
| 					window.location = url.join('/'); | ||||
| 				} | ||||
| 				else { | ||||
| 					$('#' + wiki_link_id).remove(); | ||||
| 				} | ||||
| 			} else { | ||||
| 				alert('Error deleting page.'); // TODO: Replace alerts with auto-timeout popups | ||||
| 				window.console.log('Error deleting page.'); | ||||
| 			} | ||||
| 		}, 'json'); | ||||
| 		return false; | ||||
| 	} | ||||
| </script> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user