]> git.mxchange.org Git - jjobs-war.git/commitdiff
More initial files from addressbook-war (basicly almost all as this application needs...
authorRoland Haeder <roland@mxchange.org>
Mon, 15 Feb 2016 15:40:51 +0000 (16:40 +0100)
committerRoland Haeder <roland@mxchange.org>
Mon, 15 Feb 2016 15:40:51 +0000 (16:40 +0100)
27 files changed:
web/admin/admin_index.xhtml [new file with mode: 0644]
web/admin/admin_logout.xhtml [new file with mode: 0644]
web/bye.xhtml [new file with mode: 0644]
web/imprint.xhtml [new file with mode: 0644]
web/login/login_add_addressbook.xhtml [new file with mode: 0644]
web/login/login_edit_address.xhtml [new file with mode: 0644]
web/login/login_edit_user_data.xhtml [new file with mode: 0644]
web/login/login_index.xhtml [new file with mode: 0644]
web/login/login_list_sharing_addressbooks.xhtml [new file with mode: 0644]
web/login/login_other_addressbooks.xhtml [new file with mode: 0644]
web/login/login_own_addressbooks.xhtml [new file with mode: 0644]
web/login/login_shared_addressbooks.xhtml [new file with mode: 0644]
web/login/login_start_sharing_addressbook.xhtml [new file with mode: 0644]
web/privacy.xhtml [new file with mode: 0644]
web/resources/css/cssLayout.css [new file with mode: 0644]
web/resources/css/default.css [new file with mode: 0644]
web/terms.xhtml [new file with mode: 0644]
web/user/login.xhtml [new file with mode: 0644]
web/user/login_error.xhtml [new file with mode: 0644]
web/user/lost_passwd.xhtml [new file with mode: 0644]
web/user/register.xhtml [new file with mode: 0644]
web/user/register_done.xhtml [new file with mode: 0644]
web/user/resend_link.xhtml [new file with mode: 0644]
web/user/show_addressbook.xhtml [new file with mode: 0644]
web/user/show_addressbook_entries.xhtml [new file with mode: 0644]
web/user/user_list.xhtml [new file with mode: 0644]
web/user/user_profile.xhtml [new file with mode: 0644]

diff --git a/web/admin/admin_index.xhtml b/web/admin/admin_index.xhtml
new file mode 100644 (file)
index 0000000..66ce3ac
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <ui:composition template="/WEB-INF/templates/admin/admin_base.tpl">
+               <ui:define name="admin_title">#{msg.PAGE_TITLE_ADMIN_WELCOME}</ui:define>
+
+               <ui:define name="content_header">
+                       #{msg.CONTENT_TITLE_ADMIN_WELCOME}
+               </ui:define>
+
+               <ui:define name="content">
+                       <!--
+                       TODO: Replace this dummy
+                       //-->
+                       Einiges kann hier eingestellt werden.
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/web/admin/admin_logout.xhtml b/web/admin/admin_logout.xhtml
new file mode 100644 (file)
index 0000000..764f7f3
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <ui:composition template="/WEB-INF/templates/admin/admin_base.tpl">
+               <ui:define name="admin_title">#{msg.PAGE_TITLE_ADMIN_LOGOUT}</ui:define>
+
+               <ui:define name="content_header">
+                       #{msg.CONTENT_TITLE_ADMIN_LOGOUT}
+               </ui:define>
+
+               <ui:define name="content">
+                       Offenes TODO.
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/web/bye.xhtml b/web/bye.xhtml
new file mode 100644 (file)
index 0000000..e8f4fa1
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <ui:composition template="/WEB-INF/templates/guest/guest_base.tpl">
+               <ui:define name="guest_title">#{msg.PAGE_TITLE_INDEX_FOO}</ui:define>
+
+               <ui:define name="content_header">
+                       #{msg.CONTENT_TITLE_INDEX_FOO}
+               </ui:define>
+
+               <ui:define name="content">
+                       Here goes your content.
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/web/imprint.xhtml b/web/imprint.xhtml
new file mode 100644 (file)
index 0000000..e5cd571
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <ui:composition template="/WEB-INF/templates/guest/guest_base.tpl">
+               <ui:define name="guest_title">#{msg.PAGE_TITLE_INDEX_IMPRINT}</ui:define>
+
+               <ui:define name="content_header">
+                       #{msg.CONTENT_TITLE_INDEX_IMPRINT}
+               </ui:define>
+
+               <ui:define name="content">
+                       TODO: Hier kommt das Impressum hin!
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/web/login/login_add_addressbook.xhtml b/web/login/login_add_addressbook.xhtml
new file mode 100644 (file)
index 0000000..30f86da
--- /dev/null
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <ui:composition template="/WEB-INF/templates/login/login_base.tpl">
+               <ui:define name="login_title">#{msg.PAGE_TITLE_LOGIN_ADD_ADDRESSBOOK}</ui:define>
+
+               <ui:define name="content_header">
+                       #{msg.CONTENT_TITLE_LOGIN_ADD_ADDRESSBOOK}
+               </ui:define>
+
+               <ui:define name="content">
+                       <h:form id="add_addressbook" acceptcharset="utf-8">
+                               <div class="table">
+                                       <div class="table_header">
+                                               #{msg.FORM_LOGIN_ADD_ADDRESSBOOK_TITLE}
+                                       </div>
+
+                                       <div class="table_row">
+                                               <div class="table_left">
+                                                       <h:outputLabel for="addressbookName" value="#{msg.LOGIN_ENTER_ADDRESSBOOK_NAME}"/>
+                                               </div>
+
+                                               <div class="table_right">
+                                                       <h:inputText class="input" id="addressbookName" value="#{addressbookController.addressbookName}" maxlength="50" size="20" title="#{msg.LOGIN_ENTER_ADDRESSBOOK_NAME_TITLE}" required="true" requiredMessage="#{msg.LOGIN_ADDRESSBOOK_NAME_REQUIRED_MESSAGE}">
+                                                               <f:validator for="addressbookName" validatorId="AddressbookNameValidator" />
+                                                       </h:inputText>
+                                               </div>
+                                       </div>
+
+                                       <div class="table_footer">
+                                               <h:commandButton class="reset" type="reset" value="#{msg.BUTTON_RESET_FORM}" />
+                                               <h:commandButton class="submit" type="submit" id="register" value="#{msg.BUTTON_LOGIN_ADD_ADDRESSBOOK}" action="#{addressbookController.addAddressbook()}" />
+                                       </div>
+                               </div>
+                       </h:form>
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/web/login/login_edit_address.xhtml b/web/login/login_edit_address.xhtml
new file mode 100644 (file)
index 0000000..933c603
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <ui:composition template="/WEB-INF/templates/login/login_base.tpl">
+               <ui:define name="login_title">#{msg.PAGE_TITLE_LOGIN_EDIT_ADDRESS}</ui:define>
+
+               <ui:define name="content_header">
+                       #{msg.CONTENT_TITLE_LOGIN_EDIT_ADDRESS}
+               </ui:define>
+
+               <ui:define name="content">
+                       Here goes your content.
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/web/login/login_edit_user_data.xhtml b/web/login/login_edit_user_data.xhtml
new file mode 100644 (file)
index 0000000..638011b
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <ui:composition template="/WEB-INF/templates/login/login_base.tpl">
+               <ui:define name="login_title">#{msg.PAGE_TITLE_LOGIN_EDIT_USER_DATA}</ui:define>
+
+               <ui:define name="content_header">
+                       #{msg.CONTENT_TITLE_LOGIN_EDIT_USER_DATA}
+               </ui:define>
+
+               <ui:define name="content">
+                       Here goes your content.
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/web/login/login_index.xhtml b/web/login/login_index.xhtml
new file mode 100644 (file)
index 0000000..774ab62
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <ui:composition template="/WEB-INF/templates/login/login_base.tpl">
+               <ui:define name="login_title">#{msg.PAGE_TITLE_LOGIN_HOME}</ui:define>
+
+               <ui:define name="content_header">
+                       #{msg.CONTENT_TITLE_LOGIN_HOME}
+               </ui:define>
+
+               <ui:define name="content">
+                       Here goes your content.
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/web/login/login_list_sharing_addressbooks.xhtml b/web/login/login_list_sharing_addressbooks.xhtml
new file mode 100644 (file)
index 0000000..471a1f1
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <f:metadata>
+               <f:viewParam id="userId" name="userId" value="#{shareController.shareeUserId}" required="true" requiredMessage="#{msg.PARAMETER_USER_ID_MISSING}" converterMessage="#{msg.PARAMETER_USER_ID_INVALID}" validatorMessage="#{msg.PARAMETER_USER_ID_NOT_FOUND}">
+                       <f:convertNumber for="userId" type="number" minIntegerDigits="1" maxIntegerDigits="20" />
+                       <f:validator for="userId" validatorId="UserIdValidator" />
+               </f:viewParam>
+       </f:metadata>
+
+       <ui:composition template="/WEB-INF/templates/login/login_base.tpl">
+               <ui:define name="login_title">#{msg.PAGE_TITLE_LOGIN_LIST_SHARING_ADDRESSBOOKS}</ui:define>
+
+               <ui:define name="content_header">
+                       #{msg.CONTENT_TITLE_LOGIN_LIST_SHARING_ADDRESSBOOKS}
+               </ui:define>
+
+               <ui:define name="content">
+                       <ui:fragment rendered="#{shareController.isShareeUserIdSet()}">
+                               Here goes your content.
+                       </ui:fragment>
+
+                       <ui:fragment rendered="#{shareController.isShareeUserIdEmpty()}">
+                               <ui:include src="/WEB-INF/templates/generic/userid_error.tpl" />
+                       </ui:fragment>
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/web/login/login_other_addressbooks.xhtml b/web/login/login_other_addressbooks.xhtml
new file mode 100644 (file)
index 0000000..562c55a
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <ui:composition template="/WEB-INF/templates/login/login_base.tpl">
+               <ui:define name="login_title">#{msg.PAGE_TITLE_LOGIN_OTHER_ADDRESSBOOKS}</ui:define>
+
+               <ui:define name="content_header">
+                       #{msg.CONTENT_TITLE_LOGIN_OTHER_ADDRESSBOOKS}
+               </ui:define>
+
+               <ui:define name="content">
+                       Here goes your content.
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/web/login/login_own_addressbooks.xhtml b/web/login/login_own_addressbooks.xhtml
new file mode 100644 (file)
index 0000000..7fe3565
--- /dev/null
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <ui:composition template="/WEB-INF/templates/login/login_base.tpl">
+               <ui:define name="login_title">#{msg.PAGE_TITLE_LOGIN_OWN_ADDRESSBOOKS}</ui:define>
+
+               <ui:define name="content_header">
+                       #{msg.CONTENT_TITLE_LOGIN_OWN_ADDRESSBOOKS}
+               </ui:define>
+
+               <ui:define name="content">
+                       <div class="table">
+                               <div class="table_header">
+                                       #{msg.TABLE_HEADER_LIST_OWN_ADDRESSBOOKS}
+                               </div>
+
+                               <div class="para">
+                                       <h:dataTable id="table_own_addressbooks" var="addressbook" value="#{addressbookController.allAddressbooks()}" styleClass="table" headerClass="table_data_column" summary="#{msg.TABLE_SUMMARY_LOGIN_LIST_OWN_ADDRESSBOOKS}" rendered="#{addressbookController.hasCreatedAddressbooks()}">
+                                               <h:column>
+                                                       <f:facet name="header">#{msg.ADDRESSBOOK_ID}</f:facet>
+
+                                                       <h:outputText id="addressbookId" value="#{addressbook.addressbookId}" title="#{msg.ADDRESSBOOK_ID_TITLE}" />
+                                               </h:column>
+
+                                               <h:column>
+                                                       <f:facet name="header">#{msg.ADDRESSBOOK_NAME}</f:facet>
+
+                                                       <h:link outcome="user_show_addressbook" title="#{msg.LINK_SHOW_ADDRESSBOOK_TITLE}">
+                                                               <f:param name="addressbookId" value="#{addressbook.addressbookId}" />
+                                                               <h:outputText id="addressbookName" value="#{addressbook.addressbookName}" title="#{msg.ADDRESSBOOK_NAME_TITLE}" />
+                                                       </h:link>
+                                               </h:column>
+
+                                               <h:column>
+                                                       <f:facet name="header">#{msg.ADDRESSBOOK_TOTAL_ENTRIES}</f:facet>
+
+                                                       <h:link outcome="show_addressbook_entries" title="#{msg.LINK_SHOW_ADDRESSBOOK_ENTRIES_TITLE}">
+                                                               <f:param name="addressbookId" value="#{addressbook.addressbookId}" />
+                                                               <h:outputText id="addressbookEntries" value="#{addressbookController.allEntriesSize(addressbook)}" title="#{msg.ADDRESSBOOK_TOTAL_ENTRIES_TITLE}" />
+                                                       </h:link>
+                                               </h:column>
+
+                                               <h:column>
+                                                       <f:facet name="header">#{msg.ADDRESSBOOK_CREATED}</f:facet>
+
+                                                       <h:outputFormat id="addressbookCreated" value="#{addressbook.addressbookCreated.time}" title="#{msg.ADDRESSBOOK_CREATED_TITLE}">
+                                                               <f:convertDateTime for="addressbookCreated" type="both" timeStyle="short" dateStyle="medium" />
+                                                       </h:outputFormat>
+                                               </h:column>
+                                       </h:dataTable>
+                               </div>
+
+                               <div class="table_footer">
+                                       <h:link id="add_first_addressbook" outcome="login_add_addressbook" value="#{msg.LINK_LOGIN_ADD_FIRST_ADDRESSBOOK}" title="#{msg.LINK_LOGIN_ADD_FIRST_ADDRESSBOOK_TITLE}" rendered="#{addressbookController.hasCreatedAddressbooks() == false}" />
+                                       <h:link id="add_additional_addressbook" outcome="login_add_addressbook" value="#{msg.LINK_LOGIN_ADD_ADDITIONAL_ADDRESSBOOK}" title="#{msg.LINK_LOGIN_ADD_ADDITIONAL_ADDRESSBOOK_TITLE}" rendered="#{addressbookController.hasCreatedAddressbooks()}" />
+                               </div>
+                       </div>
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/web/login/login_shared_addressbooks.xhtml b/web/login/login_shared_addressbooks.xhtml
new file mode 100644 (file)
index 0000000..e531374
--- /dev/null
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
+
+       <ui:composition template="/WEB-INF/templates/login/login_base.tpl">
+               <ui:define name="login_title">#{msg.PAGE_TITLE_LOGIN_SHARED_ADDRESSBOOKS}</ui:define>
+
+               <ui:define name="content_header">
+                       #{msg.CONTENT_TITLE_LOGIN_SHARED_ADDRESSBOOKS}
+               </ui:define>
+
+               <ui:define name="content">
+                       <div class="table">
+                               <div class="table_header">
+                                       #{msg.LOGIN_TABLE_HEADER_SHARED_ADDRESSBOOKS}
+                               </div>
+
+                               <div class="para">
+                                       <h:dataTable id="sharedAddressbooks" var="share" value="#{shareController.allShares()}" headerClass="table_data_column" summary="#{msg.TABLE_SUMMARY_LOGIN_SHARED_ADDRESSBOOKS}" rendered="#{shareController.isSharingAddressbooks()}">
+                                               <c:set value="#{share.shareUserSharee}" target="#{profileController}" property="user" />
+
+                                               <h:column>
+                                                       <f:facet name="header">#{msg.SHARED_ADDRESSBOOK}</f:facet>
+
+                                                       <h:link outcome="user_show_addressbook" title="#{msg.LINK_SHOW_ADDRESSBOOK_TITLE}">
+                                                               <f:param name="addressbookId" value="#{share.shareAddressbook.addressbookId}" />
+                                                               <h:outputText id="addressbookName" value="#{share.shareAddressbook.addressbookName}" title="#{msg.SHARED_ADDRESSBOOK_TITLE}" />
+                                                       </h:link>
+                                               </h:column>
+
+                                               <h:column>
+                                                       <f:facet name="header">#{msg.SHAREE_USER_NAME}</f:facet>
+                                                       <ui:include src="/WEB-INF/templates/generic/user_profile_link.tpl" />
+                                               </h:column>
+
+                                               <h:column>
+                                                       <f:facet name="header">#{msg.SHARE_CREATED}</f:facet>
+                                                       <h:outputText id="shareCreated" value="#{share.shareCreated.time}" title="#{msg.SHARE_CREATED_TITLE}">
+                                                               <f:convertDateTime for="shareCreated" type="both" timeStyle="short" dateStyle="medium" />
+                                                       </h:outputText>
+                                               </h:column>
+                                       </h:dataTable>
+                               </div>
+
+                               <div class="para">
+                                       <h:outputText class="notice" value="#{msg.LOGIN_USER_HAS_NOT_SHARED_ADDRESSBOOKS}" rendered="#{not shareController.isSharingAddressbooks()}" />
+                               </div>
+
+                               <div class="table_footer">
+                                       <h:link id="shareAddressbook" outcome="user_list" title="#{msg.LINK_LOGIN_START_SHARING_ADDRESSBOOKS_TITLE}" value="#{msg.LINK_LOGIN_START_SHARING_ADDRESSBOOKS}" />
+                               </div>
+                       </div>
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/web/login/login_start_sharing_addressbook.xhtml b/web/login/login_start_sharing_addressbook.xhtml
new file mode 100644 (file)
index 0000000..f86110d
--- /dev/null
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
+
+       <ui:composition template="/WEB-INF/templates/#{loginController.templateType}/#{loginController.templateType}_base.tpl">
+               <ui:define name="login_title">#{msg.PAGE_TITLE_LOGIN_START_SHARING_ADDRESSBOOK}</ui:define>
+
+               <ui:define name="content_header">
+                       #{msg.CONTENT_TITLE_LOGIN_START_SHARING_ADDRESSBOOK}
+               </ui:define>
+
+               <ui:define name="content">
+                       <div class="table_big">
+
+                               <div class="table_header">
+                                       #{msg.TABLE_HEADER_CHOOSE_USER_FOR_SHARING}
+                               </div>
+
+                               <div class="para">
+                                       <h:outputText id="userNotLoggedIn" class="notice" value="#{msg.USER_NOT_LOGGED_IN}" rendered="#{not loginController.isUserLoggedIn()}" />
+
+                                       <h:dataTable id="userList" headerClass="table_header_column" var="user" value="#{addressbookController.allUsersNotSharing()}" rendered="#{loginController.isUserLoggedIn() and not empty addressbookController.addressbook and not loginController.isInvisible()}">
+
+                                               <h:column>
+                                                       <f:facet name="header">#{msg.USER_ID}</f:facet>
+                                                       <h:outputText value="#{user.userId}" />
+                                               </h:column>
+
+                                               <h:column>
+                                                       <f:facet name="header">#{msg.USER_NAME}</f:facet>
+                                                       <ui:include src="/WEB-INF/templates/generic/user_profile_link.tpl" />
+                                               </h:column>
+
+                                               <h:column>
+                                                       <f:facet name="header">#{msg.LOGIN_START_SHARING_TITLE}</f:facet>
+                                                       <h:form acceptcharset="utf-8" id="startSharing" rendered="#{profileController.isProfileLinkVisibleByUser(user)}">
+                                                               <h:commandButton class="submit" id="submit" value="#{msg.LOGIN_START_SHARING_BUTTON}" action="#{shareController.startSharing(user, addressbookController.addressbook)}" title="#{msg.LOGIN_START_SHARING_BUTTON_TITLE}" />
+                                                       </h:form>
+                                               </h:column>
+                                       </h:dataTable>
+
+                                       <h:outputText id="addressbokUnset" class="notice" value="#{msg.LOGIN_ADDRESSBOOK_NOT_SET}" rendered="#{empty addressbookController.addressbook}" />
+
+                                       <h:outputText id="ownProfileInvisible" class="notice" value="#{msg.LOGIN_OWN_PROFILE_INVISIBLE}" rendered="#{loginController.isUserLoggedIn() and not empty addressbookController.addressbook and not loginController.isInvisible()}" />
+                               </div>
+
+                               <div class="table_footer">
+                                       <ul>
+                                               <li>#{msg.LOGIN_START_SHARING_NOTICE1}</li>
+                                               <li>#{msg.LOGIN_START_SHARING_NOTICE2}</li>
+                                       </ul>
+                               </div>
+                       </div>
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/web/privacy.xhtml b/web/privacy.xhtml
new file mode 100644 (file)
index 0000000..235c0e6
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <ui:composition template="/WEB-INF/templates/guest/guest_base.tpl">
+               <ui:define name="guest_title">#{msg.PAGE_TITLE_INDEX_PRIVACY}</ui:define>
+
+               <ui:define name="content_header">
+                       #{msg.CONTENT_TITLE_INDEX_PRIVACY}
+               </ui:define>
+
+               <ui:define name="content">
+                       Hier kommen die Datenschutzbestimmungen hin.
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/web/resources/css/cssLayout.css b/web/resources/css/cssLayout.css
new file mode 100644 (file)
index 0000000..eb81f7e
--- /dev/null
@@ -0,0 +1,175 @@
+/**
+div, table {
+       border: 1px solid #ff0000;
+}
+/**/
+
+#top {
+       position: relative;
+       background-color: #036fab;
+       color: #ffffff;
+       padding: 5px;
+       margin: 0px 0px 10px 0px;
+}
+
+#footer {
+       position: relative;
+       background-color: #c2dfef;
+       padding: 5px;
+       margin: 10px 0px 0px 0px;
+}
+
+#left {
+       float: left;
+       background-color: #ece3a5;
+       padding: 5px;
+       width: 150px;
+}
+
+#right {
+       float: right;
+       background-color: #ece3a5;
+       padding: 5px;
+       width: 150px;
+}
+
+.center_content {
+       position: relative;
+       background-color: #dddddd;
+       padding: 5px;
+}
+
+.left_content {
+       padding: 5px;
+       margin-left: 170px;
+}
+
+#top a:link, #top a:visited {
+       color: #ffffff;
+       font-weight : bold;
+       text-decoration: none;
+}
+
+#top a:link:hover, #top a:visited:hover  {
+       color: #000000;
+       font-weight : bold;
+       text-decoration : underline;
+}
+
+table, .table {
+       margin: 0px;
+       padding: 0px;
+}
+
+.table {
+       width: 500px;
+}
+
+.table_big {
+       width: 100%;
+}
+
+.table_row {
+       width: 100%;
+       min-height: 20px;
+}
+
+.table_left {
+       width: 250px;
+       min-height: 20px;
+       float: left;
+}
+
+.table_right {
+       width: 200px;
+       min-height: 20px;
+       float: right;
+}
+
+.table_left25 {
+       width: 20px;
+       min-height: 20px;
+       float: left;
+}
+
+.table_right75 {
+       width: 430px;
+       min-height: 20px;
+       float: right;
+}
+
+.para {
+       padding: 5px 5px 5px 5px;
+}
+
+.clear {
+       clear: both;
+}
+
+ul.footer_nav {
+       text-align: center;
+       /*width : 95%;*/
+       list-style: none;
+       margin: 0px;
+}
+
+ul.footer_nav li.footer_link {
+       float: left;
+       width: 100px;
+}
+
+ul.footer_nav li.footer_copyright {
+       float: right;
+       width: 300px;
+       margin-right: 10px;
+}
+
+.menu ul {
+       list-style: none;
+       padding-left: 5px;
+}
+
+.table_header, .table_label {
+       text-align: center;
+       font-weight: bold;
+}
+
+#content_header {
+       background-color: #dddddd;
+       font-weight: bold;
+       font-size: 18px;
+       margin-bottom: 20px;
+}
+
+.table_header_column {
+       width: 100px;
+}
+
+.table_header_column25 {
+       width: 25%;
+}
+
+.table_data_column {
+       width: 100px;
+}
+
+.item_price, .item_total_price {
+       text-align: right;
+}
+
+.errors {
+       color: red;
+}
+
+.fatals {
+       color: red;
+       font-weight: bold;
+}
+
+.infos {
+       color: cornflowerblue;
+}
+
+.warnings {
+       color: gold;
+}
diff --git a/web/resources/css/default.css b/web/resources/css/default.css
new file mode 100644 (file)
index 0000000..7b8fe85
--- /dev/null
@@ -0,0 +1,31 @@
+body {
+       background-color: #ffffff;
+       font-size: 12px;
+       font-family: sans-serif;
+       color: #000000;
+       margin: 10px;
+}
+
+h1 {
+       border-bottom: 1px solid #AFAFAF;
+       font-size:  16px;
+       font-weight: bold;
+       margin: 0px;
+       padding: 0px;
+}
+
+a:link, a:visited {
+       color: #045491;
+       font-weight : bold;
+       text-decoration: none;
+}
+
+a:link:hover, a:visited:hover {
+       color: #045491;
+       font-weight : bold;
+       text-decoration : underline;
+}
+
+label {
+       vertical-align: middle;
+}
diff --git a/web/terms.xhtml b/web/terms.xhtml
new file mode 100644 (file)
index 0000000..ba7d66d
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <ui:composition template="/WEB-INF/templates/guest/guest_base.tpl">
+               <ui:define name="guest_title">#{msg.PAGE_TITLE_INDEX_TERMS}</ui:define>
+
+               <ui:define name="content_header">
+                       #{msg.CONTENT_TITLE_INDEX_TERMS}
+               </ui:define>
+
+               <ui:define name="content">
+                       Hier kommen die allgemeinen Geschäftsbedingungen hin.
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/web/user/login.xhtml b/web/user/login.xhtml
new file mode 100644 (file)
index 0000000..7f4a55a
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <ui:composition template="/WEB-INF/templates/guest/guest_base.tpl" id="user_login">
+               <ui:define name="guest_title">#{msg.PAGE_TITLE_USER_LOGIN}</ui:define>
+
+               <ui:define name="content_header">
+                       #{msg.CONTENT_TITLE_USER_LOGIN}
+               </ui:define>
+
+               <ui:define name="content">
+                       <div class="para">
+                               <!-- TODO Internatialize this somehow //-->
+                               Noch kein Benutzerkonto? Einfach <h:link id="user_register" outcome="user_register" title="Als Benutzer anmelden">hier</h:link> anmelden.
+                       </div>
+
+                       <div class="para">
+                               <ui:include id="login_form" class="login_form" src="/WEB-INF/templates/guest/guest_login_form.tpl" />
+                       </div>
+
+                       <div class="para">
+                               <h:link id="user_lost_password" outcome="user_lost_passwd" title="Passwort wiederherstellen" value="Passwort vergessen?" />
+                       </div>
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/web/user/login_error.xhtml b/web/user/login_error.xhtml
new file mode 100644 (file)
index 0000000..3c81b0a
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <ui:composition template="/WEB-INF/templates/guest/guest_base.tpl" id="login_error">
+               <ui:define name="guest_title">#{msg.PAGE_TITLE_USER_LOGIN_ERROR}</ui:define>
+
+               <ui:define name="content_header">
+                       #{msg.CONTENT_TITLE_USER_LOGIN_ERROR}
+               </ui:define>
+
+               <ui:define name="content">
+                       Hier kommt die Fehlermeldung hin.
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/web/user/lost_passwd.xhtml b/web/user/lost_passwd.xhtml
new file mode 100644 (file)
index 0000000..0fbc9e6
--- /dev/null
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <ui:composition template="/WEB-INF/templates/guest/guest_base.tpl">
+               <ui:define name="guest_title">#{msg.PAGE_TITLE_USER_LOST_PASSWORD}</ui:define>
+
+               <ui:define name="content_header">
+                       #{msg.CONTENT_TITLE_USER_LOST_PASSWORD}
+               </ui:define>
+
+               <ui:define name="content">
+                       <div class="para" id="user_lost_password_content">
+                               <h:form id="lost_password_form">
+                                       <div class="table">
+                                               <div class="table_header">
+                                                       #{msg.GUEST_LOST_PASSWORD_TITLE}
+                                               </div>
+
+                                               <fieldset id="login_data">
+                                                       <legend title="#{msg.GUEST_LOST_PASSWORD_LEGEND_TITLE}">#{msg.GUEST_LOST_PASSWORD_LEGEND}</legend>
+
+                                                       <div class="table_row">
+                                                               <div class="table_left">
+                                                                       <h:outputLabel for="id" value="#{msg.ENTER_USER_NAME}" />
+                                                               </div>
+
+                                                               <div class="table_right">
+                                                                       <h:inputText class="input" id="id" size="10" maxlength="20" />
+                                                               </div>
+
+                                                               <div class="clear"></div>
+                                                       </div>
+
+                                                       <div class="table_header">
+                                                               #{msg.GUEST_LOST_PASSWORD_NUMBER_OR_EMAIL}
+                                                       </div>
+
+                                                       <div class="table_row">
+                                                               <div class="table_left">
+                                                                       <h:outputLabel for="email" value="#{msg.ENTER_EMAIL_ADDRESS}" />
+                                                               </div>
+
+                                                               <div class="table_right">
+                                                                       <h:inputText class="input" id="email" size="20" maxlength="255" />
+                                                               </div>
+
+                                                               <div class="clear"></div>
+                                                       </div>
+
+                                               </fieldset>
+
+                                               <div class="table_footer">
+                                                       <h:commandButton class="reset" type="reset" value="#{msg.BUTTON_RESET_FORM}" />
+                                                       <h:commandButton class="submit" type="submit" value="#{msg.BUTTON_CONTINUE_STEP_2}" action="#{passwdRecoverController.doLostPasswordStep2()}" />
+                                               </div>
+                                       </div>
+                               </h:form>
+                       </div>
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/web/user/register.xhtml b/web/user/register.xhtml
new file mode 100644 (file)
index 0000000..bc6d512
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <ui:composition template="/WEB-INF/templates/guest/guest_base.tpl">
+               <ui:define name="guest_title">#{msg.PAGE_TITLE_USER_REGISTER}</ui:define>
+
+               <ui:define name="content_header">
+                       #{msg.CONTENT_TITLE_USER_REGISTER}
+               </ui:define>
+
+               <ui:define name="content">
+                       <div class="para">
+                               #{msg.GUEST_ALREADY_USER_CONTINUE_LOGIN_1}
+                               <h:link outcome="user_login" value="#{msg.CLICK_HERE}" />
+                               #{msg.GUEST_ALREADY_USER_CONTINUE_LOGIN_2}
+                       </div>
+
+                       <div class="registration_form">
+                               <ui:include src="/WEB-INF/templates/guest/guest_registration_form.tpl" />
+                       </div>
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/web/user/register_done.xhtml b/web/user/register_done.xhtml
new file mode 100644 (file)
index 0000000..18b2d49
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <ui:composition template="/WEB-INF/templates/guest/guest_base.tpl">
+               <ui:define name="guest_title">#{msg.PAGE_TITLE_USER_REGISTER_DONE}</ui:define>
+
+               <ui:define name="content_header">
+                       #{msg.CONTENT_TITLE_USER_REGISTER_DONE}
+               </ui:define>
+
+               <ui:define name="content">
+                       <div class="para">
+                               #{msg.GUEST_USER_REGISTRATION_COMPLETED}
+                       </div>
+
+                       <div class="registration_form">
+                               <h:link id="resend_link" class="resend_link" value="#{msg.LINK_GUEST_RESENT_CONFIRMATION_LINK}" outcome="user_resend_link">
+                                       <f:param name="user_id" value="#{userController.userId}" />
+                               </h:link>
+                       </div>
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/web/user/resend_link.xhtml b/web/user/resend_link.xhtml
new file mode 100644 (file)
index 0000000..4030424
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <ui:composition template="/WEB-INF/templates/guest/guest_base.tpl">
+               <ui:define name="guest_title">#{msg.PAGE_TITLE_INDEX_RESEND_LINK}</ui:define>
+
+               <ui:define name="content_header">
+                       #{msg.CONTENT_TITLE_INDEX_RESEND_LINK}
+               </ui:define>
+
+               <ui:define name="content">
+                       Here goes your content.
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/web/user/show_addressbook.xhtml b/web/user/show_addressbook.xhtml
new file mode 100644 (file)
index 0000000..7000aae
--- /dev/null
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
+
+       <f:metadata>
+               <f:viewParam id="addressbookId" name="addressbookId" value="#{addressbookController.addressbookId}" required="true" requiredMessage="#{msg.PARAMETER_ADDRESSBOOK_ID_MISSING}" converterMessage="#{msg.PARAMETER_ADDRESSBOOK_ID_INVALID}" validatorMessage="#{msg.PARAMETER_ADDRESSBOOK_ID_NOT_FOUND}">
+                       <f:convertNumber for="addressbookId" type="number" minIntegerDigits="1" maxIntegerDigits="20" />
+                       <f:validator for="addressbookId" validatorId="AddressbookIdValidator" />
+               </f:viewParam>
+       </f:metadata>
+
+       <ui:composition template="/WEB-INF/templates/#{loginController.templateType}/#{loginController.templateType}_base.tpl">
+               <ui:define name="login_title">#{msg.PAGE_TITLE_USER_SHOW_ADDRESSBOOK}</ui:define>
+               <ui:define name="guest_title">#{msg.PAGE_TITLE_INDEX_SHOW_ADDRESSBOOK}</ui:define>
+
+               <ui:define name="content_header">
+                       #{msg.CONTENT_TITLE_USER_SHOW_ADDRESSBOOK}
+               </ui:define>
+
+               <ui:define name="content">
+                       <h:panelGrid headerClass="table_header" styleClass="table" columns="2" rendered="#{addressbookController.isAddressbookLoaded()}">
+                               <c:set value="#{addressbookController.addressbookUser}" target="#{profileController}" property="user" />
+
+                               <f:facet name="header">#{msg.TABLE_HEADER_SHOW_ADDRESSBOOK}</f:facet>
+
+                               <h:outputLabel for="addressbookId" class="table_label">#{msg.ADDRESSBOOK_ID}</h:outputLabel>
+                               <h:outputText id="addressbookId" value="#{addressbookController.addressbookId}" />
+
+                               <h:outputLabel for="addressbookName" class="table_label">#{msg.ADDRESSBOOK_NAME}</h:outputLabel>
+                               <h:outputText id="addressbookName" value="#{addressbookController.addressbookName}" />
+
+                               <h:outputLabel for="userProfileLink" class="table_label">#{msg.ADDRESSBOOK_OWNER}</h:outputLabel>
+                               <ui:include src="/WEB-INF/templates/generic/user_profile_link.tpl" />
+
+                               <h:outputLabel for="addressbookCreated" class="table_label">#{msg.ADDRESSBOOK_CREATED}</h:outputLabel>
+                               <h:outputFormat id="addressbookCreated" value="#{addressbookController.addressbook.addressbookCreated.time}" title="#{msg.ADDRESSBOOK_CREATED_TITLE}">
+                                       <f:convertDateTime for="addressbookCreated" type="both" timeStyle="short" dateStyle="medium" />
+                               </h:outputFormat>
+
+                               <h:outputLabel for="addressbookStatus" class="table_label">#{msg.ADDRESSBOOK_STATUS}</h:outputLabel>
+                               <h:outputText id="addressbookStatus" value="#{msg[addressbookController.addressbook.addressbookStatus.messageKey]}" title="#{msg.ADDRESSBOOK_STATUS_TITLE}" />
+
+                               <f:facet name="footer">
+                                       <h:outputText id="ownProfileInvible" class="notice" value="#{msg.USER_NOT_LOGGED_IN}" rendered="#{not loginController.isUserLoggedIn()}" />
+                                       <h:outputText id="ownProfileInvible" class="notice" value="#{msg.LOGIN_OWN_PROFILE_INVISIBLE}" rendered="#{loginController.isUserLoggedIn() and loginController.isInvisible()}" />
+
+                                       <ui:fragment rendered="#{loginController.isUserLoggedIn() and not loginController.isInvisible()}">
+                                               <h:link id="startSharing" outcome="login_start_sharing_addressbook" value="#{msg.LINK_LOGIN_START_SHARING_ADDRESSBOOK}" title="#{msg.LINK_LOGIN_START_SHARING_ADDRESSBOOK_TITLE}" rendered="#{addressbookController.isOwnAddressbook()}" />
+
+                                               <h:outputText value="Bla bla" rendered="#{addressbookController.isOtherAddressbook()}" />
+                                       </ui:fragment>
+                               </f:facet>
+                       </h:panelGrid>
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/web/user/show_addressbook_entries.xhtml b/web/user/show_addressbook_entries.xhtml
new file mode 100644 (file)
index 0000000..e4cb5ae
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         >
+
+       <ui:composition template="/WEB-INF/templates/login/login_base.tpl">
+               <ui:define name="login_title">#{msg.PAGE_TITLE_USER_SHOW_ADDRESSBOOK_ENTRIES}</ui:define>
+
+               <ui:define name="content_header">
+                       #{msg.CONTENT_TITLE_USER_SHOW_ADDRESSBOOK_ENTRIES}
+               </ui:define>
+
+               <ui:define name="content">
+                       Here goes your content.
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/web/user/user_list.xhtml b/web/user/user_list.xhtml
new file mode 100644 (file)
index 0000000..12f18f9
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
+
+       <ui:composition template="/WEB-INF/templates/#{loginController.templateType}/#{loginController.templateType}_base.tpl">
+               <ui:define name="login_title">#{msg.PAGE_TITLE_USER_LIST}</ui:define>
+
+               <ui:define name="content_header">
+                       #{msg.CONTENT_TITLE_USER_LIST}
+               </ui:define>
+
+               <ui:define name="content">
+                       <div class="table_big">
+                               <div class="table_header">
+                                       #{msg.TABLE_HEADER_USER_LIST}
+                               </div>
+
+                               <h:dataTable id="userList" var="user" value="#{userController.allVisibleUsers()}" headerClass="table_header_column25" summary="#{msg.TABLE_SUMMARY_USER_LIST}" rendered="#{userController.isVisibleUserFound()}">
+                                       <c:set value="#{share.shareUserSharee}" target="#{profileController}" property="user" />
+                                       <h:column>
+                                               <f:facet name="header">#{msg.USER_ID}</f:facet>
+                                               <ui:include src="/WEB-INF/templates/generic/user_profile_link.tpl" />
+                                       </h:column>
+
+                                       <h:column>
+                                               <f:facet name="header">#{msg.USER_NAME}</f:facet>
+                                               <ui:include src="/WEB-INF/templates/generic/user_profile_link.tpl" />
+                                       </h:column>
+
+                                       <h:column>
+                                               <f:facet name="header">#{msg.USER_CREATED}</f:facet>
+                                               <h:outputFormat id="userCreated" value="#{user.userCreated.time}" title="#{msg.USER_CREATED_TITLE}" />
+                                       </h:column>
+
+                                       <h:column>
+                                               <f:facet name="header">#{msg.USER_LIST_SHARING_ADDRESSBOOKS}</f:facet>
+                                               <ui:fragment rendered="#{loginController.isUserLoggedIn()}">
+                                                       <h:link outcome="login_list_sharing_addressbooks" value="#{msg.LINK_LOGIN_LIST_SHARING_ADDRESSBOOKS}" title="#{msg.LINK_LOGIN_LIST_SHARING_ADDRESSBOOKS_TITLE}">
+                                                               <f:param name="userId" value="#{user.userId}" />
+                                                       </h:link>
+                                               </ui:fragment>
+                                               <ui:fragment rendered="#{loginController.isGuest()}">
+                                                       <h:outputText id="userShared" value="#{addressbookController.countAllUserSharedAddressbooks(user)}" />
+                                               </ui:fragment>
+                                       </h:column>
+                               </h:dataTable>
+                       </div>
+               </ui:define>
+       </ui:composition>
+</html>
diff --git a/web/user/user_profile.xhtml b/web/user/user_profile.xhtml
new file mode 100644 (file)
index 0000000..6fdf9e8
--- /dev/null
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:h="http://xmlns.jcp.org/jsf/html"
+         xmlns:f="http://xmlns.jcp.org/jsf/core"
+         xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
+
+       <f:metadata>
+               <f:viewParam id="userId" name="userId" value="#{userController.userId}" required="true" requiredMessage="#{msg.PARAMETER_USER_ID_MISSING}" converterMessage="#{msg.PARAMETER_USER_ID_INVALID}" validatorMessage="#{msg.PARAMETER_USER_ID_NOT_FOUND}">
+                       <f:convertNumber for="userId" type="number" minIntegerDigits="1" maxIntegerDigits="20" />
+                       <f:validator for="userId" validatorId="UserIdValidator" />
+               </f:viewParam>
+       </f:metadata>
+
+       <ui:composition template="/WEB-INF/templates/#{loginController.templateType}/#{loginController.templateType}_base.tpl">
+               <ui:define name="login_title">#{msg.PAGE_TITLE_LOGIN_USER_PROFILE}</ui:define>
+               <ui:define name="guest_title">#{msg.PAGE_TITLE_INDEX_USER_PROFILE}</ui:define>
+
+               <ui:define name="content_header">
+                       #{msg.CONTENT_TITLE_INDEX_USER_PROFILE}
+               </ui:define>
+
+               <ui:define name="content">
+                       <c:choose>
+                               <c:when test="#{userController.isUserIdEmpty()}">
+                                       <ui:include src="/WEB-INF/templates/generic/userid_error.tpl" />
+                               </c:when>
+
+                               <c:when test="#{profileController.isProfileLinkVisibleById(userController.userId)}">
+                                       <div align="center">
+                                               <h:panelGrid styleClass="table" headerClass="table_header" footerClass="table_footer">
+                                                       <f:facet name="header">
+                                                               #{msg.PUBLIC_USER_PROFILE}
+                                                       </f:facet>
+                                               </h:panelGrid>
+                                       </div>
+                               </c:when>
+
+                               <c:otherwise>
+                                       #{msg.ERROR_PROFILE_NOT_VISIBLE}
+                               </c:otherwise>
+                       </c:choose>
+               </ui:define>
+       </ui:composition>
+</html>