mirror of
				https://github.com/pierre42100/ComunicWeb
				synced 2025-11-04 04:04:20 +00:00 
			
		
		
		
	Create group tabs
This commit is contained in:
		@@ -4,7 +4,7 @@
 | 
			
		||||
 * @author Pierre HUBERT
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
ComunicWeb.pages.groups.sections.header = {
 | 
			
		||||
const GroupSectionHeader = {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Display groups page header
 | 
			
		||||
@@ -14,29 +14,43 @@ ComunicWeb.pages.groups.sections.header = {
 | 
			
		||||
     */
 | 
			
		||||
    display: function(info, target){
 | 
			
		||||
        
 | 
			
		||||
        //Create header container
 | 
			
		||||
        var headerContainer = createElem2({
 | 
			
		||||
        //Create page row
 | 
			
		||||
        var pageRow = createElem2({
 | 
			
		||||
            appendTo: target,
 | 
			
		||||
            type: "div",
 | 
			
		||||
            class: "row group-page"
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        //Create header column
 | 
			
		||||
        var headerColumn = createElem2({
 | 
			
		||||
            appendTo: pageRow,
 | 
			
		||||
            type: "div",
 | 
			
		||||
            class: "col-md-6"
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        //Create header container
 | 
			
		||||
        const headerContainer = createElem2({
 | 
			
		||||
            appendTo: headerColumn,
 | 
			
		||||
            type: "div",
 | 
			
		||||
            class: "group-header box box-primary"
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        //Create a row
 | 
			
		||||
        var row = createElem2({
 | 
			
		||||
        const row = createElem2({
 | 
			
		||||
            appendTo: headerContainer,
 | 
			
		||||
            type: "div",
 | 
			
		||||
            class: "box-body row"
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        //First column
 | 
			
		||||
        var firstColumn = createElem2({
 | 
			
		||||
        const firstColumn = createElem2({
 | 
			
		||||
            appendTo: row,
 | 
			
		||||
            type: "div",
 | 
			
		||||
            class: "col-md-4 group-col-icon",
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        //Group icon
 | 
			
		||||
        var groupIcon = createElem2({
 | 
			
		||||
        const groupIcon = createElem2({
 | 
			
		||||
            appendTo: firstColumn,
 | 
			
		||||
            type: "img",
 | 
			
		||||
            src: info.icon_url,
 | 
			
		||||
@@ -44,7 +58,7 @@ ComunicWeb.pages.groups.sections.header = {
 | 
			
		||||
        });
 | 
			
		||||
        
 | 
			
		||||
        //Group name
 | 
			
		||||
        var groupName = createElem2({
 | 
			
		||||
        const groupName = createElem2({
 | 
			
		||||
            appendTo: firstColumn,
 | 
			
		||||
            type: "span",
 | 
			
		||||
            class: "group-name",
 | 
			
		||||
@@ -62,132 +76,29 @@ ComunicWeb.pages.groups.sections.header = {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        //Second column : Information about the company
 | 
			
		||||
        var secondColumn = createElem2({
 | 
			
		||||
        createElem2({
 | 
			
		||||
            appendTo: row,
 | 
			
		||||
            type: "div",
 | 
			
		||||
            class: "col-md-4 col-info"
 | 
			
		||||
        });
 | 
			
		||||
            class: "spacer"
 | 
			
		||||
        })
 | 
			
		||||
 | 
			
		||||
        //Group URL (if any)
 | 
			
		||||
        if(info.url != "null"){
 | 
			
		||||
            var urlElem = createElem2({
 | 
			
		||||
                appendTo: secondColumn,
 | 
			
		||||
                type: "a",
 | 
			
		||||
                class: "a",
 | 
			
		||||
                href: info.url,
 | 
			
		||||
                innerHTML: "<i class='fa fa-link'></i> " + info.url
 | 
			
		||||
            });
 | 
			
		||||
            urlElem.target = "_blank";
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
        //Group description (if any)
 | 
			
		||||
        if(info.description != "null")
 | 
			
		||||
            createElem2({
 | 
			
		||||
                appendTo: secondColumn,
 | 
			
		||||
                type: "div",
 | 
			
		||||
                innerHTML: "<i class='fa fa-file-text-o'></i> " + info.description
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
        //Add separator
 | 
			
		||||
        add_p(secondColumn, " ");
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        //Third column : information about the group
 | 
			
		||||
        // Second column : basic information about the group
 | 
			
		||||
        var thirdColumn = createElem2({
 | 
			
		||||
            appendTo: row,
 | 
			
		||||
            type: "div",
 | 
			
		||||
            class: "col-md-4 col-metadata"
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        //Add join date
 | 
			
		||||
        createElem2({
 | 
			
		||||
            appendTo: thirdColumn,
 | 
			
		||||
            type: "div",
 | 
			
		||||
            innerHTML: '<i class="fa fa-clock-o"></i> Created '+ComunicWeb.common.date.timeDiffToStr(info.time_create)+' ago'
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        //Add number of members
 | 
			
		||||
        var members = createElem2({
 | 
			
		||||
            appendTo: thirdColumn,
 | 
			
		||||
            type: "div",
 | 
			
		||||
            innerHTML: '<i class="fa fa-group"></i> '+ info.number_members+' members'
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        //Check if the user is a moderator or an admin
 | 
			
		||||
        if(info.membership == "administrator" || info.membership == "moderator"){
 | 
			
		||||
            
 | 
			
		||||
            //Turn members information into a link
 | 
			
		||||
            members.className = "a";
 | 
			
		||||
 | 
			
		||||
            members.addEventListener("click", function(e){
 | 
			
		||||
 | 
			
		||||
                openPage("groups/" + info.id + "/members");
 | 
			
		||||
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        //Group visibility
 | 
			
		||||
        var visibility = {
 | 
			
		||||
            open: "Open group",
 | 
			
		||||
            private: "Private group",
 | 
			
		||||
            secrete: "Secrete group"
 | 
			
		||||
        };
 | 
			
		||||
        createElem2({
 | 
			
		||||
            appendTo: thirdColumn,
 | 
			
		||||
            type: "div",
 | 
			
		||||
            innerHTML: "<i class='fa fa-lock'></i> " + visibility[info.visibility]
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        //Group registration
 | 
			
		||||
        var levels = {
 | 
			
		||||
            open: "Open registration",
 | 
			
		||||
            moderated: "Moderated registration",
 | 
			
		||||
            closed: "Closed registration"
 | 
			
		||||
        }
 | 
			
		||||
        createElem2({
 | 
			
		||||
            appendTo: thirdColumn,
 | 
			
		||||
            type: "div",
 | 
			
		||||
            innerHTML: "<i class='fa fa-pencil'></i> " + levels[info.registration_level]
 | 
			
		||||
            class: "col-md-7 col-metadata"
 | 
			
		||||
        });
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        //Display membership level
 | 
			
		||||
        if(signed_in())
 | 
			
		||||
            ComunicWeb.pages.groups.sections.membershipBlock.display(info, thirdColumn);
 | 
			
		||||
        ComunicWeb.pages.groups.sections.membershipBlock.display(info, thirdColumn);
 | 
			
		||||
        
 | 
			
		||||
        //Display follow block
 | 
			
		||||
        if(signed_in() && ComunicWeb.components.groups.utils.isGroupMember(info))
 | 
			
		||||
            ComunicWeb.pages.groups.sections.followBlock.display(info, thirdColumn);
 | 
			
		||||
 | 
			
		||||
        //If the user is an admin, add a link to configure the page
 | 
			
		||||
        if(signed_in() && info.membership == "administrator"){
 | 
			
		||||
 | 
			
		||||
            var settingsLink = createElem2({
 | 
			
		||||
                appendTo: thirdColumn,
 | 
			
		||||
                type: "div",
 | 
			
		||||
                class: "a",
 | 
			
		||||
                innerHTML: " <i class='fa fa-gear'></i>Settings"
 | 
			
		||||
            });
 | 
			
		||||
            settingsLink.addEventListener("click", function(e){
 | 
			
		||||
                openPage("groups/" + info.id + "/settings");
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        //Display likes block
 | 
			
		||||
        ComunicWeb.components.like.button.display(
 | 
			
		||||
			"group",
 | 
			
		||||
			info.id,
 | 
			
		||||
			info.number_likes,
 | 
			
		||||
			info.is_liking,
 | 
			
		||||
			createElem2({
 | 
			
		||||
                appendTo: thirdColumn,
 | 
			
		||||
                type: "div"
 | 
			
		||||
            })
 | 
			
		||||
		);
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
ComunicWeb.pages.groups.sections.header = GroupSectionHeader;
 | 
			
		||||
							
								
								
									
										38
									
								
								assets/js/pages/groups/sections/tabs.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								assets/js/pages/groups/sections/tabs.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
			
		||||
/**
 | 
			
		||||
 * Group tags
 | 
			
		||||
 * 
 | 
			
		||||
 * @author Pierre Hubert
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
const GroupTabs = {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param {AdvancedGroupInfo} group Group information
 | 
			
		||||
     * @param {HTMLElement} target Target
 | 
			
		||||
     * @param {String} activePage Current active page
 | 
			
		||||
     */
 | 
			
		||||
    show: async function(group, target, activePage) {
 | 
			
		||||
        // Load template
 | 
			
		||||
		const tpl = await Page.loadHTMLTemplate("pages/groups/sections/GroupTabs.html");
 | 
			
		||||
		const el = document.createElement("div")
 | 
			
		||||
		el.innerHTML = tpl;
 | 
			
		||||
		target.appendChild(el);
 | 
			
		||||
 | 
			
		||||
        Vue.createApp({
 | 
			
		||||
            
 | 
			
		||||
            data: () => {
 | 
			
		||||
                return {
 | 
			
		||||
                    isAdmin: group.membership == "administrator",
 | 
			
		||||
                    canSeeMembers: group.membership == "administrator" || group.membership == "moderator",
 | 
			
		||||
                    activePage: activePage
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
 | 
			
		||||
            methods: {
 | 
			
		||||
                openPage: (uri) => openPage("groups/" + group.id + "/" + uri)
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }).mount(el);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user