CCM NG: First part of admin UI for Sites
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@5084 8810af33-2d31-482b-a856-94f89814c4dfpull/2/head
parent
d5c7c63a8c
commit
f5f4c6ee93
|
|
@ -33,6 +33,7 @@ import com.arsdigita.ui.admin.applications.ApplicationsTab;
|
||||||
import com.arsdigita.ui.admin.categories.CategoriesTab;
|
import com.arsdigita.ui.admin.categories.CategoriesTab;
|
||||||
import com.arsdigita.ui.admin.configuration.ConfigurationTab;
|
import com.arsdigita.ui.admin.configuration.ConfigurationTab;
|
||||||
import com.arsdigita.ui.admin.importexport.ImportExportTab;
|
import com.arsdigita.ui.admin.importexport.ImportExportTab;
|
||||||
|
import com.arsdigita.ui.admin.sites.SitesTab;
|
||||||
import com.arsdigita.web.BaseApplicationServlet;
|
import com.arsdigita.web.BaseApplicationServlet;
|
||||||
import com.arsdigita.web.LoginSignal;
|
import com.arsdigita.web.LoginSignal;
|
||||||
import com.arsdigita.xml.Document;
|
import com.arsdigita.xml.Document;
|
||||||
|
|
@ -135,6 +136,11 @@ public class AdminServlet extends BaseApplicationServlet {
|
||||||
ADMIN_BUNDLE)),
|
ADMIN_BUNDLE)),
|
||||||
new ConfigurationTab());
|
new ConfigurationTab());
|
||||||
|
|
||||||
|
tabbedPane.addTab(
|
||||||
|
new Label(new GlobalizedMessage("ui.admin.tab.sites.title",
|
||||||
|
ADMIN_BUNDLE)),
|
||||||
|
new SitesTab());
|
||||||
|
|
||||||
tabbedPane.addTab(
|
tabbedPane.addTab(
|
||||||
new Label(new GlobalizedMessage("ui.admin.tab.workflows.title",
|
new Label(new GlobalizedMessage("ui.admin.tab.workflows.title",
|
||||||
ADMIN_BUNDLE)),
|
ADMIN_BUNDLE)),
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2017 LibreCCM Foundation.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||||
|
* MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package com.arsdigita.ui.admin.sites;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.BoxPanel;
|
||||||
|
import com.arsdigita.bebop.Text;
|
||||||
|
import com.arsdigita.toolbox.ui.LayoutPanel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
public class SitesTab extends LayoutPanel {
|
||||||
|
|
||||||
|
public SitesTab() {
|
||||||
|
super();
|
||||||
|
|
||||||
|
super.setClassAttr("sidebarNavPanel");
|
||||||
|
|
||||||
|
final BoxPanel left = new BoxPanel(BoxPanel.VERTICAL);
|
||||||
|
|
||||||
|
|
||||||
|
final BoxPanel right = new BoxPanel(BoxPanel.VERTICAL);
|
||||||
|
|
||||||
|
right.add(new Text("Sites placeholder"));
|
||||||
|
|
||||||
|
setLeft(left);
|
||||||
|
setRight(right);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,63 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2017 LibreCCM Foundation.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||||
|
* MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package com.arsdigita.ui.admin.sites;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.Label;
|
||||||
|
import com.arsdigita.bebop.Table;
|
||||||
|
import com.arsdigita.bebop.table.TableColumn;
|
||||||
|
import com.arsdigita.bebop.table.TableColumnModel;
|
||||||
|
import com.arsdigita.globalization.GlobalizedMessage;
|
||||||
|
|
||||||
|
import static com.arsdigita.ui.admin.AdminUiConstants.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
public class SitesTable extends Table {
|
||||||
|
|
||||||
|
public static final int COL_SITE_DOMAIN = 0;
|
||||||
|
public static final int COL_IS_DEFAULT_SITE = 1;
|
||||||
|
public static final int COL_DEFAULT_THEME = 2;
|
||||||
|
|
||||||
|
public SitesTable() {
|
||||||
|
|
||||||
|
super();
|
||||||
|
|
||||||
|
super.setIdAttr("sitesTable");
|
||||||
|
super.setStyleAttr("width: 30em");
|
||||||
|
|
||||||
|
setEmptyView(new Label(new GlobalizedMessage("ui.admin.sites.no_sites",
|
||||||
|
ADMIN_BUNDLE)));
|
||||||
|
|
||||||
|
final TableColumnModel columnModel = getColumnModel();
|
||||||
|
columnModel.add(new TableColumn(
|
||||||
|
COL_SITE_DOMAIN,
|
||||||
|
new Label(new GlobalizedMessage("ui.admin.sites.table.domain"))));
|
||||||
|
columnModel.add(new TableColumn(
|
||||||
|
COL_IS_DEFAULT_SITE,
|
||||||
|
new Label(new GlobalizedMessage("ui.admin.sites.table.default_site"))));
|
||||||
|
columnModel.add(new TableColumn(
|
||||||
|
COL_DEFAULT_THEME,
|
||||||
|
new Label(new GlobalizedMessage("ui.admin.sites.table.default_theme"))));
|
||||||
|
|
||||||
|
super.setModelBuilder(new SitesTableModelBuilder());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,80 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2017 LibreCCM Foundation.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||||
|
* MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package com.arsdigita.ui.admin.sites;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.table.TableModel;
|
||||||
|
|
||||||
|
import org.libreccm.cdi.utils.CdiUtil;
|
||||||
|
import org.libreccm.sites.Site;
|
||||||
|
import org.libreccm.sites.SiteRepository;
|
||||||
|
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
public class SitesTableModel implements TableModel {
|
||||||
|
|
||||||
|
private final Iterator<Site> iterator;
|
||||||
|
private Site current;
|
||||||
|
|
||||||
|
public SitesTableModel() {
|
||||||
|
|
||||||
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
|
final SiteRepository siteRepo = cdiUtil.findBean(SiteRepository.class);
|
||||||
|
iterator = siteRepo.findAll().iterator();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getColumnCount() {
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean nextRow() {
|
||||||
|
if (iterator.hasNext()) {
|
||||||
|
current = iterator.next();
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object getElementAt(final int columnIndex) {
|
||||||
|
|
||||||
|
switch (columnIndex) {
|
||||||
|
case SitesTable.COL_SITE_DOMAIN:
|
||||||
|
return current.getDomainOfSite();
|
||||||
|
case SitesTable.COL_IS_DEFAULT_SITE:
|
||||||
|
return current.isDefaultSite();
|
||||||
|
case SitesTable.COL_DEFAULT_THEME:
|
||||||
|
return current.getDefaultTheme();
|
||||||
|
default:
|
||||||
|
throw new IllegalArgumentException("Illegal column index");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object getKeyAt(final int columnIndex) {
|
||||||
|
return current.getObjectId();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2017 LibreCCM Foundation.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||||
|
* MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package com.arsdigita.ui.admin.sites;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.PageState;
|
||||||
|
import com.arsdigita.bebop.Table;
|
||||||
|
import com.arsdigita.bebop.table.TableModel;
|
||||||
|
import com.arsdigita.bebop.table.TableModelBuilder;
|
||||||
|
import com.arsdigita.util.LockableImpl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
public class SitesTableModelBuilder
|
||||||
|
extends LockableImpl
|
||||||
|
implements TableModelBuilder {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TableModel makeModel(final Table table, final PageState state) {
|
||||||
|
|
||||||
|
return new SitesTableModel();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -615,3 +615,4 @@ ui.user.groups.remove=Remove
|
||||||
ui.user.roles.remove=Remove
|
ui.user.roles.remove=Remove
|
||||||
ui.role.parties.remove=Remove
|
ui.role.parties.remove=Remove
|
||||||
ui.admin.role_edit.description.label=Description
|
ui.admin.role_edit.description.label=Description
|
||||||
|
ui.admin.tab.sites.title=Sites
|
||||||
|
|
|
||||||
|
|
@ -619,3 +619,4 @@ ui.user.groups.remove=Entfernen
|
||||||
ui.user.roles.remove=Entfernen
|
ui.user.roles.remove=Entfernen
|
||||||
ui.role.parties.remove=Entfernen
|
ui.role.parties.remove=Entfernen
|
||||||
ui.admin.role_edit.description.label=Beschreibung
|
ui.admin.role_edit.description.label=Beschreibung
|
||||||
|
ui.admin.tab.sites.title=Sites
|
||||||
|
|
|
||||||
|
|
@ -612,3 +612,4 @@ ui.user.groups.remove=Remove
|
||||||
ui.user.roles.remove=Remove
|
ui.user.roles.remove=Remove
|
||||||
ui.role.parties.remove=Remove
|
ui.role.parties.remove=Remove
|
||||||
ui.admin.role_edit.description.label=Description
|
ui.admin.role_edit.description.label=Description
|
||||||
|
ui.admin.tab.sites.title=Sites
|
||||||
|
|
|
||||||
|
|
@ -603,3 +603,4 @@ ui.user.groups.remove=Remove
|
||||||
ui.user.roles.remove=Remove
|
ui.user.roles.remove=Remove
|
||||||
ui.role.parties.remove=Remove
|
ui.role.parties.remove=Remove
|
||||||
ui.admin.role_edit.description.label=Description
|
ui.admin.role_edit.description.label=Description
|
||||||
|
ui.admin.tab.sites.title=Sites
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue