mirror of
				https://github.com/pierre42100/ComunicWeb
				synced 2025-11-03 19:54:14 +00:00 
			
		
		
		
	Can show and change visibility level
This commit is contained in:
		@@ -4,6 +4,17 @@
 | 
				
			|||||||
 * @author Pierre HUBERT
 | 
					 * @author Pierre HUBERT
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * For the visibility
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					 .post .visibility .read-only {
 | 
				
			||||||
 | 
						color: #b5bbc8;
 | 
				
			||||||
 | 
						padding-right: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * For the post content
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
.post .post_content {
 | 
					.post .post_content {
 | 
				
			||||||
	text-align: center;
 | 
						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)
 | 
							//Add post attachement (if any)
 | 
				
			||||||
		if(infos.kind == "text"){
 | 
							if(infos.kind == "text"){
 | 
				
			||||||
@@ -442,6 +540,46 @@ ComunicWeb.components.posts.ui = {
 | 
				
			|||||||
			userLiking,
 | 
								userLiking,
 | 
				
			||||||
			likesTarget
 | 
								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