mirror of
				https://github.com/pierre42100/ComunicWeb
				synced 2025-10-31 02:04:53 +00:00 
			
		
		
		
	Can show and change visibility level
This commit is contained in:
		| @@ -4,6 +4,17 @@ | ||||
|  * @author Pierre HUBERT | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * For the visibility | ||||
|  */ | ||||
|  .post .visibility .read-only { | ||||
| 	color: #b5bbc8; | ||||
| 	padding-right: 10px; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * For the post content | ||||
|  */ | ||||
| .post .post_content { | ||||
| 	text-align: center; | ||||
| } | ||||
|   | ||||
| @@ -47,4 +47,25 @@ ComunicWeb.components.posts.interface = { | ||||
|  | ||||
| 	}, | ||||
|  | ||||
| 	/** | ||||
| 	 * Change post visibility level | ||||
| 	 *  | ||||
| 	 * @param {int} postID The ID of the post | ||||
| 	 * @param {string} new_level New visibility level for the post | ||||
| 	 * @param {function} callback What to do once we got a response | ||||
| 	 */ | ||||
| 	set_visibility_level: function(postID, new_level, callback){ | ||||
|  | ||||
| 		//Prepare the API request | ||||
| 		var APIuri = "posts/set_visibility_level"; | ||||
| 		var params = { | ||||
| 			postID: postID, | ||||
| 			new_level: new_level | ||||
| 		}; | ||||
|  | ||||
| 		//Make the request | ||||
| 		ComunicWeb.common.api.makeAPIrequest(APIuri, params, true, callback); | ||||
|  | ||||
| 	}, | ||||
|  | ||||
| } | ||||
| @@ -71,6 +71,104 @@ ComunicWeb.components.posts.ui = { | ||||
| 			} | ||||
| 		}); | ||||
|  | ||||
| 		//Create top right area | ||||
| 		var topRightArea = createElem2({ | ||||
| 			insertAsFirstChild: userBlock, | ||||
| 			type: "div", | ||||
| 			class: "pull-right", | ||||
| 		}) | ||||
|  | ||||
| 		//Load informations about visibility | ||||
| 		var visibilityTarget = createElem2({ | ||||
| 			appendTo: topRightArea, | ||||
| 			type: "div", | ||||
| 			class: "visibility" | ||||
| 		}); | ||||
|  | ||||
|  | ||||
| 		//Get informations about the current visibility level | ||||
| 		var visibilityInfos = ComunicWeb.components.posts.visibilityLevels[infos.visibility_level]; | ||||
|  | ||||
| 		//Check user level access | ||||
| 		if(infos.user_access != "full"){ | ||||
|  | ||||
| 			//The user can't change the visibility level of the post | ||||
| 			 | ||||
|  | ||||
| 			//Display visibility level as a simple icon | ||||
| 			createElem2({ | ||||
| 				appendTo: visibilityTarget, | ||||
| 				type: "i", | ||||
| 				class: "read-only fa "+visibilityInfos.icon | ||||
| 			}); | ||||
|  | ||||
| 		} | ||||
| 		else { | ||||
|  | ||||
| 			//The user can change the visibility level of the post | ||||
| 			//Create button gropu | ||||
| 			var visibilityButtonGroup = createElem2({ | ||||
| 				appendTo: visibilityTarget, | ||||
| 				type: "div", | ||||
| 				class: "btn-group" | ||||
| 			}); | ||||
|  | ||||
| 			//Visibility choose button | ||||
| 			var visibilityChooseButton = createElem2({ | ||||
| 				appendTo: visibilityButtonGroup, | ||||
| 				type: "button", | ||||
| 				class: "btn btn-default dropdown-toggle", | ||||
| 				elemType: "button", | ||||
| 			}); | ||||
| 			visibilityChooseButton.setAttribute("data-toggle", "dropdown"); | ||||
|  | ||||
| 			//Set the current value of the button | ||||
| 			visibilityChooseButton.innerHTML = "<i class='fa " + visibilityInfos.icon + "'></i>"; | ||||
|  | ||||
| 			//Add dropdown menu | ||||
| 			var visibilityDropdown = createElem2({ | ||||
| 				appendTo: visibilityButtonGroup, | ||||
| 				type: "ul", | ||||
| 				class: "dropdown-menu" | ||||
| 			}); | ||||
|  | ||||
| 			//Process all visibility levels | ||||
| 			var privateChoice = this._add_visibility_menu_item(visibilityDropdown, "private"); | ||||
| 			var friendsChoice = this._add_visibility_menu_item(visibilityDropdown, "friends"); | ||||
| 			var publicChoice = this._add_visibility_menu_item(visibilityDropdown, "public"); | ||||
|  | ||||
| 			var onVisibilityLevelChoice = function(){ | ||||
|  | ||||
| 				//Get the new visibility level | ||||
| 				var new_level = this.getAttribute("data-level"); | ||||
|  | ||||
| 				//Lock button | ||||
| 				visibilityChooseButton.disabled = true; | ||||
|  | ||||
| 				//Make a request on the server to update the level | ||||
| 				ComunicWeb.components.posts.interface.set_visibility_level(infos.ID, new_level, function(response){ | ||||
|  | ||||
| 					//Unlock button | ||||
| 					visibilityChooseButton.disabled = false; | ||||
|  | ||||
| 					//Check for errors | ||||
| 					if(response.error){ | ||||
| 						ComunicWeb.common.notificationSystem.showNotification("Couldn't change post visibility level !", "danger"); | ||||
| 						return; | ||||
| 					} | ||||
|  | ||||
| 					//Change the level on the button | ||||
| 					visibilityChooseButton.innerHTML = "<i class='fa " + ComunicWeb.components.posts.visibilityLevels[new_level].icon + "'></i>"; | ||||
|  | ||||
| 				}); | ||||
| 			} | ||||
|  | ||||
| 			//Set the items lives | ||||
| 			privateChoice.onclick = onVisibilityLevelChoice; | ||||
| 			friendsChoice.onclick = onVisibilityLevelChoice; | ||||
| 			publicChoice.onclick = onVisibilityLevelChoice; | ||||
| 			 | ||||
| 		} | ||||
|  | ||||
| 		//Add post attachement (if any) | ||||
| 		if(infos.kind == "text"){ | ||||
| @@ -442,6 +540,46 @@ ComunicWeb.components.posts.ui = { | ||||
| 			userLiking, | ||||
| 			likesTarget | ||||
| 		); | ||||
| 	} | ||||
| 	}, | ||||
|  | ||||
| 	/** | ||||
| 	 * Add a visibility level choice to a dropodown menu | ||||
| 	 *  | ||||
| 	 * @param {HTMLElement} target The target menu | ||||
| 	 * @param {Object} name The name of the visibility level | ||||
| 	 * @return {HTMLElement} The created element container | ||||
| 	 */ | ||||
| 	_add_visibility_menu_item(target, name){ | ||||
|  | ||||
| 		//Create container | ||||
| 		var itemContainer = createElem2({ | ||||
| 			appendTo: target, | ||||
| 			type: "li", | ||||
| 		}); | ||||
|  | ||||
| 		//Create link container | ||||
| 		var itemLink = createElem2({ | ||||
| 			appendTo: itemContainer, | ||||
| 			type: "a" | ||||
| 		}); | ||||
| 		itemLink.setAttribute("data-level", name); | ||||
|  | ||||
| 		//Add visibility icon | ||||
| 		createElem2({ | ||||
| 			appendTo: itemLink, | ||||
| 			type: "i", | ||||
| 			class: "fa " + ComunicWeb.components.posts.visibilityLevels[name].icon | ||||
| 		}); | ||||
|  | ||||
| 		//Add visibility label | ||||
| 		createElem2({ | ||||
| 			appendTo: itemLink, | ||||
| 			type: "span", | ||||
| 			innerHTML: ComunicWeb.components.posts.visibilityLevels[name].name | ||||
| 		}); | ||||
|  | ||||
| 		return itemLink; | ||||
|  | ||||
| 	}, | ||||
|  | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Pierre
					Pierre