mirror of
https://github.com/pierre42100/ComunicWeb
synced 2025-02-16 19:02:40 +00:00
Create group tabs
This commit is contained in:
parent
d0812e2d85
commit
9d1ebf5899
@ -35,3 +35,21 @@
|
|||||||
display: table;
|
display: table;
|
||||||
margin: auto;
|
margin: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.group-header .box-body {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.group-header .box-body .spacer {
|
||||||
|
flex: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.group-header .box-body .col-metadata {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: baseline;
|
||||||
|
justify-content: center;
|
||||||
|
min-width: 160px;
|
||||||
|
}
|
@ -11,7 +11,7 @@
|
|||||||
* @param {String} calloutMessage The message of the callout
|
* @param {String} calloutMessage The message of the callout
|
||||||
* @param {String} calloutType The type of the callout (danger, info, warning, success)
|
* @param {String} calloutType The type of the callout (danger, info, warning, success)
|
||||||
*/
|
*/
|
||||||
ComunicWeb.common.messages.createCalloutElem = function(calloutTitle, calloutMessage, calloutType){
|
function createCallout(calloutTitle, calloutMessage, calloutType){
|
||||||
//Prepare callout message
|
//Prepare callout message
|
||||||
calloutMessage = "<p>" + calloutMessage + "</p>";
|
calloutMessage = "<p>" + calloutMessage + "</p>";
|
||||||
|
|
||||||
@ -39,6 +39,8 @@ ComunicWeb.common.messages.createCalloutElem = function(calloutTitle, calloutMes
|
|||||||
return calloutElem;
|
return calloutElem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ComunicWeb.common.messages.createCalloutElem = createCallout;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create loading callout element
|
* Create loading callout element
|
||||||
*
|
*
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* @author Pierre HUBERT
|
* @author Pierre HUBERT
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ComunicWeb.pages.groups.main = {
|
const GroupsPage = {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Open groups page
|
* Open groups page
|
||||||
@ -12,10 +12,15 @@ ComunicWeb.pages.groups.main = {
|
|||||||
* @param {object} args Optionnal arguments
|
* @param {object} args Optionnal arguments
|
||||||
* @param {HTMLElement} target The target for the page
|
* @param {HTMLElement} target The target for the page
|
||||||
*/
|
*/
|
||||||
open: function(args, target){
|
open: async function(args, target){
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
//Determine which page / group should be opened
|
//Determine which page / group should be opened
|
||||||
if(!args.subfolder)
|
if(args.groupID)
|
||||||
|
page = args.groupID;
|
||||||
|
|
||||||
|
else if(!args.subfolder)
|
||||||
var page = "main";
|
var page = "main";
|
||||||
|
|
||||||
else {
|
else {
|
||||||
@ -43,8 +48,8 @@ ComunicWeb.pages.groups.main = {
|
|||||||
|
|
||||||
//Else determine which group page to open (specified after the ID of the group)
|
//Else determine which group page to open (specified after the ID of the group)
|
||||||
var groupID = page;
|
var groupID = page;
|
||||||
if(args.subfolder.split("/").length < 2){
|
if(!args.subfolder || args.subfolder.split("/").length < 2){
|
||||||
page = "group";
|
page = "posts";
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//Extract the page to open from the URL
|
//Extract the page to open from the URL
|
||||||
@ -52,10 +57,50 @@ ComunicWeb.pages.groups.main = {
|
|||||||
|
|
||||||
//Check if there is nothing after "/"
|
//Check if there is nothing after "/"
|
||||||
if(page.length < 2)
|
if(page.length < 2)
|
||||||
page = "group";
|
page = "posts";
|
||||||
}
|
}
|
||||||
|
|
||||||
//Check which page to open
|
/** @type {AdvancedGroupInfo} Get information about the group*/
|
||||||
|
const group = await new Promise((res, rej) => GroupsInterface.getAdvancedInfo(groupID, function(result){
|
||||||
|
|
||||||
|
//Check for errors
|
||||||
|
if(result.error){
|
||||||
|
|
||||||
|
//Check the code of the error
|
||||||
|
if(result.error.code == 401)
|
||||||
|
ComunicWeb.pages.groups.pages.forbidden.open(id, target);
|
||||||
|
|
||||||
|
//The group does not exists
|
||||||
|
else
|
||||||
|
|
||||||
|
ComunicWeb.common.error.pageNotFound({}, target);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
res(result);
|
||||||
|
|
||||||
|
}));
|
||||||
|
|
||||||
|
//Update page title
|
||||||
|
ComunicWeb.common.pageTitle.setTitle(group.name);
|
||||||
|
|
||||||
|
// Display the header for the group
|
||||||
|
GroupSectionHeader.display(group, target);
|
||||||
|
|
||||||
|
// Display the tabs of the group
|
||||||
|
await GroupTabs.show(group, target, page);
|
||||||
|
|
||||||
|
} catch(e) {
|
||||||
|
console.error(e);
|
||||||
|
target.appendChild(createCallout(
|
||||||
|
tr("Error"),
|
||||||
|
tr("Failed to load group page!"),
|
||||||
|
"danger"
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*//Check which page to open
|
||||||
if(page == "group")
|
if(page == "group")
|
||||||
ComunicWeb.pages.groups.pages.group.open(groupID, target);
|
ComunicWeb.pages.groups.pages.group.open(groupID, target);
|
||||||
|
|
||||||
@ -68,7 +113,9 @@ ComunicWeb.pages.groups.main = {
|
|||||||
|
|
||||||
//Unrecognized page
|
//Unrecognized page
|
||||||
else
|
else
|
||||||
ComunicWeb.common.error.pageNotFound(args, target);
|
ComunicWeb.common.error.pageNotFound(args, target);*/
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ComunicWeb.pages.groups.main = GroupsPage;
|
@ -1,110 +0,0 @@
|
|||||||
/**
|
|
||||||
* Group page
|
|
||||||
*
|
|
||||||
* @author Pierre HUBERT
|
|
||||||
*/
|
|
||||||
|
|
||||||
ComunicWeb.pages.groups.pages.group = {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Open (display) a group page
|
|
||||||
*
|
|
||||||
* @param {Number} id The ID of the group to display
|
|
||||||
* @param {HTMLElement} target The target for the page
|
|
||||||
*/
|
|
||||||
open: function(id, target){
|
|
||||||
|
|
||||||
//Get information about the group
|
|
||||||
ComunicWeb.components.groups.interface.getAdvancedInfo(id, function(result){
|
|
||||||
|
|
||||||
//Check for errors
|
|
||||||
if(result.error){
|
|
||||||
|
|
||||||
//Check the code of the error
|
|
||||||
if(result.error.code == 401){
|
|
||||||
ComunicWeb.pages.groups.pages.forbidden.open(id, target);
|
|
||||||
}
|
|
||||||
|
|
||||||
else
|
|
||||||
//The group does not exists
|
|
||||||
ComunicWeb.common.error.pageNotFound({}, target);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
else
|
|
||||||
//Display group page
|
|
||||||
ComunicWeb.pages.groups.pages.group.display(id, result, target);
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Display information about a group
|
|
||||||
*
|
|
||||||
* @param {Number} id The ID of the group to display
|
|
||||||
* @param {Object} info Information about the group to display
|
|
||||||
* @param {HTMLElement} target The target for the page
|
|
||||||
*/
|
|
||||||
display: function(id, info, target){
|
|
||||||
|
|
||||||
//Update page title
|
|
||||||
ComunicWeb.common.pageTitle.setTitle(info.name);
|
|
||||||
|
|
||||||
//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"
|
|
||||||
});
|
|
||||||
|
|
||||||
//Display the header for the group
|
|
||||||
ComunicWeb.pages.groups.sections.header.display(info, headerColumn);
|
|
||||||
|
|
||||||
|
|
||||||
//Check if the user can create posts or not
|
|
||||||
if(ComunicWeb.components.groups.utils.canCreatePosts(info)){
|
|
||||||
|
|
||||||
//Intialize posts creation form
|
|
||||||
var postFormRow = createElem2({
|
|
||||||
appendTo: target,
|
|
||||||
type: "div",
|
|
||||||
class: "row group-page"
|
|
||||||
});
|
|
||||||
|
|
||||||
//Add column
|
|
||||||
var postFormCol = createElem2({
|
|
||||||
appendTo: postFormRow,
|
|
||||||
type: "div",
|
|
||||||
class: "col-md-6"
|
|
||||||
});
|
|
||||||
|
|
||||||
//Display form
|
|
||||||
ComunicWeb.components.posts.form.display("group", id, postFormCol);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Display group posts
|
|
||||||
var postsRow = createElem2({
|
|
||||||
appendTo: target,
|
|
||||||
type: "div",
|
|
||||||
class: "row group-page"
|
|
||||||
});
|
|
||||||
|
|
||||||
var postsCol = createElem2({
|
|
||||||
appendTo: postsRow,
|
|
||||||
type: "div",
|
|
||||||
class: "col-md-6"
|
|
||||||
});
|
|
||||||
|
|
||||||
ComunicWeb.pages.groups.sections.posts.display(info, postsCol);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
56
assets/js/pages/groups/pages/posts.js
Normal file
56
assets/js/pages/groups/pages/posts.js
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
/**
|
||||||
|
* Group page
|
||||||
|
*
|
||||||
|
* @author Pierre HUBERT
|
||||||
|
*/
|
||||||
|
|
||||||
|
const GroupPostsPage = {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Display information about a group
|
||||||
|
*
|
||||||
|
* @param {Number} id The ID of the group to display
|
||||||
|
* @param {Object} info Information about the group to display
|
||||||
|
* @param {HTMLElement} target The target for the page
|
||||||
|
*/
|
||||||
|
display: function(id, info, target){
|
||||||
|
|
||||||
|
//Check if the user can create posts or not
|
||||||
|
if(ComunicWeb.components.groups.utils.canCreatePosts(info)){
|
||||||
|
|
||||||
|
//Intialize posts creation form
|
||||||
|
var postFormRow = createElem2({
|
||||||
|
appendTo: target,
|
||||||
|
type: "div",
|
||||||
|
class: "row group-page"
|
||||||
|
});
|
||||||
|
|
||||||
|
//Add column
|
||||||
|
var postFormCol = createElem2({
|
||||||
|
appendTo: postFormRow,
|
||||||
|
type: "div",
|
||||||
|
class: "col-md-6"
|
||||||
|
});
|
||||||
|
|
||||||
|
//Display form
|
||||||
|
ComunicWeb.components.posts.form.display("group", id, postFormCol);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Display group posts
|
||||||
|
var postsRow = createElem2({
|
||||||
|
appendTo: target,
|
||||||
|
type: "div",
|
||||||
|
class: "row group-page"
|
||||||
|
});
|
||||||
|
|
||||||
|
var postsCol = createElem2({
|
||||||
|
appendTo: postsRow,
|
||||||
|
type: "div",
|
||||||
|
class: "col-md-6"
|
||||||
|
});
|
||||||
|
|
||||||
|
ComunicWeb.pages.groups.sections.posts.display(info, postsCol);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -4,7 +4,7 @@
|
|||||||
* @author Pierre HUBERT
|
* @author Pierre HUBERT
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ComunicWeb.pages.groups.sections.header = {
|
const GroupSectionHeader = {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Display groups page header
|
* Display groups page header
|
||||||
@ -14,29 +14,43 @@ ComunicWeb.pages.groups.sections.header = {
|
|||||||
*/
|
*/
|
||||||
display: function(info, target){
|
display: function(info, target){
|
||||||
|
|
||||||
//Create header container
|
//Create page row
|
||||||
var headerContainer = createElem2({
|
var pageRow = createElem2({
|
||||||
appendTo: target,
|
appendTo: target,
|
||||||
type: "div",
|
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"
|
class: "group-header box box-primary"
|
||||||
});
|
});
|
||||||
|
|
||||||
//Create a row
|
//Create a row
|
||||||
var row = createElem2({
|
const row = createElem2({
|
||||||
appendTo: headerContainer,
|
appendTo: headerContainer,
|
||||||
type: "div",
|
type: "div",
|
||||||
class: "box-body row"
|
class: "box-body row"
|
||||||
});
|
});
|
||||||
|
|
||||||
//First column
|
//First column
|
||||||
var firstColumn = createElem2({
|
const firstColumn = createElem2({
|
||||||
appendTo: row,
|
appendTo: row,
|
||||||
type: "div",
|
type: "div",
|
||||||
class: "col-md-4 group-col-icon",
|
class: "col-md-4 group-col-icon",
|
||||||
});
|
});
|
||||||
|
|
||||||
//Group icon
|
//Group icon
|
||||||
var groupIcon = createElem2({
|
const groupIcon = createElem2({
|
||||||
appendTo: firstColumn,
|
appendTo: firstColumn,
|
||||||
type: "img",
|
type: "img",
|
||||||
src: info.icon_url,
|
src: info.icon_url,
|
||||||
@ -44,7 +58,7 @@ ComunicWeb.pages.groups.sections.header = {
|
|||||||
});
|
});
|
||||||
|
|
||||||
//Group name
|
//Group name
|
||||||
var groupName = createElem2({
|
const groupName = createElem2({
|
||||||
appendTo: firstColumn,
|
appendTo: firstColumn,
|
||||||
type: "span",
|
type: "span",
|
||||||
class: "group-name",
|
class: "group-name",
|
||||||
@ -62,132 +76,29 @@ ComunicWeb.pages.groups.sections.header = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//Second column : Information about the company
|
createElem2({
|
||||||
var secondColumn = createElem2({
|
|
||||||
appendTo: row,
|
appendTo: row,
|
||||||
type: "div",
|
type: "div",
|
||||||
class: "col-md-4 col-info"
|
class: "spacer"
|
||||||
});
|
})
|
||||||
|
|
||||||
//Group URL (if any)
|
// Second column : basic information about the group
|
||||||
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
|
|
||||||
var thirdColumn = createElem2({
|
var thirdColumn = createElem2({
|
||||||
appendTo: row,
|
appendTo: row,
|
||||||
type: "div",
|
type: "div",
|
||||||
class: "col-md-4 col-metadata"
|
class: "col-md-7 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]
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
//Display membership level
|
//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
|
//Display follow block
|
||||||
if(signed_in() && ComunicWeb.components.groups.utils.isGroupMember(info))
|
if(signed_in() && ComunicWeb.components.groups.utils.isGroupMember(info))
|
||||||
ComunicWeb.pages.groups.sections.followBlock.display(info, thirdColumn);
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -28,7 +28,7 @@ ComunicWeb.pages.virtualDirectory.page = {
|
|||||||
|
|
||||||
//Check if the page is a group
|
//Check if the page is a group
|
||||||
if(r.kind == "group"){
|
if(r.kind == "group"){
|
||||||
ComunicWeb.pages.groups.pages.group.open(r.id, target);
|
GroupsPage.open({groupID: r.id}, target);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
26
assets/js/typings/Group.d.ts
vendored
Normal file
26
assets/js/typings/Group.d.ts
vendored
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
/**
|
||||||
|
* Group typings
|
||||||
|
*
|
||||||
|
* @author Pierre Hubert
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare interface Group {
|
||||||
|
id: Number,
|
||||||
|
name: String,
|
||||||
|
icon_url: String,
|
||||||
|
number_members: Number,
|
||||||
|
visibility: "open"|"private"|"secrete",
|
||||||
|
registration_level: "open"|"moderated"|"closed",
|
||||||
|
posts_level: "moderators"|"members",
|
||||||
|
virtual_directory: String,
|
||||||
|
membership: "administrator"|"moderator"|"member"|"invited"|"pending"|"visitor",
|
||||||
|
following: Boolean,
|
||||||
|
}
|
||||||
|
|
||||||
|
declare interface AdvancedGroupInfo extends Group {
|
||||||
|
time_create: Number,
|
||||||
|
description: String,
|
||||||
|
url: String,
|
||||||
|
number_likes: Number,
|
||||||
|
is_liking: Boolean
|
||||||
|
}
|
13
assets/templates/pages/groups/sections/GroupTabs.html
Normal file
13
assets/templates/pages/groups/sections/GroupTabs.html
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<!-- Group tabs section -->
|
||||||
|
<div class="row group-page">
|
||||||
|
<div class="col-md-6">
|
||||||
|
|
||||||
|
<div class="nav-tabs-custom">
|
||||||
|
<ul class="nav nav-tabs">
|
||||||
|
<li v-bind:class="activePage == 'posts' ? 'active': ''"><a @click="openPage('posts')">tr("Posts")</a></li>
|
||||||
|
<li v-bind:class="activePage == 'members' ? 'active': ''"><a @click="openPage('members')" v-if="canSeeMembers">tr("Members")</a></li>
|
||||||
|
<li v-bind:class="activePage == 'about' ? 'active': ''"><a @click="openPage('about')">tr("About")</a></li>
|
||||||
|
<li class="pull-right" v-if="isAdmin" v-bind:class="activePage == 'admin' ? 'active': ''"><a @click="openPage('admin')" class="text-muted"><i class="fa fa-gear"></i></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -529,7 +529,7 @@ class Dev {
|
|||||||
//Groups sub pages
|
//Groups sub pages
|
||||||
"js/pages/groups/pages/main.js",
|
"js/pages/groups/pages/main.js",
|
||||||
"js/pages/groups/pages/create.js",
|
"js/pages/groups/pages/create.js",
|
||||||
"js/pages/groups/pages/group.js",
|
"js/pages/groups/pages/posts.js",
|
||||||
"js/pages/groups/pages/settings.js",
|
"js/pages/groups/pages/settings.js",
|
||||||
"js/pages/groups/pages/members.js",
|
"js/pages/groups/pages/members.js",
|
||||||
"js/pages/groups/pages/forbidden.js",
|
"js/pages/groups/pages/forbidden.js",
|
||||||
@ -539,6 +539,7 @@ class Dev {
|
|||||||
"js/pages/groups/sections/membershipBlock.js",
|
"js/pages/groups/sections/membershipBlock.js",
|
||||||
"js/pages/groups/sections/posts.js",
|
"js/pages/groups/sections/posts.js",
|
||||||
"js/pages/groups/sections/followBlock.js",
|
"js/pages/groups/sections/followBlock.js",
|
||||||
|
"js/pages/groups/sections/tabs.js",
|
||||||
|
|
||||||
|
|
||||||
//User settings page
|
//User settings page
|
||||||
|
Loading…
x
Reference in New Issue
Block a user