AAP Bundle
git-svn-id: https://svn.libreccm.org/ccm/trunk@264 8810af33-2d31-482b-a856-94f89814c4dfmaster
|
|
@ -0,0 +1,6 @@
|
||||||
|
2007-08-06:
|
||||||
|
./ccm-aap-aplaws/src/WEB-INF/content-types/c...types/aplaws-mparticle-item.jsp
|
||||||
|
<define:page name="itemPage" application="content changed to
|
||||||
|
<define:page name="itemPage" application="content-section"
|
||||||
|
as is all other contenttyp jsp pages. Requires corresponding modification
|
||||||
|
in the theme!
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<ccm:application xmlns:ccm="http://ccm.redhat.com/ccm-project"
|
||||||
|
name="ccm-aap-aplaws"
|
||||||
|
prettyName="AAP-APLAWS"
|
||||||
|
version="6.6.0"
|
||||||
|
release="1"
|
||||||
|
webapp="ROOT">
|
||||||
|
<ccm:dependencies>
|
||||||
|
<ccm:requires name="ccm-core" version="6.6.0" relation="ge"/>
|
||||||
|
<ccm:requires name="ccm-cms" version="6.6.0" relation="ge"/>
|
||||||
|
<ccm:requires name="ccm-ldn-subsite" version="6.6.0" relation="ge"/>
|
||||||
|
<ccm:requires name="ccm-ldn-portal" version="6.6.0" relation="ge"/>
|
||||||
|
<ccm:requires name="ccm-ldn-terms" version="6.6.0" relation="ge"/>
|
||||||
|
<ccm:requires name="ccm-ldn-navigation" version="6.6.0" relation="ge"/>
|
||||||
|
<!-- Dependency from ccm-ldn-search because of 2 xsl files in aplaws theme -->
|
||||||
|
<ccm:requires name="ccm-ldn-search" version="6.6.0" relation="ge"/>
|
||||||
|
</ccm:dependencies>
|
||||||
|
|
||||||
|
<ccm:directories>
|
||||||
|
<ccm:directory name="pdl"/>
|
||||||
|
<ccm:directory name="src"/>
|
||||||
|
</ccm:directories>
|
||||||
|
|
||||||
|
<ccm:contacts>
|
||||||
|
<ccm:contact uri="http://www.redhat.com/software/rhea" type="website"/>
|
||||||
|
<ccm:contact uri="mailto:rhea@redhat.com" type="support"/>
|
||||||
|
</ccm:contacts>
|
||||||
|
|
||||||
|
<ccm:description>
|
||||||
|
Service module which tailors the aplaws software to a specific purpose
|
||||||
|
and/or a specific site.
|
||||||
|
- setting up a categorization / terms system (cf. load.java)
|
||||||
|
- integrate custom spezific jsp's
|
||||||
|
- setting up custom specific configuration parameters (cf. the bundles)
|
||||||
|
- overwrite default classes by custom specific ones (cf. src/.../aplaws)
|
||||||
|
- provide a default theme, which meets accessibility requirements and
|
||||||
|
overwrites the default, table based design (cf. web/.../themes)
|
||||||
|
|
||||||
|
This modules tailors APLAWS for use at the "Akademie fuer Arbeit und Politik",
|
||||||
|
University of Bremen, Germany.
|
||||||
|
|
||||||
|
APLAWS is a collaboration and content management system which is based upon
|
||||||
|
the Red Hat Web Application Framework, which is a platform for writing
|
||||||
|
database-backed web applications in Java.
|
||||||
|
</ccm:description>
|
||||||
|
</ccm:application>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
* Thu Sep 22 2005 Alan Pevec <apevec@redhat.com>
|
||||||
|
- Build all APLAWS+ bundles from the common set of templates.
|
||||||
|
|
||||||
|
* Mon Feb 21 2005 Alan Pevec <apevec@redhat.com>
|
||||||
|
- Requires applications.
|
||||||
|
|
||||||
|
* Mon Jan 26 2004 Daniel Berrange <berrange@redhat.com>
|
||||||
|
- Initial build.
|
||||||
|
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
BUNDLE_NAME=aplaws-plus-zes-devel
|
||||||
|
BUNDLE_PRETTY_NAME="APLAWS+ ZeS Devel Bundle"
|
||||||
|
VERSION=1.0.5devel
|
||||||
|
RELEASE=1
|
||||||
|
|
@ -0,0 +1,78 @@
|
||||||
|
# Main apps
|
||||||
|
ccm-core
|
||||||
|
ccm-cms
|
||||||
|
|
||||||
|
# Content assets
|
||||||
|
ccm-cms-assets-fileattachment
|
||||||
|
ccm-cms-assets-notes
|
||||||
|
ccm-cms-assets-relatedlink
|
||||||
|
|
||||||
|
# Content types
|
||||||
|
ccm-cms-types-address
|
||||||
|
# -- ccm-cms-types-agenda
|
||||||
|
ccm-cms-types-article
|
||||||
|
ccm-cms-types-bookmark
|
||||||
|
ccm-cms-types-contact
|
||||||
|
# -- ccm-cms-types-esdservice
|
||||||
|
ccm-cms-types-event
|
||||||
|
# -- faqitem koennte bei zes auch entfallen
|
||||||
|
# 2008-06-07 auskommentiert, ist in Produktionssystem
|
||||||
|
# nicht enthalten und nicht anwählbar.
|
||||||
|
# -- ccm-cms-types-faqitem
|
||||||
|
ccm-cms-types-filestorageitem
|
||||||
|
ccm-cms-types-formitem
|
||||||
|
ccm-cms-types-formsectionitem
|
||||||
|
# -- glossaryitem koennte bei zes auch entfallen
|
||||||
|
# 2008-06-07 auskommentiert, ist in Produktionssystem
|
||||||
|
# nicht enthalten und nicht anwählbar.
|
||||||
|
# -- ccm-cms-types-glossaryitem
|
||||||
|
# -- ccm-cms-types-htmlform
|
||||||
|
# -- ccm-cms-types-inlinesite
|
||||||
|
# -- ccm-cms-types-job
|
||||||
|
# -- ccm-cms-types-legalnotice
|
||||||
|
# -- ccm-cms-types-minutes
|
||||||
|
# -- ccm-cms-types-motditem
|
||||||
|
ccm-cms-types-mparticle
|
||||||
|
ccm-cms-types-newsitem
|
||||||
|
# -- ccm-cms-types-organization
|
||||||
|
# -- ccm-cms-types-pressrelease
|
||||||
|
# -- ccm-cms-types-service
|
||||||
|
ccm-cms-types-siteproxy
|
||||||
|
# -- xmlfeed wird moeglicherweise ebenfalls nicht gebraucht
|
||||||
|
# -- ccm-cms-types-xmlfeed
|
||||||
|
|
||||||
|
|
||||||
|
# Applications
|
||||||
|
# ------------
|
||||||
|
# -- ccm-auth-http
|
||||||
|
# -- ccm-bookmarks
|
||||||
|
# -- ccm-docmngr ## temp., produces errors in build
|
||||||
|
# -- ccm-formbuilder-pdf
|
||||||
|
ccm-forum
|
||||||
|
# -- ccm-simplesurvey
|
||||||
|
ccm-user-preferences
|
||||||
|
# -- ccm-weblog
|
||||||
|
# -- ccm-webpage
|
||||||
|
|
||||||
|
# ldn extensions
|
||||||
|
# --------------
|
||||||
|
# -- ccm-ldn-aplaws
|
||||||
|
# -- ccm-ldn-atoz
|
||||||
|
# -- ccm-ldn-dublin
|
||||||
|
# -- ccm-ldn-exporter
|
||||||
|
# -- ccm-ldn-freeform
|
||||||
|
ccm-ldn-image-step
|
||||||
|
# -- ccm-ldn-importer
|
||||||
|
ccm-ldn-navigation
|
||||||
|
ccm-ldn-portal
|
||||||
|
ccm-ldn-rss
|
||||||
|
ccm-ldn-search
|
||||||
|
ccm-ldn-shortcuts
|
||||||
|
ccm-ldn-subsite
|
||||||
|
ccm-ldn-terms
|
||||||
|
ccm-ldn-theme
|
||||||
|
ccm-ldn-util
|
||||||
|
|
||||||
|
# aap extensions
|
||||||
|
ccm-aap-aplaws
|
||||||
|
|
||||||
|
|
@ -0,0 +1,113 @@
|
||||||
|
waf.bebop.base_page=com.arsdigita.aplaws.ui.SimplePage
|
||||||
|
; dhtml editor to use (system wide)
|
||||||
|
waf.bebop.dhtml_editor=FCKeditor
|
||||||
|
|
||||||
|
waf.categorization.show_internal_name=true
|
||||||
|
waf.categorization.supported_languages=de,en
|
||||||
|
|
||||||
|
waf.dispatcher.default_expiry=3600
|
||||||
|
;
|
||||||
|
waf.kernel.data_permission_check_enabled=false
|
||||||
|
waf.kernel.primary_user_identifier=email
|
||||||
|
; if you activate screen_name, forum loader doesn't work.
|
||||||
|
; waf.kernel.primary_user_identifier=screen_name
|
||||||
|
|
||||||
|
; security.properties:
|
||||||
|
waf.auto_registration_on=false
|
||||||
|
waf.pagemap.root=navigation/
|
||||||
|
waf.pagemap.workspace=navigation/
|
||||||
|
waf.pagemap.login_redirect=content/content-center-redirect.jsp
|
||||||
|
|
||||||
|
; Searches for localized style sheet (among others)
|
||||||
|
waf.templating.stylesheet_resolver=com.arsdigita.templating.PatternStylesheetResolver
|
||||||
|
waf.templating.stylesheet_paths=/WEB-INF/resources/aplaws-stylesheet-paths.txt
|
||||||
|
|
||||||
|
; Configures the xml processing
|
||||||
|
waf.xml.xsl_transformer=xalan
|
||||||
|
waf.xml.activate_full_date_formatter=true
|
||||||
|
|
||||||
|
com.arsdigita.cms.category_authoring_add_form=com.arsdigita.aplaws.ui.ItemCategoryPicker
|
||||||
|
|
||||||
|
com.arsdigita.cms.default_item_template_path=/default/aplaws-item.jsp
|
||||||
|
com.arsdigita.cms.default_folder_template_path=/default/aplaws-folder.jsp
|
||||||
|
com.arsdigita.cms.default_template_resolver_class=com.arsdigita.london.subsite.dispatcher.SubsiteItemTemplateResolver
|
||||||
|
|
||||||
|
; Configure dhtml editor for use in cms content-center
|
||||||
|
com.arsdigita.cms.dhtml_editor_config=FCKEditor.Config.StyleDefault?,/assets/fckeditor/config/fckconfigOpenCCM.js
|
||||||
|
com.arsdigita.cms.dhtml_editor_hidden_buttons=
|
||||||
|
; com.arsdigita.cms.dhtml_editor_plugins=TableOperations,CSS
|
||||||
|
com.arsdigita.cms.dhtml_editor_plugins=
|
||||||
|
|
||||||
|
com.arsdigita.cms.disable_item_pfs=true
|
||||||
|
|
||||||
|
com.arsdigita.cms.hide_admin_tabs=true
|
||||||
|
com.arsdigita.cms.hide_folder_index_checkbox=true
|
||||||
|
com.arsdigita.cms.hide_launch_date=true
|
||||||
|
com.arsdigita.cms.hide_templates_tab=true
|
||||||
|
com.arsdigita.cms.hide_timezone=true
|
||||||
|
com.arsdigita.cms.hide_udct_ui=true
|
||||||
|
|
||||||
|
com.arsdigita.cms.use_section_categories=false
|
||||||
|
com.arsdigita.cms.use_streamlined_creation=true
|
||||||
|
|
||||||
|
|
||||||
|
com.arsdigita.cms.contenttypes.event.hide_cost=true
|
||||||
|
com.arsdigita.cms.contenttypes.event.hide_date_description=false
|
||||||
|
com.arsdigita.cms.contenttypes.event.hide_event_type=true
|
||||||
|
com.arsdigita.cms.contenttypes.event.hide_link_to_map=true
|
||||||
|
com.arsdigita.cms.contenttypes.event.hide_main_contributor=true
|
||||||
|
com.arsdigita.cms.contenttypes.event.use_html_date_description=false
|
||||||
|
|
||||||
|
|
||||||
|
com.arsdigita.cms.contenttypes.newsitem.hide_homepage=true
|
||||||
|
|
||||||
|
com.arsdigita.cms.contenttypes.mparticle.template=/WEB-INF/content-types/com/arsdigita/cms/contenttypes/aplaws-mparticle-item.jsp
|
||||||
|
|
||||||
|
com.arsdigita.cms.contenttypes.siteproxy.defaulttemplate=/WEB-INF/content-types/com/arsdigita/cms/contenttypes/aplaws-siteproxy-item.jsp
|
||||||
|
|
||||||
|
; Forum application
|
||||||
|
com.arsdigita.forum.show_new_tabs=true
|
||||||
|
com.arsdigita.forum.use_wysiwyg_editor=true
|
||||||
|
com.arsdigita.forum.allow_quick_finish=true
|
||||||
|
com.arsdigita.forum.disable_page_caching=true
|
||||||
|
|
||||||
|
; atoz currently not in use
|
||||||
|
; com.arsdigita.london.atoz.root_category_picker=com.arsdigita.london.terms.ui.RootCategoryPicker
|
||||||
|
|
||||||
|
; com.arsdigita.london.navigation.category_menu_show_grand_children_min=1
|
||||||
|
; com.arsdigita.london.navigation.category_menu_show_grand_children=adaptive
|
||||||
|
; com.arsdigita.london.navigation.category_menu_show_grand_children_limit=1
|
||||||
|
; com.arsdigita.london.navigation.category_menu_show_grand_children_max=65536
|
||||||
|
com.arsdigita.london.navigation.category_menu_show_grand_children=false
|
||||||
|
; com.arsdigita.london.navigation.category_menu_show_nephews=false
|
||||||
|
com.arsdigita.london.navigation.default_cat_root_path=/navigation/
|
||||||
|
com.arsdigita.london.navigation.default_template=/packages/navigation/templates/aap-default.jsp
|
||||||
|
|
||||||
|
com.arsdigita.london.search.show_sponsored_links=true
|
||||||
|
|
||||||
|
com.arsdigita.london.subsite.root_category_picker=com.arsdigita.london.terms.ui.RootCategoryPicker
|
||||||
|
|
||||||
|
com.arsdigita.london.theme.default_theme_context=
|
||||||
|
com.arsdigita.london.theme.default_theme_manifest=ccm-ldn-theme.web.mf
|
||||||
|
com.arsdigita.london.theme.default_theme_path=__ccm__/themes/aplaws-generic
|
||||||
|
com.arsdigita.london.theme.file_extensions=bmp gif jpeg jpg png css js png xsl xml
|
||||||
|
|
||||||
|
|
||||||
|
; =============================================================================================
|
||||||
|
; devel specific configurations
|
||||||
|
waf.runtime.jdbc_url=jdbc\:postgresql\://localhost/aap?user\=aap&password\=aap47web
|
||||||
|
waf.runtime.jdbc_pool_size=80
|
||||||
|
|
||||||
|
waf.web.server=localhost\:8080
|
||||||
|
|
||||||
|
waf.admin.email=webmaster@aap.uni-bremen.de
|
||||||
|
waf.admin.name.given=AAP
|
||||||
|
waf.admin.name.family=Administrator
|
||||||
|
waf.admin.password=nge2015
|
||||||
|
waf.admin.password.question=12345
|
||||||
|
waf.admin.password.answer=6
|
||||||
|
|
||||||
|
; waf.debug in is kernel.properties, should be renamed waf.kernel.debug
|
||||||
|
waf.debug=true
|
||||||
|
waf.bebop.fancy_xsl_errors=true
|
||||||
|
|
||||||
|
|
@ -0,0 +1,561 @@
|
||||||
|
<!DOCTYPE web-app
|
||||||
|
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
|
||||||
|
"http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
|
||||||
|
|
||||||
|
<web-app>
|
||||||
|
|
||||||
|
<display-name>CCM AAP</display-name>
|
||||||
|
<description>Content and Collaboration Management</description>
|
||||||
|
|
||||||
|
<!-- path and filename of the log4j user accessible config file
|
||||||
|
WEB-INF/conf/log4j.properties is the built-in default value -->
|
||||||
|
<context-param>
|
||||||
|
<param-name>log4j-conf-file</param-name>
|
||||||
|
<param-value>WEB-INF/conf/log4j.properties</param-value>
|
||||||
|
</context-param>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Require secure connection by redirect to host-port part
|
||||||
|
of parameter waf.web.secure_server
|
||||||
|
NOT USED with AAP
|
||||||
|
<filter>
|
||||||
|
<filter-name>secured</filter-name>
|
||||||
|
<filter-class>com.arsdigita.web.SecureFilter</filter-class>
|
||||||
|
</filter>
|
||||||
|
-->
|
||||||
|
<!-- Initialize Profiler timers
|
||||||
|
NOT USED with AAP standard / production
|
||||||
|
<filter>
|
||||||
|
<filter-name>profiler</filter-name>
|
||||||
|
<filter-class>com.arsdigita.profiler.ProfilerFilter</filter-class>
|
||||||
|
</filter>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<filter>
|
||||||
|
<filter-name>shortcuts</filter-name>
|
||||||
|
<filter-class>com.arsdigita.london.shortcuts.ShortcutFilter</filter-class>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<filter>
|
||||||
|
<filter-name>subsite</filter-name>
|
||||||
|
<filter-class>com.arsdigita.london.subsite.SubsiteFilter</filter-class>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<!-- NOT USED HERE
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>secured</filter-name>
|
||||||
|
<url-pattern>/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>profiler</filter-name>
|
||||||
|
<url-pattern>/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>subsite</filter-name>
|
||||||
|
<url-pattern>/ccm/*</url-pattern>
|
||||||
|
<!-- please check: with or w/o ccm?
|
||||||
|
<url-pattern>/*</url-pattern>
|
||||||
|
-->
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>shortcuts</filter-name>
|
||||||
|
<url-pattern>/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Context Listener
|
||||||
|
required and used to initialize the runtime environment before any other
|
||||||
|
task is performed or any servlet initialized.
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
<listener>
|
||||||
|
<listener-class>com.arsdigita.web.CCMApplicationContextListener</listener-class>
|
||||||
|
</listener>
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
BASE SERVLET DECLARATIONS SECTION
|
||||||
|
basically requirred by ccm-core
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>reg</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ContextRegistrationServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>uri</param-name>
|
||||||
|
<param-value>/</param-value>
|
||||||
|
</init-param>
|
||||||
|
<load-on-startup>1</load-on-startup>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>legacy-dispatcher</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.sitenode.SiteNodeDispatcher</servlet-class>
|
||||||
|
<load-on-startup>3</load-on-startup>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>ccm-dispatcher</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.DispatcherServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>fallback-servlet</param-name>
|
||||||
|
<param-value>legacy-dispatcher</param-value>
|
||||||
|
</init-param>
|
||||||
|
<load-on-startup>2</load-on-startup>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>legacy-adapter</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.LegacyAdapterServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>cache-manager</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.caching.CacheServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>db-test</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.monitoring.DBTestServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>versioning-log</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.versioning.VersioningServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>oid-redirect</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.OIDRedirectServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>resource-resolver</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ResourceServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
ADDITIONAL SERVLET DECLARATIONS SECTION
|
||||||
|
basically requirred by ccm-cms
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>content-section</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.cms.ContentSectionServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>content-type-xsl</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.cms.dispatcher.ContentTypeXSLServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>content-item-xsl</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.cms.dispatcher.ContentItemXSLServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>template-xsl</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.cms.dispatcher.TemplateXSLServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>TextOnlyServlet</servlet-name>
|
||||||
|
<display-name>Text Only Servlet</display-name>
|
||||||
|
<servlet-class>
|
||||||
|
com.arsdigita.web.InternalPrefixerServlet
|
||||||
|
</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>prefix</param-name>
|
||||||
|
<param-value>/text</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>PrintFriendlyServlet</servlet-name>
|
||||||
|
<display-name>Printer Friendly Output Servlet</display-name>
|
||||||
|
<servlet-class>
|
||||||
|
com.arsdigita.web.InternalPrefixerServlet
|
||||||
|
</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>prefix</param-name>
|
||||||
|
<param-value>/print</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
MODULES SERVLET DECLARATIONS SECTION
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-atoz - servlet definitions BEGIN
|
||||||
|
NOT USED with ZeS
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>atoz-files</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>template-path</param-name>
|
||||||
|
<param-value>/templates/ccm-ldn-atoz</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
module ccm-ldn-atoz - servlet definitions END -->
|
||||||
|
|
||||||
|
<!-- module ccm-forum - servlet declarations BEGIN -->
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>forum-main</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.forum.ForumServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
<!-- module ccm-forum - servlet declarations END -->
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>portal-files</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>template-path</param-name>
|
||||||
|
<param-value>/templates/ccm-ldn-portal</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>navigation-files</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>template-path</param-name>
|
||||||
|
<param-value>/templates/ccm-ldn-navigation</param-value>
|
||||||
|
</init-param>
|
||||||
|
<init-param>
|
||||||
|
<param-name>file-resolver</param-name>
|
||||||
|
<param-value>com.arsdigita.london.navigation.NavigationFileResolver</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>portlet-type-xsl</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.dispatcher.PortletTypeXSLServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-rss - servlet declaration BEGIN -->
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>rss-files</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>template-path</param-name>
|
||||||
|
<param-value>/templates/ccm-ldn-rss</param-value>
|
||||||
|
</init-param>
|
||||||
|
<init-param>
|
||||||
|
<param-name>file-resolver</param-name>
|
||||||
|
<param-value>com.arsdigita.london.rss.RSSFileResolver</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
<!-- module ccm-ldn-rss - servlet declaration END -->
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-search - servlet declarations BEGIN -->
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>worker</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.london.search.SearchWorkerServlet</servlet-class>
|
||||||
|
<load-on-startup>4</load-on-startup>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>search-files</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>template-path</param-name>
|
||||||
|
<param-value>/templates/ccm-ldn-search</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>AxisServlet</servlet-name>
|
||||||
|
<display-name>Apache-Axis Servlet</display-name>
|
||||||
|
<servlet-class>
|
||||||
|
org.apache.axis.transport.http.AxisServlet
|
||||||
|
</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
<!-- module ccm-ldn-search - servlet declarations END -->
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-shortcuts - servlet definitions -->
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>shortcuts-files</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>template-path</param-name>
|
||||||
|
<param-value>/templates/ccm-ldn-shortcuts</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-subsite - servlet declarations BEGIN -->
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>subsite-files</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>template-path</param-name>
|
||||||
|
<param-value>/templates/ccm-ldn-subsite</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
<!-- module ccm-ldn-subsite - servlet declarations END -->
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-terms - servlet declarations BEGIN -->
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>terms-files</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>template-path</param-name>
|
||||||
|
<param-value>/templates/ccm-ldn-terms</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
<!-- module ccm-ldn-terms - servlet declarations END -->
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-themes - servlet declarations BEGIN -->
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>theme-files</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>template-path</param-name>
|
||||||
|
<param-value>/templates/ccm-ldn-theme</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>ThemeDownload</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.london.theme.dispatcher.ThemeDownloadServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>ThemePreviewServlet</servlet-name>
|
||||||
|
<display-name>Servlet to allow admins to preview look/feel</display-name>
|
||||||
|
<servlet-class>
|
||||||
|
com.arsdigita.london.theme.dispatcher.InternalThemePrefixerServlet
|
||||||
|
</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>prefix</param-name>
|
||||||
|
<param-value>/theme</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
<!-- module ccm-ldn-themes - servlet declarations END -->
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
MODULES SERVLET MAPPINGS SECTION
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-atoz - servlet mappings BEGIN
|
||||||
|
NOT USED HERE
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>atoz-files</servlet-name>
|
||||||
|
<url-pattern>/ccm-ldn-atoz/files/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
module ccm-ldn-atoz - servlet mappings END -->
|
||||||
|
|
||||||
|
<!-- module ccm-forum - servlet mappings BEGIN -->
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>forum-main</servlet-name>
|
||||||
|
<url-pattern>/forum-main/main/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
<!-- module ccm-forum - servlet mappings END -->
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>portlet-type-xsl</servlet-name>
|
||||||
|
<url-pattern>/__ccm__/servlet/portlet-type/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>portal-files</servlet-name>
|
||||||
|
<url-pattern>/ccm-ldn-portal/files/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>navigation-files</servlet-name>
|
||||||
|
<url-pattern>/ccm-ldn-navigation/files/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-rss - servlet mappings -->
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>rss-files</servlet-name>
|
||||||
|
<url-pattern>/ccm-ldn-rss/files/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-search - servlet mappings BEGIN -->
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>search-files</servlet-name>
|
||||||
|
<url-pattern>/ccm-ldn-search/files/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>AxisServlet</servlet-name>
|
||||||
|
<url-pattern>/services/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
<!-- module ccm-ldn-search - servlet mappings END -->
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-shortcuts - servlet mappings -->
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>shortcuts-files</servlet-name>
|
||||||
|
<url-pattern>/ccm-ldn-shortcuts/files/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-subsite - servlet mappings BEGIN -->
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>subsite-files</servlet-name>
|
||||||
|
<url-pattern>/ccm-ldn-subsite/files/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
<!-- module ccm-ldn-subsite - servlet mappings END -->
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-terms - servlet mappings BEGIN -->
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>terms-files</servlet-name>
|
||||||
|
<url-pattern>/ccm-ldn-terms/files/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
<!-- module ccm-ldn-terms - servlet mappings END -->
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-theme - servlet mappings BEGIN -->
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>theme-files</servlet-name>
|
||||||
|
<url-pattern>/theme-files/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>ThemeDownload</servlet-name>
|
||||||
|
<url-pattern>/theme-files/download/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>ThemePreviewServlet</servlet-name>
|
||||||
|
<url-pattern>/theme/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
<!-- module ccm-ldn-themes - servlet mappings END -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
BASE SERVLET MAPPINGS SECTION
|
||||||
|
basically requirred by ccm-core
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>reg</servlet-name>
|
||||||
|
<url-pattern>/__ccm__/null/reg/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>ccm-dispatcher</servlet-name>
|
||||||
|
<url-pattern>/ccm/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>legacy-adapter</servlet-name>
|
||||||
|
<url-pattern>/__ccm__/servlet/legacy-adapter/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>cache-manager</servlet-name>
|
||||||
|
<url-pattern>/expireCache/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>db-test</servlet-name>
|
||||||
|
<url-pattern>/dbtest</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>versioning-log</servlet-name>
|
||||||
|
<url-pattern>/versioning/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>oid-redirect</servlet-name>
|
||||||
|
<url-pattern>/redirect/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>resource-resolver</servlet-name>
|
||||||
|
<url-pattern>/resource/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
ADDITIONAL SERVLET MAPPINGS SECTION
|
||||||
|
basically requirred by ccm-cms
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>content-section</servlet-name>
|
||||||
|
<url-pattern>/__ccm__/servlet/content-section/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>content-item-xsl</servlet-name>
|
||||||
|
<url-pattern>/__ccm__/servlet/content-item/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>content-type-xsl</servlet-name>
|
||||||
|
<url-pattern>/__ccm__/servlet/content-type/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>template-xsl</servlet-name>
|
||||||
|
<url-pattern>/__ccm__/servlet/template/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>TextOnlyServlet</servlet-name>
|
||||||
|
<url-pattern>/text/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>PrintFriendlyServlet</servlet-name>
|
||||||
|
<url-pattern>/print/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
ERROR PAGES
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
|
<error-page>
|
||||||
|
<exception-type>com.arsdigita.dispatcher.AccessDeniedException</exception-type>
|
||||||
|
<location>/error/access-denied.jsp</location>
|
||||||
|
</error-page>
|
||||||
|
|
||||||
|
<error-page>
|
||||||
|
<exception-type>com.arsdigita.dispatcher.ObjectNotFoundException</exception-type>
|
||||||
|
<location>/error/object-not-found.jsp</location>
|
||||||
|
</error-page>
|
||||||
|
|
||||||
|
<error-page>
|
||||||
|
<exception-type>com.arsdigita.kernel.permissions.PermissionException</exception-type>
|
||||||
|
<location>/error/permission-denied.jsp</location>
|
||||||
|
</error-page>
|
||||||
|
|
||||||
|
<error-page>
|
||||||
|
<exception-type>com.arsdigita.persistence.DbNotAvailableException</exception-type>
|
||||||
|
<location>/error/db-not-available.jsp</location>
|
||||||
|
</error-page>
|
||||||
|
|
||||||
|
<error-page>
|
||||||
|
<exception-type>com.arsdigita.db.DbNotAvailableException</exception-type>
|
||||||
|
<location>/error/db-not-available.jsp</location>
|
||||||
|
</error-page>
|
||||||
|
|
||||||
|
<error-page>
|
||||||
|
<exception-type>java.lang.Exception</exception-type>
|
||||||
|
<location>/error/general.jsp</location>
|
||||||
|
</error-page>
|
||||||
|
|
||||||
|
<error-page>
|
||||||
|
<exception-type>java.lang.Error</exception-type>
|
||||||
|
<location>/error/general.jsp</location>
|
||||||
|
</error-page>
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
TAG LIBS
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
|
<taglib>
|
||||||
|
<taglib-uri>/WEB-INF/bebop-show.tld</taglib-uri>
|
||||||
|
<taglib-location>/WEB-INF/bebop-show.tld</taglib-location>
|
||||||
|
</taglib>
|
||||||
|
|
||||||
|
<taglib>
|
||||||
|
<taglib-uri>/WEB-INF/bebop-define.tld</taglib-uri>
|
||||||
|
<taglib-location>/WEB-INF/bebop-define.tld</taglib-location>
|
||||||
|
</taglib>
|
||||||
|
|
||||||
|
</web-app>
|
||||||
|
|
@ -0,0 +1,564 @@
|
||||||
|
<!DOCTYPE web-app
|
||||||
|
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
|
||||||
|
"http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
|
||||||
|
|
||||||
|
<web-app>
|
||||||
|
|
||||||
|
<display-name>CCM AAP</display-name>
|
||||||
|
<description>Content and Collaboration Management</description>
|
||||||
|
|
||||||
|
<!-- path and filename of the log4j user accessible config file
|
||||||
|
WEB-INF/conf/log4j.properties is the built-in default value -->
|
||||||
|
<context-param>
|
||||||
|
<param-name>log4j-conf-file</param-name>
|
||||||
|
<param-value>WEB-INF/conf/log4j.properties</param-value>
|
||||||
|
</context-param>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Require secure connection by redirect to host-port part
|
||||||
|
of parameter waf.web.secure_server
|
||||||
|
NOT USED with AAP
|
||||||
|
<filter>
|
||||||
|
<filter-name>secured</filter-name>
|
||||||
|
<filter-class>com.arsdigita.web.SecureFilter</filter-class>
|
||||||
|
</filter>
|
||||||
|
-->
|
||||||
|
<!-- Initialize Profiler timers
|
||||||
|
NOT USED with AAP standard / production
|
||||||
|
<filter>
|
||||||
|
<filter-name>profiler</filter-name>
|
||||||
|
<filter-class>com.arsdigita.profiler.ProfilerFilter</filter-class>
|
||||||
|
</filter>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<filter>
|
||||||
|
<filter-name>shortcuts</filter-name>
|
||||||
|
<filter-class>com.arsdigita.london.shortcuts.ShortcutFilter</filter-class>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<filter>
|
||||||
|
<filter-name>subsite</filter-name>
|
||||||
|
<filter-class>com.arsdigita.london.subsite.SubsiteFilter</filter-class>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<!-- NOT USED HERE
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>secured</filter-name>
|
||||||
|
<url-pattern>/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>profiler</filter-name>
|
||||||
|
<url-pattern>/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>subsite</filter-name>
|
||||||
|
<url-pattern>/ccm/*</url-pattern>
|
||||||
|
<!-- please check: with or w/o ccm?
|
||||||
|
<url-pattern>/*</url-pattern>
|
||||||
|
-->
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>shortcuts</filter-name>
|
||||||
|
<url-pattern>/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Context Listener
|
||||||
|
required and used to initialize the runtime environment before any other
|
||||||
|
task is performed or any servlet initialized.
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
<listener>
|
||||||
|
<listener-class>com.arsdigita.web.CCMApplicationContextListener</listener-class>
|
||||||
|
</listener>
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
BASE SERVLET DECLARATIONS SECTION
|
||||||
|
basically requirred by ccm-core
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>reg</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ContextRegistrationServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>uri</param-name>
|
||||||
|
<param-value>/</param-value>
|
||||||
|
</init-param>
|
||||||
|
<load-on-startup>1</load-on-startup>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>legacy-dispatcher</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.sitenode.SiteNodeDispatcher</servlet-class>
|
||||||
|
<load-on-startup>3</load-on-startup>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>ccm-dispatcher</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.DispatcherServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>fallback-servlet</param-name>
|
||||||
|
<param-value>legacy-dispatcher</param-value>
|
||||||
|
</init-param>
|
||||||
|
<load-on-startup>2</load-on-startup>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>legacy-adapter</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.LegacyAdapterServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>cache-manager</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.caching.CacheServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>db-test</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.monitoring.DBTestServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>versioning-log</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.versioning.VersioningServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>oid-redirect</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.OIDRedirectServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>resource-resolver</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ResourceServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
ADDITIONAL SERVLET DECLARATIONS SECTION
|
||||||
|
basically requirred by ccm-cms
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>content-section</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.cms.ContentSectionServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>content-type-xsl</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.cms.dispatcher.ContentTypeXSLServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>content-item-xsl</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.cms.dispatcher.ContentItemXSLServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>template-xsl</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.cms.dispatcher.TemplateXSLServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>TextOnlyServlet</servlet-name>
|
||||||
|
<display-name>Text Only Servlet</display-name>
|
||||||
|
<servlet-class>
|
||||||
|
com.arsdigita.web.InternalPrefixerServlet
|
||||||
|
</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>prefix</param-name>
|
||||||
|
<param-value>/text</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>PrintFriendlyServlet</servlet-name>
|
||||||
|
<display-name>Printer Friendly Output Servlet</display-name>
|
||||||
|
<servlet-class>
|
||||||
|
com.arsdigita.web.InternalPrefixerServlet
|
||||||
|
</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>prefix</param-name>
|
||||||
|
<param-value>/print</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
MODULES SERVLET DECLARATIONS SECTION
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-atoz - servlet definitions BEGIN
|
||||||
|
NOT USED with AAP
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>atoz-files</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>template-path</param-name>
|
||||||
|
<param-value>/templates/ccm-ldn-atoz</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
module ccm-ldn-atoz - servlet definitions END -->
|
||||||
|
|
||||||
|
<!-- module ccm-forum - servlet declarations BEGIN -->
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>forum-main</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.forum.ForumServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
<!-- module ccm-forum - servlet declarations END -->
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>portal-files</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>template-path</param-name>
|
||||||
|
<param-value>/templates/ccm-ldn-portal</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>navigation-files</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>template-path</param-name>
|
||||||
|
<param-value>/templates/ccm-ldn-navigation</param-value>
|
||||||
|
</init-param>
|
||||||
|
<init-param>
|
||||||
|
<param-name>file-resolver</param-name>
|
||||||
|
<param-value>com.arsdigita.london.navigation.NavigationFileResolver</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>portlet-type-xsl</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.dispatcher.PortletTypeXSLServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-rss - servlet declaration BEGIN -->
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>rss-files</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>template-path</param-name>
|
||||||
|
<param-value>/templates/ccm-ldn-rss</param-value>
|
||||||
|
</init-param>
|
||||||
|
<init-param>
|
||||||
|
<param-name>file-resolver</param-name>
|
||||||
|
<param-value>com.arsdigita.london.rss.RSSFileResolver</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
<!-- module ccm-ldn-rss - servlet declaration END -->
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-search - servlet declarations BEGIN -->
|
||||||
|
<!-- Not used by AAP
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>worker</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.london.search.SearchWorkerServlet</servlet-class>
|
||||||
|
<load-on-startup>4</load-on-startup>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>search-files</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>template-path</param-name>
|
||||||
|
<param-value>/templates/ccm-ldn-search</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>AxisServlet</servlet-name>
|
||||||
|
<display-name>Apache-Axis Servlet</display-name>
|
||||||
|
<servlet-class>
|
||||||
|
org.apache.axis.transport.http.AxisServlet
|
||||||
|
</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
-->
|
||||||
|
<!-- module ccm-ldn-search - servlet declarations END -->
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-shortcuts - servlet definitions -->
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>shortcuts-files</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>template-path</param-name>
|
||||||
|
<param-value>/templates/ccm-ldn-shortcuts</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-subsite - servlet declarations BEGIN -->
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>subsite-files</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>template-path</param-name>
|
||||||
|
<param-value>/templates/ccm-ldn-subsite</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
<!-- module ccm-ldn-subsite - servlet declarations END -->
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-terms - servlet declarations BEGIN -->
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>terms-files</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>template-path</param-name>
|
||||||
|
<param-value>/templates/ccm-ldn-terms</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
<!-- module ccm-ldn-terms - servlet declarations END -->
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-themes - servlet declarations BEGIN -->
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>theme-files</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>template-path</param-name>
|
||||||
|
<param-value>/templates/ccm-ldn-theme</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>ThemeDownload</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.london.theme.dispatcher.ThemeDownloadServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>ThemePreviewServlet</servlet-name>
|
||||||
|
<display-name>Servlet to allow admins to preview look/feel</display-name>
|
||||||
|
<servlet-class>
|
||||||
|
com.arsdigita.london.theme.dispatcher.InternalThemePrefixerServlet
|
||||||
|
</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>prefix</param-name>
|
||||||
|
<param-value>/theme</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
<!-- module ccm-ldn-themes - servlet declarations END -->
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
MODULES SERVLET MAPPINGS SECTION
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-atoz - servlet mappings BEGIN
|
||||||
|
NOT USED HERE
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>atoz-files</servlet-name>
|
||||||
|
<url-pattern>/ccm-ldn-atoz/files/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
module ccm-ldn-atoz - servlet mappings END -->
|
||||||
|
|
||||||
|
<!-- module ccm-forum - servlet mappings BEGIN -->
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>forum-main</servlet-name>
|
||||||
|
<url-pattern>/forum-main/main/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
<!-- module ccm-forum - servlet mappings END -->
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>portlet-type-xsl</servlet-name>
|
||||||
|
<url-pattern>/__ccm__/servlet/portlet-type/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>portal-files</servlet-name>
|
||||||
|
<url-pattern>/ccm-ldn-portal/files/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>navigation-files</servlet-name>
|
||||||
|
<url-pattern>/ccm-ldn-navigation/files/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-rss - servlet mappings -->
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>rss-files</servlet-name>
|
||||||
|
<url-pattern>/ccm-ldn-rss/files/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-search - servlet mappings BEGIN - - >
|
||||||
|
Not used here
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>search-files</servlet-name>
|
||||||
|
<url-pattern>/ccm-ldn-search/files/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>AxisServlet</servlet-name>
|
||||||
|
<url-pattern>/services/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
< ! - - module ccm-ldn-search - servlet mappings END -->
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-shortcuts - servlet mappings -->
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>shortcuts-files</servlet-name>
|
||||||
|
<url-pattern>/ccm-ldn-shortcuts/files/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-subsite - servlet mappings BEGIN -->
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>subsite-files</servlet-name>
|
||||||
|
<url-pattern>/ccm-ldn-subsite/files/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
<!-- module ccm-ldn-subsite - servlet mappings END -->
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-terms - servlet mappings BEGIN -->
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>terms-files</servlet-name>
|
||||||
|
<url-pattern>/ccm-ldn-terms/files/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
<!-- module ccm-ldn-terms - servlet mappings END -->
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-theme - servlet mappings BEGIN -->
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>theme-files</servlet-name>
|
||||||
|
<url-pattern>/theme-files/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>ThemeDownload</servlet-name>
|
||||||
|
<url-pattern>/theme-files/download/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>ThemePreviewServlet</servlet-name>
|
||||||
|
<url-pattern>/theme/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
<!-- module ccm-ldn-themes - servlet mappings END -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
BASE SERVLET MAPPINGS SECTION
|
||||||
|
basically requirred by ccm-core
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>reg</servlet-name>
|
||||||
|
<url-pattern>/__ccm__/null/reg/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>ccm-dispatcher</servlet-name>
|
||||||
|
<url-pattern>/ccm/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>legacy-adapter</servlet-name>
|
||||||
|
<url-pattern>/__ccm__/servlet/legacy-adapter/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>cache-manager</servlet-name>
|
||||||
|
<url-pattern>/expireCache/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>db-test</servlet-name>
|
||||||
|
<url-pattern>/dbtest</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>versioning-log</servlet-name>
|
||||||
|
<url-pattern>/versioning/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>oid-redirect</servlet-name>
|
||||||
|
<url-pattern>/redirect/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>resource-resolver</servlet-name>
|
||||||
|
<url-pattern>/resource/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
ADDITIONAL SERVLET MAPPINGS SECTION
|
||||||
|
basically requirred by ccm-cms
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>content-section</servlet-name>
|
||||||
|
<url-pattern>/__ccm__/servlet/content-section/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>content-item-xsl</servlet-name>
|
||||||
|
<url-pattern>/__ccm__/servlet/content-item/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>content-type-xsl</servlet-name>
|
||||||
|
<url-pattern>/__ccm__/servlet/content-type/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>template-xsl</servlet-name>
|
||||||
|
<url-pattern>/__ccm__/servlet/template/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>TextOnlyServlet</servlet-name>
|
||||||
|
<url-pattern>/text/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>PrintFriendlyServlet</servlet-name>
|
||||||
|
<url-pattern>/print/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
ERROR PAGES
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
|
<error-page>
|
||||||
|
<exception-type>com.arsdigita.dispatcher.AccessDeniedException</exception-type>
|
||||||
|
<location>/error/access-denied.jsp</location>
|
||||||
|
</error-page>
|
||||||
|
|
||||||
|
<error-page>
|
||||||
|
<exception-type>com.arsdigita.dispatcher.ObjectNotFoundException</exception-type>
|
||||||
|
<location>/error/object-not-found.jsp</location>
|
||||||
|
</error-page>
|
||||||
|
|
||||||
|
<error-page>
|
||||||
|
<exception-type>com.arsdigita.kernel.permissions.PermissionException</exception-type>
|
||||||
|
<location>/error/permission-denied.jsp</location>
|
||||||
|
</error-page>
|
||||||
|
|
||||||
|
<error-page>
|
||||||
|
<exception-type>com.arsdigita.persistence.DbNotAvailableException</exception-type>
|
||||||
|
<location>/error/db-not-available.jsp</location>
|
||||||
|
</error-page>
|
||||||
|
|
||||||
|
<error-page>
|
||||||
|
<exception-type>com.arsdigita.db.DbNotAvailableException</exception-type>
|
||||||
|
<location>/error/db-not-available.jsp</location>
|
||||||
|
</error-page>
|
||||||
|
|
||||||
|
<error-page>
|
||||||
|
<exception-type>java.lang.Exception</exception-type>
|
||||||
|
<location>/error/general.jsp</location>
|
||||||
|
</error-page>
|
||||||
|
|
||||||
|
<error-page>
|
||||||
|
<exception-type>java.lang.Error</exception-type>
|
||||||
|
<location>/error/general.jsp</location>
|
||||||
|
</error-page>
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
TAG LIBS
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
|
<taglib>
|
||||||
|
<taglib-uri>/WEB-INF/bebop-show.tld</taglib-uri>
|
||||||
|
<taglib-location>/WEB-INF/bebop-show.tld</taglib-location>
|
||||||
|
</taglib>
|
||||||
|
|
||||||
|
<taglib>
|
||||||
|
<taglib-uri>/WEB-INF/bebop-define.tld</taglib-uri>
|
||||||
|
<taglib-location>/WEB-INF/bebop-define.tld</taglib-location>
|
||||||
|
</taglib>
|
||||||
|
|
||||||
|
</web-app>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
* Thu Sep 22 2005 Alan Pevec <apevec@redhat.com>
|
||||||
|
- Build all APLAWS+ bundles from the common set of templates.
|
||||||
|
|
||||||
|
* Mon Feb 21 2005 Alan Pevec <apevec@redhat.com>
|
||||||
|
- Requires applications.
|
||||||
|
|
||||||
|
* Mon Jan 26 2004 Daniel Berrange <berrange@redhat.com>
|
||||||
|
- Initial build.
|
||||||
|
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
BUNDLE_NAME=aplaws-plus-shp
|
||||||
|
BUNDLE_PRETTY_NAME="APLAWS+ SHP Standard Bundle"
|
||||||
|
VERSION=1.0.5devel
|
||||||
|
RELEASE=1
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>TextOnlyServlet</servlet-name>
|
||||||
|
<display-name>Text Only Servlet</display-name>
|
||||||
|
<servlet-class>
|
||||||
|
com.arsdigita.web.InternalPrefixerServlet
|
||||||
|
</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>prefix</param-name>
|
||||||
|
<param-value>/text</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>PrintFriendlyServlet</servlet-name>
|
||||||
|
<display-name>Printer Friendly Output Servlet</display-name>
|
||||||
|
<servlet-class>
|
||||||
|
com.arsdigita.web.InternalPrefixerServlet
|
||||||
|
</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>prefix</param-name>
|
||||||
|
<param-value>/print</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>TextOnlyServlet</servlet-name>
|
||||||
|
<url-pattern>/text/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>PrintFriendlyServlet</servlet-name>
|
||||||
|
<url-pattern>/print/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
|
@ -0,0 +1,65 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
Document : domain-nav-zes-1.00.xml
|
||||||
|
Created on : 8. Aug. 2007, 10:00
|
||||||
|
Author : pb
|
||||||
|
Description:
|
||||||
|
Definition of the terms (categories) in the SHP Navigation Menue.
|
||||||
|
In hierarchy-nav-shp the structure of the tree will be defined.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<terms:domain xmlns:terms="http://xmlns.redhat.com/london/terms/1.0"
|
||||||
|
about="http://www.aplaws.org.uk/standards/nav/1.03/termslist.xml"
|
||||||
|
key="AAP-NAV"
|
||||||
|
title="AAP Navigation List"
|
||||||
|
version="1.00" released="2009-08-10">
|
||||||
|
|
||||||
|
<terms:term id="1000" name="Praxis-Themen" inAtoZ="false"/>
|
||||||
|
<terms:term id="1200" name="Arbeit" inAtoZ="false"/>
|
||||||
|
<terms:term id="1400" name="Bildung" inAtoZ="false"/>
|
||||||
|
<terms:term id="1600" name="Politik" inAtoZ="false"/>
|
||||||
|
|
||||||
|
<terms:term id="3000" name="Lehrangebote" inAtoZ="false"/>
|
||||||
|
<terms:term id="3200" name="Zwei-Jahres-Kurs" inAtoZ="false"/>
|
||||||
|
<terms:term id="3400" name="Ein-Jahres-Kurs" inAtoZ="false"/>
|
||||||
|
<terms:term id="3600" name="Halbjahres-Kurs" inAtoZ="false"/>
|
||||||
|
|
||||||
|
<terms:term id="5000" name="Fort- und Weiterbildung" inAtoZ="false"/>
|
||||||
|
<terms:term id="5200" name="Weiterbildung" inAtoZ="false"/>
|
||||||
|
<terms:term id="5400" name="Beratung" inAtoZ="false"/>
|
||||||
|
<terms:term id="5600" name="Supervision" inAtoZ="false"/>
|
||||||
|
<terms:term id="5800" name="Arbeitskreise" inAtoZ="false"/>
|
||||||
|
<terms:term id="5810" name="Bistr phil" inAtoZ="false"/>
|
||||||
|
<terms:term id="5830" name="Arbeitsrecht akuell" inAtoZ="false"/>
|
||||||
|
<terms:term id="5850" name="Arbeits- und Sozialrecht kompakt" inAtoZ="false"/>
|
||||||
|
<terms:term id="5870" name="Kollegialer Austausch ..." inAtoZ="false"/>
|
||||||
|
|
||||||
|
<terms:term id="7000" name="Veranstaltungen" inAtoZ="false"/>
|
||||||
|
<terms:term id="7200" name="Barkhofgespräche" inAtoZ="false"/>
|
||||||
|
<terms:term id="7400" name="Galerie" inAtoZ="false"/>
|
||||||
|
|
||||||
|
<terms:term id="9000" name="Veröffentlichungen" inAtoZ="false"/>
|
||||||
|
<terms:term id="9200" name="Bremer Beiträge zur Politischen Bildung" inAtoZ="false"/>
|
||||||
|
<terms:term id="9400" name="Bremer Beiträge zur Praxisforschung" inAtoZ="false"/>
|
||||||
|
<terms:term id="9600" name="Mitteilungsblätter" inAtoZ="false"/>
|
||||||
|
<terms:term id="9800" name="Arbeitsmaterialien" inAtoZ="false"/>
|
||||||
|
|
||||||
|
<terms:term id="11000" name="Forschung" inAtoZ="false"/>
|
||||||
|
<terms:term id="11200" name="Projekte" inAtoZ="false"/>
|
||||||
|
<terms:term id="11210" name="Bistr phil" inAtoZ="false"/>
|
||||||
|
<terms:term id="11230" name="Arbeitsrecht akuell" inAtoZ="false"/>
|
||||||
|
<terms:term id="11400" name="Nachwuchsförderung" inAtoZ="false"/>
|
||||||
|
<terms:term id="11410" name="Dissertationen" inAtoZ="false"/>
|
||||||
|
<terms:term id="11430" name="Habilitationen" inAtoZ="false"/>
|
||||||
|
|
||||||
|
<terms:term id="13000" name="Die AAP" inAtoZ="false"/>
|
||||||
|
<terms:term id="13200" name="Mitarbeiter/innen" inAtoZ="false"/>
|
||||||
|
<terms:term id="13400" name="Kooperationen" inAtoZ="false"/>
|
||||||
|
<terms:term id="13410" name="Universitäre Kooperationen" inAtoZ="false"/>
|
||||||
|
<terms:term id="13430" name="Regionale Kooperationen" inAtoZ="false"/>
|
||||||
|
<terms:term id="13450" name="Nationale Kooperationen" inAtoZ="false"/>
|
||||||
|
<terms:term id="13470" name="Internationale Kooperationen" inAtoZ="false"/>
|
||||||
|
<terms:term id="13600" name="Kontakt" inAtoZ="false"/>
|
||||||
|
|
||||||
|
</terms:domain>
|
||||||
|
|
||||||
|
|
@ -0,0 +1,327 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
Document : hierarchy-nav-aap-1.00.xml
|
||||||
|
Created on : 10. Aug. 2009, 10:30
|
||||||
|
Author : pb
|
||||||
|
Description:
|
||||||
|
Purpose of the document follows.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<terms:hierarchy xmlns:terms="http://xmlns.redhat.com/london/terms/1.0">
|
||||||
|
<terms:domain resource="http://www.aplaws.org.uk/standards/nav/1.03/termslist.xml"/>
|
||||||
|
<!-- set root terms -->
|
||||||
|
<terms:term id="1000"/>
|
||||||
|
<terms:term id="3000"/>
|
||||||
|
<terms:term id="5000"/>
|
||||||
|
<terms:term id="7000"/>
|
||||||
|
<terms:term id="9000"/>
|
||||||
|
<terms:term id="11000"/>
|
||||||
|
<terms:term id="13000"/>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<!-- narrower terms, first level -->
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="1000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="1200"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="1000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="1400"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="1000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="1600"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="3000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="3200"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="3000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="3400"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="3000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="3600"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="5000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="5200"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="5000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="5400"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="5000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="5600"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="5000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="5800"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<!-- narrower terms, second level -->
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="5800"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="5810"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="5800"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="5830"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="5800"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="5850"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="5800"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="5870"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
<!-- narrower terms, second level END -->
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="7000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="7200"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="7000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="7400"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="9000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="9200"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="9000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="9400"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="9000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="9600"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="9000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="9800"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="11000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="11200"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<!-- narrower terms, second level -->
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="11200"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="11210"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="11200"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="11230"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
<!-- narrower terms, second level END -->
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="11000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="11400"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<!-- narrower terms, second level -->
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="11400"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="11410"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="11400"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="11430"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
<!-- narrower terms, second level END -->
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="13000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="13200"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="13000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="13400"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<!-- narrower terms, third level -->
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="13400"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="13410"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="13400"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="13430"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="13400"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="13450"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="13400"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="13470"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
<!-- narrower terms, third level End -->
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="13000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="13600"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</terms:hierarchy>
|
||||||
|
|
@ -0,0 +1,151 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<terms:domain xmlns:terms="http://xmlns.redhat.com/london/terms/1.0"
|
||||||
|
about="http://www.aplaws.org.uk/standards/nav/1.03/termslist.xml"
|
||||||
|
key="APLAWS-NAV"
|
||||||
|
title="APLAWS Navigation List"
|
||||||
|
version="1.03" released="2004-03-24">
|
||||||
|
|
||||||
|
<terms:term id="1" name="Business" inAtoZ="false"/>
|
||||||
|
<terms:term id="1007" name="Jobs and careers" inAtoZ="false"/>
|
||||||
|
<terms:term id="1021" name="Legal services" inAtoZ="false"/>
|
||||||
|
<terms:term id="1039" name="Leisure and culture" inAtoZ="false"/>
|
||||||
|
<terms:term id="1286" name="Policing and public safety" inAtoZ="false"/>
|
||||||
|
<terms:term id="1325" name="Social issues" inAtoZ="false"/>
|
||||||
|
<terms:term id="1337" name="Transport and streets" inAtoZ="false"/>
|
||||||
|
<terms:term id="204" name="Education and learning" inAtoZ="false"/>
|
||||||
|
<terms:term id="281" name="Environment" inAtoZ="false"/>
|
||||||
|
<terms:term id="3088" name="Council, government and democracy" inAtoZ="false"/>
|
||||||
|
<terms:term id="3168" name="Obsolete terms" inAtoZ="false"/>
|
||||||
|
<terms:term id="596" name="Health and social care" inAtoZ="false"/>
|
||||||
|
<terms:term id="93" name="Community and living" inAtoZ="false"/>
|
||||||
|
<terms:term id="946" name="Housing" inAtoZ="false"/>
|
||||||
|
<terms:term id="11" name="Business promotion" inAtoZ="false"/>
|
||||||
|
<terms:term id="15" name="Business property" inAtoZ="false"/>
|
||||||
|
<terms:term id="1523" name="Business procurement" inAtoZ="false"/>
|
||||||
|
<terms:term id="21" name="Business sectors and services" inAtoZ="false"/>
|
||||||
|
<terms:term id="3100" name="Workers' co-operatives" inAtoZ="false"/>
|
||||||
|
<terms:term id="3300" name="Business and street trading licences" inAtoZ="false"/>
|
||||||
|
<terms:term id="3323" name="Business support and advice" inAtoZ="false"/>
|
||||||
|
<terms:term id="3329" name="Imports and exports" inAtoZ="false"/>
|
||||||
|
<terms:term id="5" name="Business finance" inAtoZ="false"/>
|
||||||
|
<terms:term id="59" name="Economic development" inAtoZ="false"/>
|
||||||
|
<terms:term id="62" name="Employing people" inAtoZ="false"/>
|
||||||
|
<terms:term id="66" name="Health and safety" inAtoZ="false"/>
|
||||||
|
<terms:term id="70" name="Trading standards" inAtoZ="false"/>
|
||||||
|
<terms:term id="8" name="Business opportunities" inAtoZ="false"/>
|
||||||
|
<terms:term id="1008" name="Finding work" inAtoZ="false"/>
|
||||||
|
<terms:term id="1017" name="Retirement" inAtoZ="false"/>
|
||||||
|
<terms:term id="1026" name="Legal advice" inAtoZ="false"/>
|
||||||
|
<terms:term id="1029" name="Courts" inAtoZ="false"/>
|
||||||
|
<terms:term id="1037" name="Probation" inAtoZ="false"/>
|
||||||
|
<terms:term id="1308" name="Police" inAtoZ="false"/>
|
||||||
|
<terms:term id="1309" name="Prisons" inAtoZ="false"/>
|
||||||
|
<terms:term id="1326" name="Equal opportunities" inAtoZ="false"/>
|
||||||
|
<terms:term id="2083" name="Legislation" inAtoZ="false"/>
|
||||||
|
<terms:term id="3025" name="Civil and human rights" inAtoZ="false"/>
|
||||||
|
<terms:term id="3441" name="Legal professions" inAtoZ="false"/>
|
||||||
|
<terms:term id="3442" name="Young offending" inAtoZ="false"/>
|
||||||
|
<terms:term id="1041" name="Arts and entertainment" inAtoZ="false"/>
|
||||||
|
<terms:term id="1098" name="Children's activities" inAtoZ="false"/>
|
||||||
|
<terms:term id="1102" name="Libraries" inAtoZ="false"/>
|
||||||
|
<terms:term id="1106" name="Local history and heritage" inAtoZ="false"/>
|
||||||
|
<terms:term id="1113" name="Hobbies and interests" inAtoZ="false"/>
|
||||||
|
<terms:term id="1132" name="Parks and recreation" inAtoZ="false"/>
|
||||||
|
<terms:term id="1164" name="Social clubs" inAtoZ="false"/>
|
||||||
|
<terms:term id="1165" name="Sports" inAtoZ="false"/>
|
||||||
|
<terms:term id="1248" name="Tourism and travel" inAtoZ="false"/>
|
||||||
|
<terms:term id="1258" name="Uniformed groups" inAtoZ="false"/>
|
||||||
|
<terms:term id="1261" name="Young people's activities" inAtoZ="false"/>
|
||||||
|
<terms:term id="1482" name="Museums and galleries" inAtoZ="false"/>
|
||||||
|
<terms:term id="1287" name="Accidents, emergencies and safety" inAtoZ="false"/>
|
||||||
|
<terms:term id="1298" name="Coastguard" inAtoZ="false"/>
|
||||||
|
<terms:term id="1299" name="Crime and law enforcement" inAtoZ="false"/>
|
||||||
|
<terms:term id="1310" name="Victim support" inAtoZ="false"/>
|
||||||
|
<terms:term id="1311" name="Discrimination or harassment" inAtoZ="false"/>
|
||||||
|
<terms:term id="3454" name="Fire fighting and rescue services" inAtoZ="false"/>
|
||||||
|
<!-- bug: this appears twice (look up a bit)
|
||||||
|
<terms:term id="1326" name="Equal opportunities" inAtoZ="false"/>
|
||||||
|
-->
|
||||||
|
<terms:term id="1327" name="Identity cards" inAtoZ="false"/>
|
||||||
|
<terms:term id="1328" name="Immigration and nationality" inAtoZ="false"/>
|
||||||
|
<terms:term id="1329" name="Sexual orientation" inAtoZ="false"/>
|
||||||
|
<terms:term id="1331" name="Firearms" inAtoZ="false"/>
|
||||||
|
<terms:term id="1332" name="Population and migration" inAtoZ="false"/>
|
||||||
|
<terms:term id="1333" name="Privacy and data protection" inAtoZ="false"/>
|
||||||
|
<terms:term id="1335" name="Rural communities" inAtoZ="false"/>
|
||||||
|
<terms:term id="1336" name="Social inclusion" inAtoZ="false"/>
|
||||||
|
<terms:term id="697" name="Family planning" inAtoZ="false"/>
|
||||||
|
<terms:term id="1352" name="Public rights of way" inAtoZ="false"/>
|
||||||
|
<terms:term id="1353" name="Motor vehicles, roads and parking" inAtoZ="false"/>
|
||||||
|
<terms:term id="1388" name="Public transport" inAtoZ="false"/>
|
||||||
|
<terms:term id="1402" name="Road and pathway maintenance" inAtoZ="false"/>
|
||||||
|
<terms:term id="1424" name="Transport planning" inAtoZ="false"/>
|
||||||
|
<terms:term id="3457" name="Ports and harbours" inAtoZ="false"/>
|
||||||
|
<terms:term id="3459" name="Waterways" inAtoZ="false"/>
|
||||||
|
<terms:term id="3461" name="Reservoirs" inAtoZ="false"/>
|
||||||
|
<terms:term id="205" name="Educational institutions" inAtoZ="false"/>
|
||||||
|
<terms:term id="206" name="Distance learning" inAtoZ="false"/>
|
||||||
|
<terms:term id="212" name="Language tuition" inAtoZ="false"/>
|
||||||
|
<terms:term id="219" name="Adult and community education" inAtoZ="false"/>
|
||||||
|
<terms:term id="2237" name="Teaching" inAtoZ="false"/>
|
||||||
|
<terms:term id="238" name="Work based learning" inAtoZ="false"/>
|
||||||
|
<terms:term id="280" name="Youth service" inAtoZ="false"/>
|
||||||
|
<terms:term id="3008" name="Higher education" inAtoZ="false"/>
|
||||||
|
<terms:term id="3345" name="Home education" inAtoZ="false"/>
|
||||||
|
<terms:term id="3346" name="School library service" inAtoZ="false"/>
|
||||||
|
<terms:term id="3347" name="Schools and colleges" inAtoZ="false"/>
|
||||||
|
<terms:term id="3359" name="Education welfare services" inAtoZ="false"/>
|
||||||
|
<terms:term id="3366" name="Youth support" inAtoZ="false"/>
|
||||||
|
<terms:term id="3440" name="Job training and development" inAtoZ="false"/>
|
||||||
|
<terms:term id="284" name="Animal welfare" inAtoZ="false"/>
|
||||||
|
<terms:term id="3374" name="Land and premises" inAtoZ="false"/>
|
||||||
|
<terms:term id="3379" name="Pests and nuisance" inAtoZ="false"/>
|
||||||
|
<terms:term id="3391" name="Pollution" inAtoZ="false"/>
|
||||||
|
<terms:term id="3393" name="Street care and cleaning" inAtoZ="false"/>
|
||||||
|
<terms:term id="3400" name="Town centre management" inAtoZ="false"/>
|
||||||
|
<terms:term id="347" name="Food production and quality" inAtoZ="false"/>
|
||||||
|
<terms:term id="372" name="Planning" inAtoZ="false"/>
|
||||||
|
<terms:term id="409" name="Energy" inAtoZ="false"/>
|
||||||
|
<terms:term id="420" name="Rubbish, waste and recycling" inAtoZ="false"/>
|
||||||
|
<terms:term id="451" name="Weather" inAtoZ="false"/>
|
||||||
|
<terms:term id="13" name="Information management" inAtoZ="false"/>
|
||||||
|
<terms:term id="3116" name="Democratic processes and events" inAtoZ="false"/>
|
||||||
|
<terms:term id="3344" name="Data protection and freedom of information" inAtoZ="false"/>
|
||||||
|
<terms:term id="454" name="Central government" inAtoZ="false"/>
|
||||||
|
<terms:term id="459" name="Councils" inAtoZ="false"/>
|
||||||
|
<terms:term id="524" name="Elections" inAtoZ="false"/>
|
||||||
|
<terms:term id="552" name="European affairs" inAtoZ="false"/>
|
||||||
|
<terms:term id="566" name="International affairs" inAtoZ="false"/>
|
||||||
|
<terms:term id="569" name="Non-governmental organisations" inAtoZ="false"/>
|
||||||
|
<terms:term id="584" name="Political parties" inAtoZ="false"/>
|
||||||
|
<terms:term id="592" name="Public services" inAtoZ="false"/>
|
||||||
|
<terms:term id="593" name="Regional governments" inAtoZ="false"/>
|
||||||
|
<terms:term id="178" name="Village newsletters" inAtoZ="false"/>
|
||||||
|
<terms:term id="462" name="Council documents, facts and figures" inAtoZ="false"/>
|
||||||
|
<terms:term id="514" name="Petitions" inAtoZ="false"/>
|
||||||
|
<terms:term id="515" name="Surveys" inAtoZ="false"/>
|
||||||
|
<terms:term id="597" name="Health and medical care" inAtoZ="false"/>
|
||||||
|
<terms:term id="631" name="Disabilities" inAtoZ="false"/>
|
||||||
|
<terms:term id="856" name="Social policy" inAtoZ="false"/>
|
||||||
|
<terms:term id="860" name="Social services" inAtoZ="false"/>
|
||||||
|
<terms:term id="107" name="Ethnic communities" inAtoZ="false"/>
|
||||||
|
<terms:term id="1302" name="Community safety" inAtoZ="false"/>
|
||||||
|
<terms:term id="1527" name="Life events" inAtoZ="false"/>
|
||||||
|
<terms:term id="182" name="Twinning" inAtoZ="false"/>
|
||||||
|
<terms:term id="184" name="Voluntary organisations" inAtoZ="false"/>
|
||||||
|
<terms:term id="201" name="Volunteering" inAtoZ="false"/>
|
||||||
|
<terms:term id="3013" name="Neighbourhood and village" inAtoZ="false"/>
|
||||||
|
<terms:term id="3101" name="Interpreters' services" inAtoZ="false"/>
|
||||||
|
<terms:term id="3118" name="Charities and citizens' interest groups" inAtoZ="false"/>
|
||||||
|
<terms:term id="3330" name="Community grants" inAtoZ="false"/>
|
||||||
|
<terms:term id="3332" name="Faiths, beliefs and religions" inAtoZ="false"/>
|
||||||
|
<terms:term id="95" name="Consumer advice and protection" inAtoZ="false"/>
|
||||||
|
<terms:term id="1627" name="Supported and sheltered housing" inAtoZ="false"/>
|
||||||
|
<terms:term id="2639" name="Private housing" inAtoZ="false"/>
|
||||||
|
<terms:term id="3424" name="Housing associations and co-operatives" inAtoZ="false"/>
|
||||||
|
<terms:term id="3426" name="Housing finance" inAtoZ="false"/>
|
||||||
|
<terms:term id="3430" name="Housing improvement and repairs" inAtoZ="false"/>
|
||||||
|
<terms:term id="3438" name="Multiple occupancy homes" inAtoZ="false"/>
|
||||||
|
<terms:term id="952" name="Housing advice" inAtoZ="false"/>
|
||||||
|
<terms:term id="960" name="Council housing" inAtoZ="false"/>
|
||||||
|
</terms:domain>
|
||||||
|
|
@ -0,0 +1,160 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<terms:mapping xmlns:terms="http://xmlns.redhat.com/london/terms/1.0">
|
||||||
|
<terms:source>
|
||||||
|
<terms:domain resource="http://www.esd.org.uk/standards/lgcl/1.03/termslist.xml"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination>
|
||||||
|
<terms:domain resource="http://www.aplaws.org.uk/standards/nav/1.03/termslist.xml"/>
|
||||||
|
</terms:destination>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source><terms:term id="1"/></terms:source>
|
||||||
|
<terms:destination><terms:term id="1"/></terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source><terms:term id="1007"/></terms:source>
|
||||||
|
<terms:destination><terms:term id="1007"/></terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1021"/></terms:source><terms:destination><terms:term id="1021"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1039"/></terms:source><terms:destination><terms:term id="1039"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1286"/></terms:source><terms:destination><terms:term id="1286"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1325"/></terms:source><terms:destination><terms:term id="1325"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1337"/></terms:source><terms:destination><terms:term id="1337"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="204"/></terms:source><terms:destination><terms:term id="204"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="281"/></terms:source><terms:destination><terms:term id="281"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3088"/></terms:source><terms:destination><terms:term id="3088"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3168"/></terms:source><terms:destination><terms:term id="3168"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="596"/></terms:source><terms:destination><terms:term id="596"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="93"/></terms:source><terms:destination><terms:term id="93"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="946"/></terms:source><terms:destination><terms:term id="946"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="11"/></terms:source><terms:destination><terms:term id="11"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="15"/></terms:source><terms:destination><terms:term id="15"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1523"/></terms:source><terms:destination><terms:term id="1523"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="21"/></terms:source><terms:destination><terms:term id="21"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3100"/></terms:source><terms:destination><terms:term id="3100"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3300"/></terms:source><terms:destination><terms:term id="3300"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3323"/></terms:source><terms:destination><terms:term id="3323"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3329"/></terms:source><terms:destination><terms:term id="3329"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="5"/></terms:source><terms:destination><terms:term id="5"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="59"/></terms:source><terms:destination><terms:term id="59"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="62"/></terms:source><terms:destination><terms:term id="62"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="66"/></terms:source><terms:destination><terms:term id="66"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="70"/></terms:source><terms:destination><terms:term id="70"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="8"/></terms:source><terms:destination><terms:term id="8"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1008"/></terms:source><terms:destination><terms:term id="1008"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1017"/></terms:source><terms:destination><terms:term id="1017"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1026"/></terms:source><terms:destination><terms:term id="1026"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1029"/></terms:source><terms:destination><terms:term id="1029"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1037"/></terms:source><terms:destination><terms:term id="1037"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1308"/></terms:source><terms:destination><terms:term id="1308"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1309"/></terms:source><terms:destination><terms:term id="1309"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1326"/></terms:source><terms:destination><terms:term id="1326"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="2083"/></terms:source><terms:destination><terms:term id="2083"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3025"/></terms:source><terms:destination><terms:term id="3025"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3441"/></terms:source><terms:destination><terms:term id="3441"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3442"/></terms:source><terms:destination><terms:term id="3442"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1041"/></terms:source><terms:destination><terms:term id="1041"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1098"/></terms:source><terms:destination><terms:term id="1098"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1102"/></terms:source><terms:destination><terms:term id="1102"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1106"/></terms:source><terms:destination><terms:term id="1106"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1113"/></terms:source><terms:destination><terms:term id="1113"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1132"/></terms:source><terms:destination><terms:term id="1132"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1164"/></terms:source><terms:destination><terms:term id="1164"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1165"/></terms:source><terms:destination><terms:term id="1165"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1248"/></terms:source><terms:destination><terms:term id="1248"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1258"/></terms:source><terms:destination><terms:term id="1258"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1261"/></terms:source><terms:destination><terms:term id="1261"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1482"/></terms:source><terms:destination><terms:term id="1482"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1287"/></terms:source><terms:destination><terms:term id="1287"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1298"/></terms:source><terms:destination><terms:term id="1298"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1299"/></terms:source><terms:destination><terms:term id="1299"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1310"/></terms:source><terms:destination><terms:term id="1310"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1311"/></terms:source><terms:destination><terms:term id="1311"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3454"/></terms:source><terms:destination><terms:term id="3454"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1326"/></terms:source><terms:destination><terms:term id="1326"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1327"/></terms:source><terms:destination><terms:term id="1327"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1328"/></terms:source><terms:destination><terms:term id="1328"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1329"/></terms:source><terms:destination><terms:term id="1329"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1331"/></terms:source><terms:destination><terms:term id="1331"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1332"/></terms:source><terms:destination><terms:term id="1332"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1333"/></terms:source><terms:destination><terms:term id="1333"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1335"/></terms:source><terms:destination><terms:term id="1335"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1336"/></terms:source><terms:destination><terms:term id="1336"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="697"/></terms:source><terms:destination><terms:term id="697"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1352"/></terms:source><terms:destination><terms:term id="1352"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1353"/></terms:source><terms:destination><terms:term id="1353"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1388"/></terms:source><terms:destination><terms:term id="1388"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1402"/></terms:source><terms:destination><terms:term id="1402"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1424"/></terms:source><terms:destination><terms:term id="1424"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3457"/></terms:source><terms:destination><terms:term id="3457"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3459"/></terms:source><terms:destination><terms:term id="3459"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3461"/></terms:source><terms:destination><terms:term id="3461"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="205"/></terms:source><terms:destination><terms:term id="205"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="206"/></terms:source><terms:destination><terms:term id="206"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="212"/></terms:source><terms:destination><terms:term id="212"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="219"/></terms:source><terms:destination><terms:term id="219"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="2237"/></terms:source><terms:destination><terms:term id="2237"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="238"/></terms:source><terms:destination><terms:term id="238"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="280"/></terms:source><terms:destination><terms:term id="280"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3008"/></terms:source><terms:destination><terms:term id="3008"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3345"/></terms:source><terms:destination><terms:term id="3345"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3346"/></terms:source><terms:destination><terms:term id="3346"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3347"/></terms:source><terms:destination><terms:term id="3347"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3359"/></terms:source><terms:destination><terms:term id="3359"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3366"/></terms:source><terms:destination><terms:term id="3366"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3440"/></terms:source><terms:destination><terms:term id="3440"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="284"/></terms:source><terms:destination><terms:term id="284"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3374"/></terms:source><terms:destination><terms:term id="3374"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3379"/></terms:source><terms:destination><terms:term id="3379"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3391"/></terms:source><terms:destination><terms:term id="3391"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3393"/></terms:source><terms:destination><terms:term id="3393"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3400"/></terms:source><terms:destination><terms:term id="3400"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="347"/></terms:source><terms:destination><terms:term id="347"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="372"/></terms:source><terms:destination><terms:term id="372"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="409"/></terms:source><terms:destination><terms:term id="409"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="420"/></terms:source><terms:destination><terms:term id="420"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="451"/></terms:source><terms:destination><terms:term id="451"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="13"/></terms:source><terms:destination><terms:term id="13"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3116"/></terms:source><terms:destination><terms:term id="3116"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3344"/></terms:source><terms:destination><terms:term id="3344"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="454"/></terms:source><terms:destination><terms:term id="454"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="459"/></terms:source><terms:destination><terms:term id="459"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="524"/></terms:source><terms:destination><terms:term id="524"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="552"/></terms:source><terms:destination><terms:term id="552"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="566"/></terms:source><terms:destination><terms:term id="566"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="569"/></terms:source><terms:destination><terms:term id="569"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="584"/></terms:source><terms:destination><terms:term id="584"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="592"/></terms:source><terms:destination><terms:term id="592"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="593"/></terms:source><terms:destination><terms:term id="593"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="178"/></terms:source><terms:destination><terms:term id="178"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="462"/></terms:source><terms:destination><terms:term id="462"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="514"/></terms:source><terms:destination><terms:term id="514"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="515"/></terms:source><terms:destination><terms:term id="515"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="597"/></terms:source><terms:destination><terms:term id="597"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="631"/></terms:source><terms:destination><terms:term id="631"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="856"/></terms:source><terms:destination><terms:term id="856"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="860"/></terms:source><terms:destination><terms:term id="860"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="107"/></terms:source><terms:destination><terms:term id="107"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1302"/></terms:source><terms:destination><terms:term id="1302"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1527"/></terms:source><terms:destination><terms:term id="1527"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="182"/></terms:source><terms:destination><terms:term id="182"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="184"/></terms:source><terms:destination><terms:term id="184"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="201"/></terms:source><terms:destination><terms:term id="201"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3013"/></terms:source><terms:destination><terms:term id="3013"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3101"/></terms:source><terms:destination><terms:term id="3101"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3118"/></terms:source><terms:destination><terms:term id="3118"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3330"/></terms:source><terms:destination><terms:term id="3330"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3332"/></terms:source><terms:destination><terms:term id="3332"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="95"/></terms:source><terms:destination><terms:term id="95"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="1627"/></terms:source><terms:destination><terms:term id="1627"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="2639"/></terms:source><terms:destination><terms:term id="2639"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3424"/></terms:source><terms:destination><terms:term id="3424"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3426"/></terms:source><terms:destination><terms:term id="3426"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3430"/></terms:source><terms:destination><terms:term id="3430"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="3438"/></terms:source><terms:destination><terms:term id="3438"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="952"/></terms:source><terms:destination><terms:term id="952"/></terms:destination></terms:orderedPair>
|
||||||
|
<terms:orderedPair><terms:source><terms:term id="960"/></terms:source><terms:destination><terms:term id="960"/></terms:destination></terms:orderedPair>
|
||||||
|
</terms:mapping>
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||||
|
|
||||||
|
<xsl:stylesheet version="1.0"
|
||||||
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||||
|
xmlns:terms="http://xmlns.redhat.com/london/terms/1.0">
|
||||||
|
|
||||||
|
<xsl:template match="terms:domain">
|
||||||
|
|
||||||
|
<terms:mapping xmlns:terms="http://xmlns.redhat.com/london/terms/1.0">
|
||||||
|
<terms:source>
|
||||||
|
<terms:domain resource="http://www.esd.org.uk/standards/lgcl/1.03/termslist.xml"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination>
|
||||||
|
<terms:domain resource="http://www.aplaws.org.uk/standards/nav/1.03/termslist.xml"/>
|
||||||
|
</terms:destination>
|
||||||
|
|
||||||
|
<xsl:apply-templates />
|
||||||
|
|
||||||
|
</terms:mapping>
|
||||||
|
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="terms:term">
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term>
|
||||||
|
<xsl:attribute name="id">
|
||||||
|
<xsl:value-of select="@id" />
|
||||||
|
</xsl:attribute>
|
||||||
|
</terms:term>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination>
|
||||||
|
<terms:term>
|
||||||
|
<xsl:attribute name="id">
|
||||||
|
<xsl:value-of select="@id" />
|
||||||
|
</xsl:attribute>
|
||||||
|
</terms:term>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
</xsl:stylesheet>
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
Document : domain-nav-zes-1.00.xml
|
||||||
|
Created on : 8. Aug. 2007, 10:00
|
||||||
|
Author : pb
|
||||||
|
Description:
|
||||||
|
Definition of the terms (categories) in the SHP Navigation Menue.
|
||||||
|
In hierarchy-nav-shp the structure of the tree will be defined.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<terms:domain xmlns:terms="http://xmlns.redhat.com/london/terms/1.0"
|
||||||
|
about="http://www.aplaws.org.uk/standards/nav/1.03/termslist.xml"
|
||||||
|
key="ZES-NAV"
|
||||||
|
title="ZeS Navigation List"
|
||||||
|
version="1.00" released="2007-08-10">
|
||||||
|
|
||||||
|
<terms:term id="1000" name="Institut" inAtoZ="false"/>
|
||||||
|
<terms:term id="1200" name="Abteilungen" inAtoZ="false"/>
|
||||||
|
<terms:term id="1220" name="Abteilung Theorie und Verfassung des Wohlfahrsstaates" inAtoZ="false"/>
|
||||||
|
<terms:term id="1220" name="Abteilung Institutionen und Geschichte des Wohlfahrsstaates" inAtoZ="false"/>
|
||||||
|
<terms:term id="1220" name="Wirtschaftswissenschaftliche Abteilung" inAtoZ="false"/>
|
||||||
|
<terms:term id="1220" name="Geschlechterpolitik im Wohlfahrtsstaat" inAtoZ="false"/>
|
||||||
|
<terms:term id="1400" name="Mitglieder" inAtoZ="false"/>
|
||||||
|
<terms:term id="1600" name="Bibliothek" inAtoZ="false"/>
|
||||||
|
<terms:term id="1800" name="Ankündigungen" inAtoZ="false"/>
|
||||||
|
|
||||||
|
<terms:term id="3000" name="Forschung" inAtoZ="false"/>
|
||||||
|
<terms:term id="3200" name="Projekte" inAtoZ="false"/>
|
||||||
|
<terms:term id="3400" name="Veröffentlichungen" inAtoZ="false"/>
|
||||||
|
<terms:term id="3420" name="Publikationen" inAtoZ="false"/>
|
||||||
|
<terms:term id="3440" name="Arbeitspapiere" inAtoZ="false"/>
|
||||||
|
<terms:term id="3460" name="Schriftenreihe" inAtoZ="false"/>
|
||||||
|
<terms:term id="3480" name="ZeS Report" inAtoZ="false"/>
|
||||||
|
<terms:term id="3500" name="Jahresberichte" inAtoZ="false"/>
|
||||||
|
<terms:term id="3800" name="Gesundheitspolitisches Kolloquium" inAtoZ="false"/>
|
||||||
|
<terms:term id="4000" name="Jour Fix" inAtoZ="false"/>
|
||||||
|
<terms:term id="4200" name="Tagungen" inAtoZ="false"/>
|
||||||
|
|
||||||
|
<terms:term id="5000" name="Lehre und Studium" inAtoZ="false"/>
|
||||||
|
<terms:term id="5100" name="Masterstudiengang Sozialpolitik" inAtoZ="false"/>
|
||||||
|
<terms:term id="5350" name="Weitere Lehre" inAtoZ="false"/>
|
||||||
|
|
||||||
|
<terms:term id="9002" name="Archiv" inAtoZ="false"/>
|
||||||
|
<terms:term id="9200" name="Informative Links" inAtoZ="false"/>
|
||||||
|
|
||||||
|
</terms:domain>
|
||||||
|
|
||||||
|
|
@ -0,0 +1,244 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
Document : hierarchy-nav-zes-1.00.xml
|
||||||
|
Created on : 8. Aug. 2007, 10:30
|
||||||
|
Author : pb
|
||||||
|
Description:
|
||||||
|
Purpose of the document follows.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<terms:hierarchy xmlns:terms="http://xmlns.redhat.com/london/terms/1.0">
|
||||||
|
<terms:domain resource="http://www.aplaws.org.uk/standards/nav/1.03/termslist.xml"/>
|
||||||
|
<!-- set root terms -->
|
||||||
|
<terms:term id="1000"/>
|
||||||
|
<terms:term id="3000"/>
|
||||||
|
<terms:term id="5000"/>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<!-- narrower terms, first level -->
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="1000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="1200"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="1000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="1400"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="1000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="1600"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="1000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="1800"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="1000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="2100"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="1000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="9001"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="3000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="3200"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="3000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="3400"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<!-- narrower terms, second level -->
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="3400"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="3450"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="3400"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="3500"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
<!-- narrower terms, second level END -->
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="3000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="3600"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="3000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="3800"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- narrower terms, second level -->
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="3800"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="3840"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="3800"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="3880"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="3800"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="3920"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
<!-- narrower terms, second level END -->
|
||||||
|
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="3000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="4100"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="3000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="4300"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="3000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="9200"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="5000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="5100"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="5000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="5350"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="5000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="5600"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="5000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="5900"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="5000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="6100"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="5000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="6800"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
<terms:orderedPair>
|
||||||
|
<terms:source>
|
||||||
|
<terms:term id="5000"/>
|
||||||
|
</terms:source>
|
||||||
|
<terms:destination isDefault="true" isPreferred="true">
|
||||||
|
<terms:term id="9002"/>
|
||||||
|
</terms:destination>
|
||||||
|
</terms:orderedPair>
|
||||||
|
|
||||||
|
</terms:hierarchy>
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
|
||||||
|
xmlns:define="/WEB-INF/bebop-define.tld"
|
||||||
|
xmlns:show="/WEB-INF/bebop-show.tld"
|
||||||
|
version="1.2">
|
||||||
|
|
||||||
|
<jsp:directive.page
|
||||||
|
import="com.arsdigita.london.navigation.NavigationModel,
|
||||||
|
com.arsdigita.london.navigation.cms.CMSNavigationModel"/>
|
||||||
|
|
||||||
|
<jsp:declaration>
|
||||||
|
NavigationModel model = new CMSNavigationModel();
|
||||||
|
</jsp:declaration>
|
||||||
|
|
||||||
|
<define:page name="itemPage" application="content-section"
|
||||||
|
title="APLAWS" cache="true">
|
||||||
|
|
||||||
|
<define:component name="categoryPath"
|
||||||
|
classname="com.arsdigita.london.navigation.ui.category.Path"/>
|
||||||
|
<jsp:scriptlet>
|
||||||
|
((com.arsdigita.london.navigation.ui.category.Path)categoryPath)
|
||||||
|
.setModel(model);
|
||||||
|
</jsp:scriptlet>
|
||||||
|
<define:component name="categoryMenu"
|
||||||
|
classname="com.arsdigita.london.navigation.ui.category.Menu"/>
|
||||||
|
<jsp:scriptlet>
|
||||||
|
((com.arsdigita.london.navigation.ui.category.Menu)categoryMenu)
|
||||||
|
.setModel(model);
|
||||||
|
</jsp:scriptlet>
|
||||||
|
<define:component name="itemXML"
|
||||||
|
classname="com.arsdigita.cms.dispatcher.ContentPanel"/>
|
||||||
|
<define:component name="sectionXML"
|
||||||
|
classname="com.arsdigita.cms.contenttypes.ui.mparticle.ArticleSectionPanel"/>
|
||||||
|
|
||||||
|
|
||||||
|
<define:component name="relatedItems"
|
||||||
|
classname="com.arsdigita.london.navigation.ui.RelatedItems"/>
|
||||||
|
|
||||||
|
<define:component name="assignedTerms"
|
||||||
|
classname="com.arsdigita.aplaws.ui.AssignedItemTerms"/>
|
||||||
|
</define:page>
|
||||||
|
|
||||||
|
<show:all/>
|
||||||
|
|
||||||
|
</jsp:root>
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
|
||||||
|
xmlns:define="/WEB-INF/bebop-define.tld"
|
||||||
|
xmlns:show="/WEB-INF/bebop-show.tld"
|
||||||
|
version="1.2">
|
||||||
|
|
||||||
|
<jsp:directive.page
|
||||||
|
import="com.arsdigita.london.navigation.NavigationModel,
|
||||||
|
com.arsdigita.london.navigation.cms.CMSNavigationModel"/>
|
||||||
|
|
||||||
|
<jsp:declaration>
|
||||||
|
NavigationModel model = new CMSNavigationModel();
|
||||||
|
</jsp:declaration>
|
||||||
|
|
||||||
|
<define:page name="SiteProxyItemPage" application="content"
|
||||||
|
title="CMS" cache="true">
|
||||||
|
|
||||||
|
<define:component name="categoryPath"
|
||||||
|
classname="com.arsdigita.london.navigation.ui.category.Path"/>
|
||||||
|
<jsp:scriptlet>
|
||||||
|
((com.arsdigita.london.navigation.ui.category.Path)categoryPath)
|
||||||
|
.setModel(model);
|
||||||
|
</jsp:scriptlet>
|
||||||
|
<define:component name="categoryMenu"
|
||||||
|
classname="com.arsdigita.london.navigation.ui.category.Menu"/>
|
||||||
|
<jsp:scriptlet>
|
||||||
|
((com.arsdigita.london.navigation.ui.category.Menu)categoryMenu)
|
||||||
|
.setModel(model);
|
||||||
|
</jsp:scriptlet>
|
||||||
|
<define:component name="itemXML"
|
||||||
|
classname="com.arsdigita.cms.dispatcher.ContentPanel"/>
|
||||||
|
<define:component name="siteProxyItemXML"
|
||||||
|
classname="com.arsdigita.cms.dispatcher.SiteProxyPanel"/>
|
||||||
|
|
||||||
|
|
||||||
|
<define:component name="relatedItems"
|
||||||
|
classname="com.arsdigita.london.navigation.ui.RelatedItems"/>
|
||||||
|
|
||||||
|
<define:component name="assignedTerms"
|
||||||
|
classname="com.arsdigita.aplaws.ui.AssignedItemTerms"/>
|
||||||
|
</define:page>
|
||||||
|
|
||||||
|
<show:all/>
|
||||||
|
|
||||||
|
</jsp:root>
|
||||||
|
|
@ -0,0 +1,37 @@
|
||||||
|
# -*- text -*-
|
||||||
|
# This file locates stylesheets, if you are using the
|
||||||
|
# "PatternStylesheetResolver". Please read the Javadoc for that file for
|
||||||
|
# the full story.
|
||||||
|
|
||||||
|
# Output type is for things such as text/javascript
|
||||||
|
http://::host::/resource/::webapp::/__ccm__/apps/::application::/xsl/::url::-::outputtype::-::locale::.xsl
|
||||||
|
http://::host::/resource/::webapp::/__ccm__/apps/::application::/xsl/::url::-::outputtype::.xsl
|
||||||
|
|
||||||
|
# Grabs custom item xsl for CMS
|
||||||
|
http://::host::/__ccm__/servlet/content-item/index.xsl?oid=::item_template_oid::&delegated=::item_delegated_url::
|
||||||
|
|
||||||
|
# added by Quasimodo
|
||||||
|
# Theme with single entry point (e.g Mandalay)
|
||||||
|
http://::host::/resource/::webapp::/__ccm__/::themedir::/::theme::/start.xsl
|
||||||
|
|
||||||
|
# Theme, with optional locale & prefix
|
||||||
|
http://::host::/resource/::webapp::/__ccm__/::themedir::/::theme::/::application::-::url::-::prefix::-::locale::.xsl
|
||||||
|
http://::host::/resource/::webapp::/__ccm__/::themedir::/::theme::/::application::-::url::-::prefix::.xsl
|
||||||
|
|
||||||
|
# Theme, with optional locale
|
||||||
|
http://::host::/resource/::webapp::/__ccm__/::themedir::/::theme::/::application::-::url::-::locale::.xsl
|
||||||
|
http://::host::/resource/::webapp::/__ccm__/::themedir::/::theme::/::application::-::url::.xsl
|
||||||
|
|
||||||
|
# APLAWS generic default, with locale and prefix
|
||||||
|
# XXX change ROOT -> ccm-ldn-aplaws
|
||||||
|
http://::host::/resource/ROOT/__ccm__/themes/aplaws-generic/::application::-::url::-::prefix::-::locale::.xsl
|
||||||
|
http://::host::/resource/ROOT/__ccm__/themes/aplaws-generic/::application::-::url::-::prefix::.xsl
|
||||||
|
|
||||||
|
# APLAWS generic default, with locale
|
||||||
|
# XXX change ROOT -> ccm-ldn-aplaws
|
||||||
|
http://::host::/resource/ROOT/__ccm__/themes/aplaws-generic/::application::-::url::-::locale::.xsl
|
||||||
|
http://::host::/resource/ROOT/__ccm__/themes/aplaws-generic/::application::-::url::.xsl
|
||||||
|
|
||||||
|
# Global default, from application's own web app
|
||||||
|
http://::host::/resource/::webapp::/__ccm__/apps/::application::/xsl/::url::-::locale::.xsl
|
||||||
|
http://::host::/resource/::webapp::/__ccm__/apps/::application::/xsl/::url::.xsl
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<registry>
|
||||||
|
<config class="com.arsdigita.aplaws.AplawsConfig"
|
||||||
|
storage="ccm-zes-aplaws/aplaws.properties"/>
|
||||||
|
</registry>
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
<load>
|
||||||
|
<requires>
|
||||||
|
<table name="inits"/>
|
||||||
|
<table name="acs_objects"/>
|
||||||
|
<initializer class="com.arsdigita.core.Initializer"/>
|
||||||
|
<table name="cms_items"/>
|
||||||
|
<initializer class="com.arsdigita.cms.Initializer"/>
|
||||||
|
<initializer class="com.arsdigita.london.terms.Initializer"/>
|
||||||
|
<initializer class="com.arsdigita.london.subsite.Initializer"/>
|
||||||
|
<initializer class="com.arsdigita.london.portal.Initializer"/>
|
||||||
|
<initializer class="com.arsdigita.london.search.Initializer"/>
|
||||||
|
</requires>
|
||||||
|
|
||||||
|
<provides>
|
||||||
|
<!--
|
||||||
|
<table name=""/>
|
||||||
|
-->
|
||||||
|
<initializer class="com.arsdigita.aplaws.Initializer"/>
|
||||||
|
</provides>
|
||||||
|
<scripts>
|
||||||
|
<data class="com.arsdigita.aplaws.Loader"/>
|
||||||
|
</scripts>
|
||||||
|
</load>
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2002-2005 Runtime Collective Ltd. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.arsdigita.aplaws;
|
||||||
|
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
public class Aplaws {
|
||||||
|
public static final String versionId =
|
||||||
|
"$Id: Aplaws.java 1297 2006-08-25 18:17:50Z apevec $";
|
||||||
|
|
||||||
|
private static final Logger LOG = Logger.getLogger(Aplaws.class);
|
||||||
|
|
||||||
|
private static AplawsConfig aplawsConfig = new AplawsConfig();
|
||||||
|
|
||||||
|
static {
|
||||||
|
aplawsConfig.load();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final AplawsConfig getAplawsConfig() {
|
||||||
|
return aplawsConfig;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,53 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2002-2005 Runtime Collective Ltd. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.arsdigita.aplaws;
|
||||||
|
|
||||||
|
import com.arsdigita.runtime.AbstractConfig;
|
||||||
|
import com.arsdigita.util.parameter.Parameter;
|
||||||
|
import com.arsdigita.util.parameter.BooleanParameter;
|
||||||
|
import com.arsdigita.util.parameter.StringParameter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AplawsConfig
|
||||||
|
*
|
||||||
|
* @version $Revision: 1.2 $ $Date: 2005/01/07 19:01:40 $
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class AplawsConfig extends AbstractConfig {
|
||||||
|
|
||||||
|
public final static String versionId = "$Id: AplawsConfig.java 1565 2007-04-18 16:46:14Z apevec $";
|
||||||
|
|
||||||
|
private final Parameter m_ajaxExpandAllBranches = new BooleanParameter(
|
||||||
|
"com.arsdigita.aplaws.ajax_expand_on_all_branches",
|
||||||
|
Parameter.OPTIONAL,
|
||||||
|
Boolean.FALSE);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public AplawsConfig() {
|
||||||
|
register(m_ajaxExpandAllBranches);
|
||||||
|
loadInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public boolean ajaxExpandAllBranches () {
|
||||||
|
return ((Boolean)get(m_ajaxExpandAllBranches)).booleanValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
com.arsdigita.aplaws.ajax_expand_on_all_branches.title=Use Ajax on all branch expansions
|
||||||
|
com.arsdigita.aplaws.ajax_expand_on_all_branches.purpose=Use Ajax on all branches, or bring back entire subtree on expansion of top level root
|
||||||
|
com.arsdigita.aplaws.ajax_expand_on_all_branches.example=true|false
|
||||||
|
com.arsdigita.aplaws.ajax_expand_on_all_branches.format=[boolean]
|
||||||
|
|
@ -0,0 +1,50 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2001-2004 Red Hat Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.arsdigita.aplaws;
|
||||||
|
|
||||||
|
import com.arsdigita.categorization.Categorization;
|
||||||
|
import com.arsdigita.london.terms.TermCategoryListener;
|
||||||
|
import com.arsdigita.runtime.CompoundInitializer;
|
||||||
|
import com.arsdigita.runtime.DomainInitEvent;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
import com.arsdigita.templating.PatternStylesheetResolver;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The APLAWS initializer.
|
||||||
|
*
|
||||||
|
* @version $Id: Initializer.java 1232 2006-06-22 12:01:30Z sskracic $
|
||||||
|
*/
|
||||||
|
public class Initializer extends CompoundInitializer {
|
||||||
|
|
||||||
|
private static Logger s_log = Logger.getLogger
|
||||||
|
(Initializer.class.getName());
|
||||||
|
|
||||||
|
|
||||||
|
public void init(DomainInitEvent evt) {
|
||||||
|
super.init(evt);
|
||||||
|
|
||||||
|
Categorization.addCategoryListener(new TermCategoryListener());
|
||||||
|
|
||||||
|
PatternStylesheetResolver.registerPatternGenerator(
|
||||||
|
"webapp",
|
||||||
|
new WebAppPatternGenerator()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,379 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2001-2004 Red Hat Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.arsdigita.aplaws;
|
||||||
|
|
||||||
|
import com.arsdigita.london.navigation.Navigation;
|
||||||
|
import com.arsdigita.london.navigation.Template;
|
||||||
|
import com.arsdigita.london.navigation.TemplateMapping;
|
||||||
|
import com.arsdigita.london.terms.Domain;
|
||||||
|
import com.arsdigita.london.terms.importer.Parser;
|
||||||
|
import com.arsdigita.london.portal.PageLayout;
|
||||||
|
import com.arsdigita.london.portal.Workspace;
|
||||||
|
|
||||||
|
import com.arsdigita.categorization.Category;
|
||||||
|
import com.arsdigita.categorization.RootCategoryCollection;
|
||||||
|
import com.arsdigita.cms.ContentSection;
|
||||||
|
import com.arsdigita.cms.SecurityManager;
|
||||||
|
import com.arsdigita.cms.ui.role.RoleFactory;
|
||||||
|
import com.arsdigita.loader.PackageLoader;
|
||||||
|
import com.arsdigita.kernel.Role;
|
||||||
|
import com.arsdigita.kernel.RoleCollection;
|
||||||
|
import com.arsdigita.kernel.permissions.PrivilegeDescriptor;
|
||||||
|
import com.arsdigita.persistence.DataQuery;
|
||||||
|
import com.arsdigita.runtime.ScriptContext;
|
||||||
|
import com.arsdigita.util.Assert;
|
||||||
|
import com.arsdigita.util.UncheckedWrapperException;
|
||||||
|
import com.arsdigita.util.parameter.BooleanParameter;
|
||||||
|
import com.arsdigita.util.parameter.Parameter;
|
||||||
|
import com.arsdigita.util.parameter.StringParameter;
|
||||||
|
import com.arsdigita.util.parameter.URLParameter;
|
||||||
|
import com.arsdigita.web.Application;
|
||||||
|
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
import java.net.URL;
|
||||||
|
import java.net.MalformedURLException;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loader.
|
||||||
|
*
|
||||||
|
* Creates category domains in the terms application according to
|
||||||
|
* configuration files and adds jsp templates to navigation.
|
||||||
|
*
|
||||||
|
* @author Justin Ross <jross@redhat.com>
|
||||||
|
* @version $Id: Loader.java 755 2005-09-02 13:42:47Z sskracic $
|
||||||
|
*/
|
||||||
|
public class Loader extends PackageLoader {
|
||||||
|
public final static String versionId =
|
||||||
|
"$Id: Loader.java 755 2005-09-02 13:42:47Z sskracic $" +
|
||||||
|
"$Author: sskracic $" +
|
||||||
|
"$DateTime: 2004/03/25 09:34:39 $";
|
||||||
|
|
||||||
|
private static final Logger s_log = Logger.getLogger(Loader.class);
|
||||||
|
|
||||||
|
private static final String[] categoryFiles = new String[] {
|
||||||
|
"WEB-INF/aplaws/aap-nav-domain-1.00.xml"
|
||||||
|
, "WEB-INF/aplaws/aap-nav-hierarchy-1.00.xml"
|
||||||
|
};
|
||||||
|
|
||||||
|
private StringParameter m_navigationDomain;
|
||||||
|
// private StringParameter m_servicesDomain;
|
||||||
|
// private StringParameter m_interactionDomain;
|
||||||
|
// private StringParameter m_subjectDomain;
|
||||||
|
// private StringParameter m_rssDomain;
|
||||||
|
|
||||||
|
public Loader() {
|
||||||
|
|
||||||
|
// Es werden stumpf mehrere Kategorisierungsdomains fuer TERMS
|
||||||
|
// definiert und dann über xml Dateien gefüllt:
|
||||||
|
// navigationDomain f. Navigation
|
||||||
|
// subjectDomain f. ???
|
||||||
|
// interactionDomain f. ???
|
||||||
|
// rssDomain fuer vermutlich RSS Feed
|
||||||
|
//
|
||||||
|
m_navigationDomain = new StringParameter(
|
||||||
|
"com.arsdigita.aplaws.navigation_domain",
|
||||||
|
Parameter.REQUIRED,
|
||||||
|
"AAP-NAV");
|
||||||
|
register(m_navigationDomain);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* You may add more catagory domains by adding resources
|
||||||
|
* according the followin schema
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* currently not used
|
||||||
|
m_subjectDomain = new StringParameter(
|
||||||
|
"com.arsdigita.aplaws.subject_domain",
|
||||||
|
Parameter.REQUIRED,
|
||||||
|
"LGCL");
|
||||||
|
register(m_subjectDomain);
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* currently not used
|
||||||
|
m_interactionDomain = new StringParameter(
|
||||||
|
"com.arsdigita.aplaws.subject_domain",
|
||||||
|
Parameter.REQUIRED,
|
||||||
|
"LGIL");
|
||||||
|
register(m_interactionDomain);
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* currently not used
|
||||||
|
m_rssDomain = new StringParameter(
|
||||||
|
"com.arsdigita.aplaws.rss_domain",
|
||||||
|
Parameter.REQUIRED,
|
||||||
|
"APLAWS-RSS");
|
||||||
|
register(m_rssDomain);
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void run(final ScriptContext ctx) {
|
||||||
|
|
||||||
|
String[] files = categoryFiles;
|
||||||
|
|
||||||
|
final Parser parser = new Parser();
|
||||||
|
for (int i = 0 ; i < files.length ; i++) {
|
||||||
|
final String file = files[i];
|
||||||
|
if (s_log.isInfoEnabled()) {
|
||||||
|
s_log.info("Process " + file);
|
||||||
|
}
|
||||||
|
parser.parse(Thread.currentThread().getContextClassLoader
|
||||||
|
().getResourceAsStream
|
||||||
|
(file));
|
||||||
|
}
|
||||||
|
|
||||||
|
String navigationKey = (String)get(m_navigationDomain);
|
||||||
|
registerDomain(navigationKey, "/navigation/", null);
|
||||||
|
registerDomain(navigationKey, "/content/", null);
|
||||||
|
registerDomain(navigationKey, "/portal/", null);
|
||||||
|
//registerDomain(navigationKey, "/atoz/", null);
|
||||||
|
//registerDomain(navigationKey, "/admin/subsite/", null);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* You may add more catagory domains by adding resources
|
||||||
|
* according the following schema
|
||||||
|
*/
|
||||||
|
|
||||||
|
// String subjectKey = (String)get(m_subjectDomain);
|
||||||
|
// registerDomain(subjectKey, "/search/", null);
|
||||||
|
// registerDomain(subjectKey, "/content/", "subject");
|
||||||
|
|
||||||
|
// String servicesKey = (String)get(m_servicesDomain);
|
||||||
|
// registerDomain(servicesKey, "/services/", null);
|
||||||
|
// registerDomain(servicesKey, "/content/", "services");
|
||||||
|
|
||||||
|
// String rssKey = (String)get(m_rssDomain);
|
||||||
|
// registerDomain(rssKey, "/channels/", null);
|
||||||
|
// registerDomain(rssKey, "/content/", "rss");
|
||||||
|
|
||||||
|
// String interactionKey = (String)get(m_interactionDomain);
|
||||||
|
// registerDomain(interactionKey, "/content/", "interaction");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// register new / addidional JSP templates (index pages) in Navigation
|
||||||
|
// registerServicesTemplate("/services/"); wird nicht gebraucht
|
||||||
|
registerNavigationTemplates();
|
||||||
|
|
||||||
|
// Switch /portal/ to use 1 column layout for funky aplaws stuff.
|
||||||
|
Workspace portal = (Workspace)Application
|
||||||
|
.retrieveApplicationForPath("/portal/");
|
||||||
|
portal.setDefaultLayout(PageLayout
|
||||||
|
.findLayoutByFormat(PageLayout.FORMAT_ONE_COLUMN));
|
||||||
|
}
|
||||||
|
|
||||||
|
// public void registerServicesTemplate(String appURL) {
|
||||||
|
// Application app = Application.retrieveApplicationForPath(appURL);
|
||||||
|
// Assert.exists(app, Application.class);
|
||||||
|
// Category root = Category.getRootForObject(app);
|
||||||
|
// Assert.exists(root, Category.class);
|
||||||
|
//
|
||||||
|
// Template template = Template.create(
|
||||||
|
// "APLAWS Services",
|
||||||
|
// "APLAWS ESD Toolkit Services",
|
||||||
|
// "/packages/navigation/templates/aplaws-services.jsp");
|
||||||
|
//
|
||||||
|
// new TemplateMapping( template,
|
||||||
|
// root,
|
||||||
|
// Template.DEFAULT_DISPATCHER_CONTEXT,
|
||||||
|
// Template.DEFAULT_USE_CONTEXT );
|
||||||
|
// }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use Package com.arsdigita.london.navigation to add additional
|
||||||
|
* templates (JSP page - index page) for use in navigation.
|
||||||
|
* These JSP pages can be choosen in admin/navigation as index
|
||||||
|
* pages for one or more specific categories.
|
||||||
|
*
|
||||||
|
* TODO: make configurable without recompiling!
|
||||||
|
*/
|
||||||
|
public void registerNavigationTemplates() {
|
||||||
|
Template template ;
|
||||||
|
|
||||||
|
template = Template.create(
|
||||||
|
"AAP AtoZ paginator",
|
||||||
|
"AAP AtoZ paginator index page",
|
||||||
|
"/packages/navigation/templates/aap-atoz.jsp");
|
||||||
|
|
||||||
|
template = Template.create(
|
||||||
|
"AAP Default",
|
||||||
|
"AAP default index page",
|
||||||
|
"/packages/navigation/templates/aap-default.jsp");
|
||||||
|
|
||||||
|
template = Template.create(
|
||||||
|
"AAP Portalseite",
|
||||||
|
"AAP Portal Page",
|
||||||
|
"/packages/navigation/templates/aap-portal.jsp");
|
||||||
|
|
||||||
|
template = Template.create(
|
||||||
|
"AAP Recent",
|
||||||
|
"AAP reverse order page",
|
||||||
|
"/packages/navigation/templates/aap-recent.jsp");
|
||||||
|
|
||||||
|
template = Template.create(
|
||||||
|
"AAP Welcome Page",
|
||||||
|
"AAP Welcome Page for navigation",
|
||||||
|
"/packages/navigation/templates/aap-welcome.jsp");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function to create an empty default domain in terms, preconfigured
|
||||||
|
* for navigation. It may be populated manually by the user/publisher
|
||||||
|
* using the terms admin application.
|
||||||
|
* This step is useful only if no specific navigation tree is
|
||||||
|
* delivered.
|
||||||
|
*/
|
||||||
|
// -- public void registerDefaultNavigationDomain() {
|
||||||
|
|
||||||
|
// -- private StringParameter m_customNavKey;
|
||||||
|
// -- private URLParameter m_customNavDomainURL;
|
||||||
|
// -- private StringParameter m_customNavPath;
|
||||||
|
// -- private StringParameter m_customNavUseContext;
|
||||||
|
// -- private StringParameter m_customNavTitle;
|
||||||
|
// -- private StringParameter m_customNavDesc;
|
||||||
|
|
||||||
|
// -- m_customNavKey = new StringParameter(
|
||||||
|
// -- "com.arsdigita.aplaws.custom_nav_key",
|
||||||
|
// -- Parameter.REQUIRED,
|
||||||
|
// -- "APLAWS-NAVIGATION");
|
||||||
|
|
||||||
|
/* Zugriff auf Website wird nicht benötigt, aber der Parameter bei Einrichtung
|
||||||
|
* der Kategorien. Funktion URL prüft auf korrekte Syntax, nicht auf Existenz
|
||||||
|
*/
|
||||||
|
// -- try {
|
||||||
|
// -- m_customNavDomainURL = new URLParameter(
|
||||||
|
// -- "com.arsdigita.aplaws.custom_nav_domain_url",
|
||||||
|
// -- Parameter.REQUIRED,
|
||||||
|
// -- new URL("http://www.aplaws.org.uk/" +
|
||||||
|
// -- "standards/custom/1.00/termslist.xml"));
|
||||||
|
// -- } catch (MalformedURLException ex) {
|
||||||
|
// -- throw new UncheckedWrapperException("Cannot parse url", ex);
|
||||||
|
// -- }
|
||||||
|
|
||||||
|
|
||||||
|
// -- m_customNavPath = new StringParameter(
|
||||||
|
// -- "com.arsdigita.aplaws.custom_nav_path",
|
||||||
|
// -- Parameter.REQUIRED,
|
||||||
|
// -- "local");
|
||||||
|
|
||||||
|
// -- m_customNavUseContext = new StringParameter(
|
||||||
|
// -- "com.arsdigita.aplaws.custom_nav_use_context",
|
||||||
|
// -- Parameter.REQUIRED,
|
||||||
|
// -- "local");
|
||||||
|
|
||||||
|
// -- m_customNavTitle = new StringParameter(
|
||||||
|
// -- "com.arsdigita.aplaws.custom_nav_title",
|
||||||
|
// -- Parameter.REQUIRED,
|
||||||
|
// -- "APLAWS Custom Navigation");
|
||||||
|
|
||||||
|
// -- m_customNavDesc = new StringParameter(
|
||||||
|
// -- "com.arsdigita.aplaws.custom_nav_desc",
|
||||||
|
// -- Parameter.REQUIRED,
|
||||||
|
// -- "Installation specific navigation tree");
|
||||||
|
|
||||||
|
|
||||||
|
// -- register(m_customNavDesc);
|
||||||
|
// -- register(m_customNavDomainURL);
|
||||||
|
// -- register(m_customNavKey);
|
||||||
|
// -- register(m_customNavPath);
|
||||||
|
// -- register(m_customNavTitle);
|
||||||
|
// -- register(m_customNavUseContext);
|
||||||
|
|
||||||
|
// -- String customNavPath = (String)get(m_customNavPath);
|
||||||
|
// -- String customNavTitle = (String)get(m_customNavTitle);
|
||||||
|
|
||||||
|
// Package com.arsdigita.web
|
||||||
|
// Application.createApplication(Navigation.BASE_DATA_OBJECT_TYPE,
|
||||||
|
// customNavPath,
|
||||||
|
// customNavTitle,
|
||||||
|
// null);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// -- String customNavDesc = (String)get(m_customNavDesc);
|
||||||
|
// -- String customNavKey = (String)get(m_customNavKey);
|
||||||
|
// -- String customNavUseContext = (String)get(m_customNavUseContext);
|
||||||
|
// -- URL customNavDomainURL = (URL)get(m_customNavDomainURL);
|
||||||
|
|
||||||
|
// -- Domain.create(customNavKey, customNavDomainURL,
|
||||||
|
// -- customNavTitle, customNavDesc, "1.0.0", new Date());
|
||||||
|
|
||||||
|
// registerDomain(customNavKey, '/'+customNavPath+'/', null);
|
||||||
|
// -- registerDomain(customNavKey, "/content/", customNavUseContext);
|
||||||
|
|
||||||
|
// -- }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use Package com.arsdigita.london.terms to register a Domain for
|
||||||
|
* Categorisation
|
||||||
|
*/
|
||||||
|
public void registerDomain(String domainKey,
|
||||||
|
String appURL,
|
||||||
|
String context) {
|
||||||
|
if (s_log.isDebugEnabled()) {
|
||||||
|
s_log.debug("Mapping domain " + domainKey +
|
||||||
|
" to app " + appURL +
|
||||||
|
" in context " + context);
|
||||||
|
}
|
||||||
|
|
||||||
|
Domain domain = Domain.retrieve(domainKey); // package com.arsdigita.london.terms
|
||||||
|
Application app = Application.retrieveApplicationForPath(appURL);
|
||||||
|
domain.setAsRootForObject(app, context);
|
||||||
|
if (app instanceof ContentSection) {
|
||||||
|
RoleCollection coll = ((ContentSection) app).getStaffGroup().getOrderedRoles();
|
||||||
|
Set adminRoles = new HashSet();
|
||||||
|
Set categorizeRoles = new HashSet();
|
||||||
|
while (coll.next()) {
|
||||||
|
Role role = coll.getRole();
|
||||||
|
final DataQuery privs = RoleFactory.getRolePrivileges
|
||||||
|
(app.getID(), role.getGroup().getID());
|
||||||
|
while (privs.next()) {
|
||||||
|
String priv = (String) privs.get(RoleFactory.PRIVILEGE);
|
||||||
|
if (priv.equals(SecurityManager.CMS_CATEGORY_ADMIN)) {
|
||||||
|
adminRoles.add(role);
|
||||||
|
} else if (priv.equals(SecurityManager.CMS_CATEGORIZE_ITEMS)) {
|
||||||
|
categorizeRoles.add(role);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
RootCategoryCollection catCollection = Category.getRootCategories(((ContentSection) app));
|
||||||
|
while (catCollection.next()) {
|
||||||
|
Iterator adminIter = adminRoles.iterator();
|
||||||
|
while (adminIter.hasNext()) {
|
||||||
|
((Role) adminIter.next()).grantPermission(catCollection.getCategory(),
|
||||||
|
PrivilegeDescriptor.ADMIN);
|
||||||
|
}
|
||||||
|
Iterator categorizeIter = categorizeRoles.iterator();
|
||||||
|
while (categorizeIter.hasNext()) {
|
||||||
|
((Role) categorizeIter.next()).grantPermission(catCollection.getCategory(),
|
||||||
|
Category.MAP_DESCRIPTOR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,371 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2001-2004 Red Hat Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.arsdigita.aplaws;
|
||||||
|
|
||||||
|
import com.arsdigita.xml.Element;
|
||||||
|
|
||||||
|
import com.arsdigita.persistence.metadata.ObjectType;
|
||||||
|
import com.arsdigita.persistence.metadata.Property;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Stack;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
public class ObjectTypeSchemaGenerator extends ObjectTypeTraversal {
|
||||||
|
|
||||||
|
private boolean m_wrapRoot = false;
|
||||||
|
private boolean m_wrapObjects = false;
|
||||||
|
private boolean m_wrapAttributes = false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private Stack m_history = new Stack();
|
||||||
|
private HashMap m_elements = new HashMap();
|
||||||
|
|
||||||
|
// The xs:element
|
||||||
|
private Element m_element;
|
||||||
|
// The (optional) xs:complexType
|
||||||
|
private Element m_type;
|
||||||
|
// The (optional) xs:sequence
|
||||||
|
private Element m_sequence;
|
||||||
|
// The (optional property
|
||||||
|
private Property m_property;
|
||||||
|
private Stack m_properties = new Stack();
|
||||||
|
|
||||||
|
private Element m_root;
|
||||||
|
private String m_rootName;
|
||||||
|
|
||||||
|
public static final String SCHEMA_PREFIX = "xs:";
|
||||||
|
|
||||||
|
public static final String SCHEMA_NS =
|
||||||
|
"http://www.w3.org/2001/XMLSchema";
|
||||||
|
|
||||||
|
private static HashMap s_types = new HashMap();
|
||||||
|
static {
|
||||||
|
s_types.put(String.class, "xs:string");
|
||||||
|
s_types.put(Boolean.class, "xs:boolean");
|
||||||
|
s_types.put(Integer.class, "xs:integer");
|
||||||
|
s_types.put(BigDecimal.class, "xs:double");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static String lookupType(Class klass) {
|
||||||
|
if (s_types.containsKey(klass)) {
|
||||||
|
return (String)s_types.get(klass);
|
||||||
|
}
|
||||||
|
return "xs:string";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void registerType(Class klass, String type) {
|
||||||
|
s_types.put(klass, type);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public ObjectTypeSchemaGenerator(String rootName,
|
||||||
|
String namespace) {
|
||||||
|
m_root = new Element(SCHEMA_PREFIX + "schema",
|
||||||
|
SCHEMA_NS);
|
||||||
|
m_rootName = rootName;
|
||||||
|
|
||||||
|
// Set the namespace for nodes defined by the schema
|
||||||
|
m_root.addAttribute("targetNamespace", namespace);
|
||||||
|
// Set the default namespace for unqualified nodes
|
||||||
|
m_root.addAttribute("xmlns", namespace);
|
||||||
|
// All nodes in an instance doc conforming to the schema
|
||||||
|
// must be qualified
|
||||||
|
m_root.addAttribute("elementFormDefault", "qualified");
|
||||||
|
}
|
||||||
|
|
||||||
|
public Element getRoot() {
|
||||||
|
return m_root;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines XML output for root object.
|
||||||
|
* If set to true a separate element will
|
||||||
|
* be output for the root object, if false,
|
||||||
|
* then the element passed into the constructor
|
||||||
|
* will be used.
|
||||||
|
*/
|
||||||
|
public void setWrapRoot(boolean value) {
|
||||||
|
m_wrapRoot = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines XML output used for objects.
|
||||||
|
* If set to true, then a wrapper XML element
|
||||||
|
* will be generated for the association,
|
||||||
|
* and then individual elements generated for
|
||||||
|
* each object. If false then no wrapper
|
||||||
|
* XML element will be produced.
|
||||||
|
*/
|
||||||
|
public void setWrapObjects(boolean value) {
|
||||||
|
m_wrapObjects = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines XML output used for scalar
|
||||||
|
* attributes. If set to true, then each
|
||||||
|
* attribute is output as a separate element,
|
||||||
|
* otherwise, attributes are output as simple
|
||||||
|
* attributes.
|
||||||
|
*/
|
||||||
|
public void setWrapAttributes(boolean value) {
|
||||||
|
m_wrapAttributes = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method called when the processing of an object
|
||||||
|
* starts
|
||||||
|
*/
|
||||||
|
protected void beginObject(ObjectType obj,
|
||||||
|
String path) {
|
||||||
|
// XXX deal with revisited objects - xs:choice possibly
|
||||||
|
|
||||||
|
if (m_type != null && m_sequence == null) {
|
||||||
|
Element sequence = m_type.newChildElement(SCHEMA_PREFIX + "sequence",
|
||||||
|
SCHEMA_NS);
|
||||||
|
m_sequence = sequence;
|
||||||
|
}
|
||||||
|
|
||||||
|
Element parent;
|
||||||
|
String name;
|
||||||
|
if (m_element == null) {
|
||||||
|
if (m_wrapRoot) {
|
||||||
|
Element element = m_root.newChildElement(SCHEMA_PREFIX + "element",
|
||||||
|
SCHEMA_NS);
|
||||||
|
element.addAttribute("name", m_rootName);
|
||||||
|
|
||||||
|
Element type = element.newChildElement(SCHEMA_PREFIX + "complexType",
|
||||||
|
SCHEMA_NS);
|
||||||
|
Element sequence = type.newChildElement(SCHEMA_PREFIX + "sequence",
|
||||||
|
SCHEMA_NS);
|
||||||
|
|
||||||
|
parent = sequence;
|
||||||
|
name = nameFromPath(path);
|
||||||
|
} else {
|
||||||
|
parent = m_root;
|
||||||
|
name = m_rootName;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
parent = m_sequence;
|
||||||
|
if (m_wrapObjects) {
|
||||||
|
name = "object";
|
||||||
|
} else {
|
||||||
|
name = nameFromPath(path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Element element = parent.newChildElement(SCHEMA_PREFIX + "element",
|
||||||
|
SCHEMA_NS);
|
||||||
|
element.addAttribute("name", name);
|
||||||
|
|
||||||
|
if (m_property != null) {
|
||||||
|
if (m_property.isNullable()) {
|
||||||
|
element.addAttribute("minOccurs", "0");
|
||||||
|
}
|
||||||
|
if (m_property.isCollection()) {
|
||||||
|
element.addAttribute("maxOccurs", "unbounded");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Element type = element.newChildElement(SCHEMA_PREFIX + "complexType",
|
||||||
|
SCHEMA_NS);
|
||||||
|
|
||||||
|
Element oid = type.newChildElement(SCHEMA_PREFIX + "attribute",
|
||||||
|
SCHEMA_NS);
|
||||||
|
oid.addAttribute("name", "oid");
|
||||||
|
oid.addAttribute("type", "xs:string");
|
||||||
|
|
||||||
|
// Add to the path -> element map, not that we use this info yet
|
||||||
|
m_elements.put(path, element);
|
||||||
|
|
||||||
|
// Preserve context
|
||||||
|
m_history.push(new Element[] { m_element, m_type, m_sequence });
|
||||||
|
|
||||||
|
m_element = element;
|
||||||
|
m_type = type;
|
||||||
|
m_sequence = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method called when the procesing of an object
|
||||||
|
* completes
|
||||||
|
*/
|
||||||
|
protected void endObject(ObjectType obj,
|
||||||
|
String path) {
|
||||||
|
Element[] saved = (Element[])m_history.pop();
|
||||||
|
m_element = saved[0];
|
||||||
|
m_type = saved[1];
|
||||||
|
m_sequence = saved[2];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method called when an attribute is encountered
|
||||||
|
*/
|
||||||
|
protected void handleAttribute(ObjectType obj,
|
||||||
|
String path,
|
||||||
|
Property property) {
|
||||||
|
if (m_wrapAttributes) {
|
||||||
|
if (m_sequence == null) {
|
||||||
|
Element sequence = m_type.newChildElement(SCHEMA_PREFIX + "sequence",
|
||||||
|
SCHEMA_NS);
|
||||||
|
m_sequence = sequence;
|
||||||
|
}
|
||||||
|
|
||||||
|
Element element = new Element(SCHEMA_PREFIX + "element",
|
||||||
|
SCHEMA_NS);
|
||||||
|
element.addAttribute("name", property.getName());
|
||||||
|
// XXX pdl type -> xs type mapping
|
||||||
|
element.addAttribute("type",lookupType(property.getJavaClass()));
|
||||||
|
|
||||||
|
if (property.isNullable()) {
|
||||||
|
element.addAttribute("minOccurs", "0");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add to element
|
||||||
|
m_sequence.addContent(element);
|
||||||
|
|
||||||
|
// Add to the path -> element map
|
||||||
|
m_elements.put(path, element);
|
||||||
|
} else {
|
||||||
|
Element element = new Element(SCHEMA_PREFIX + "attribute",
|
||||||
|
SCHEMA_NS);
|
||||||
|
element.addAttribute("name", property.getName());
|
||||||
|
// XXX pdl type -> xs type mapping
|
||||||
|
element.addAttribute("type", lookupType(property.getJavaClass()));
|
||||||
|
|
||||||
|
if (property.isRequired()) {
|
||||||
|
element.addAttribute("use", "required");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add to element
|
||||||
|
m_type.addContent(element);
|
||||||
|
|
||||||
|
// Add to the path -> element map
|
||||||
|
m_elements.put(path, element);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method called when the processing of a role
|
||||||
|
* starts
|
||||||
|
*/
|
||||||
|
protected void beginRole(ObjectType obj,
|
||||||
|
String path,
|
||||||
|
Property property) {
|
||||||
|
if (m_wrapObjects) {
|
||||||
|
if (m_sequence == null) {
|
||||||
|
Element sequence = m_type.newChildElement(SCHEMA_PREFIX + "sequence",
|
||||||
|
SCHEMA_NS);
|
||||||
|
m_sequence = sequence;
|
||||||
|
}
|
||||||
|
|
||||||
|
Element element = m_sequence.newChildElement(SCHEMA_PREFIX + "element",
|
||||||
|
SCHEMA_NS);
|
||||||
|
element.addAttribute("name", property.getName());
|
||||||
|
if (property.isNullable()) {
|
||||||
|
element.addAttribute("minOccurs", "0");
|
||||||
|
}
|
||||||
|
|
||||||
|
Element type = element.newChildElement(SCHEMA_PREFIX + "complexType",
|
||||||
|
SCHEMA_NS);
|
||||||
|
Element sequence = type.newChildElement(SCHEMA_PREFIX + "sequence",
|
||||||
|
SCHEMA_NS);
|
||||||
|
|
||||||
|
// Preserve context
|
||||||
|
m_history.push(new Element[] { m_element, m_type, m_sequence });
|
||||||
|
|
||||||
|
m_element = element;
|
||||||
|
m_type = type;
|
||||||
|
m_sequence = sequence;
|
||||||
|
}
|
||||||
|
m_properties.push(m_property);
|
||||||
|
m_property = property;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method called when the procesing of a role
|
||||||
|
* completes
|
||||||
|
*/
|
||||||
|
protected void endRole(ObjectType obj,
|
||||||
|
String path,
|
||||||
|
Property property) {
|
||||||
|
if (m_wrapObjects) {
|
||||||
|
Element[] saved = (Element[])m_history.pop();
|
||||||
|
m_element = saved[0];
|
||||||
|
m_type = saved[1];
|
||||||
|
m_sequence = saved[2];
|
||||||
|
}
|
||||||
|
m_property = (Property)m_properties.pop();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method called when the processing of an association
|
||||||
|
* starts
|
||||||
|
*/
|
||||||
|
protected void beginAssociation(ObjectType obj,
|
||||||
|
String path,
|
||||||
|
Property property) {
|
||||||
|
if (m_wrapObjects) {
|
||||||
|
if (m_sequence == null) {
|
||||||
|
Element sequence = m_type.newChildElement(SCHEMA_PREFIX + "sequence",
|
||||||
|
SCHEMA_NS);
|
||||||
|
m_sequence = sequence;
|
||||||
|
}
|
||||||
|
|
||||||
|
Element element = m_sequence.newChildElement(SCHEMA_PREFIX + "element",
|
||||||
|
SCHEMA_NS);
|
||||||
|
element.addAttribute("name", property.getName());
|
||||||
|
if (property.isNullable()) {
|
||||||
|
element.addAttribute("minOccurs", "0");
|
||||||
|
}
|
||||||
|
|
||||||
|
Element type = element.newChildElement(SCHEMA_PREFIX + "complexType",
|
||||||
|
SCHEMA_NS);
|
||||||
|
Element sequence = type.newChildElement(SCHEMA_PREFIX + "sequence",
|
||||||
|
SCHEMA_NS);
|
||||||
|
|
||||||
|
// Preserve context
|
||||||
|
m_history.push(new Element[] { m_element, m_type, m_sequence });
|
||||||
|
|
||||||
|
m_element = element;
|
||||||
|
m_type = type;
|
||||||
|
m_sequence = sequence;
|
||||||
|
}
|
||||||
|
m_properties.push(m_property);
|
||||||
|
m_property = property;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method called when the procesing of an association
|
||||||
|
* completes
|
||||||
|
*/
|
||||||
|
protected void endAssociation(ObjectType obj,
|
||||||
|
String path,
|
||||||
|
Property property) {
|
||||||
|
if (m_wrapObjects) {
|
||||||
|
Element[] saved = (Element[])m_history.pop();
|
||||||
|
m_element = saved[0];
|
||||||
|
m_type = saved[1];
|
||||||
|
m_sequence = saved[2];
|
||||||
|
}
|
||||||
|
m_property = (Property)m_properties.pop();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,358 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2001-2004 Red Hat Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.arsdigita.aplaws;
|
||||||
|
|
||||||
|
import com.arsdigita.util.Assert;
|
||||||
|
|
||||||
|
import com.arsdigita.persistence.metadata.ObjectType;
|
||||||
|
import com.arsdigita.persistence.metadata.Property;
|
||||||
|
import com.arsdigita.persistence.metadata.MetadataRoot;
|
||||||
|
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
// XXX this class is pretty similar to DomainObjectTraversal
|
||||||
|
// and it would be nice to figure out a way to let them share
|
||||||
|
// some of their logic (provided it didn't cripple / obfuscate
|
||||||
|
// the API).
|
||||||
|
|
||||||
|
// At minimum the process for registering & looking up hierachical
|
||||||
|
// adapters can be shared. Also the mangling of names / paths.
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>This class provides a general purpose framework for iterating
|
||||||
|
* over a domain object's properties, processing attributes and
|
||||||
|
* traversing associations as required.</p>
|
||||||
|
*
|
||||||
|
* <p>Subclasses should implement the startXXX and endXXX methods to
|
||||||
|
* provide whatever processing logic they require upon encountering
|
||||||
|
* attributes, roles, associations and objects.</p>
|
||||||
|
*
|
||||||
|
* <p>The {@link com.arsdigita.domain.ObjectTypeTraversalAdapter}
|
||||||
|
* provides a means to control which properties are processed and,
|
||||||
|
* most importantly, which associations are traversed. When
|
||||||
|
* registering an adapter, a 'use context' is supplied allowing
|
||||||
|
* different adapters to be used according to the requirements of any
|
||||||
|
* implementing subclass. It is recommended that the use context be
|
||||||
|
* based on the fully qualified name of the class using
|
||||||
|
* ObjectTypeTraversal, e.g.,
|
||||||
|
* com.arsdigita.cms.ui.ObjectTypeRenderer.</p>
|
||||||
|
*
|
||||||
|
* <p>The path argument provided to the adapter and the startXXX ad
|
||||||
|
* endXXX methods indicates which associations are currently being
|
||||||
|
* traversed. The first element in the path is always '/object'. If it
|
||||||
|
* then starts to traverse the 'rootCategory' association, the path
|
||||||
|
* will become '/object/rootCategory'. For self-recursive
|
||||||
|
* associations, rather than building up a long repeating string, the
|
||||||
|
* path will be shortened by adding a '+' for each element that is
|
||||||
|
* repeated. For example, '/object/container+' indicates that the
|
||||||
|
* container association has been followed two or more times.</p>
|
||||||
|
*/
|
||||||
|
public abstract class ObjectTypeTraversal {
|
||||||
|
|
||||||
|
private static HashMap s_adapters = new HashMap();
|
||||||
|
|
||||||
|
private static final Logger s_log = Logger.getLogger(ObjectTypeTraversal.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a traversal adapter for an object type in a given
|
||||||
|
* context.
|
||||||
|
*
|
||||||
|
* @param type the object type whose items will be traversed
|
||||||
|
* @param adapter the adapter for controlling object traversal
|
||||||
|
* @param context the context in which the adapter should be used
|
||||||
|
*/
|
||||||
|
public static void registerAdapter(ObjectType type,
|
||||||
|
ObjectTypeTraversalAdapter adapter,
|
||||||
|
String context) {
|
||||||
|
s_adapters.put(new AdapterKey(type, context), adapter);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unregisteres a traversal adapter for an object type in a
|
||||||
|
* given context
|
||||||
|
*
|
||||||
|
* @param type the object type whose items will be traversed
|
||||||
|
* @param context the context in which the adapter should be used
|
||||||
|
*/
|
||||||
|
public static void unregisterAdapter(ObjectType type,
|
||||||
|
String context) {
|
||||||
|
s_adapters.remove(new AdapterKey(type, context));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a traversal adapter for an object type in a given
|
||||||
|
* context.
|
||||||
|
*
|
||||||
|
* @param type the object type whose items will be traversed
|
||||||
|
* @param adapter the adapter for controlling object traversal
|
||||||
|
* @param context the context in which the adapter should be used
|
||||||
|
*/
|
||||||
|
public static void registerAdapter(String type,
|
||||||
|
ObjectTypeTraversalAdapter adapter,
|
||||||
|
String context) {
|
||||||
|
registerAdapter(MetadataRoot.getMetadataRoot().getObjectType(type),
|
||||||
|
adapter,
|
||||||
|
context);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unregisteres a traversal adapter for an object type in a
|
||||||
|
* given context
|
||||||
|
*
|
||||||
|
* @param type the object type whose items will be traversed
|
||||||
|
* @param context the context in which the adapter should be used
|
||||||
|
*/
|
||||||
|
public static void unregisterAdapter(String type,
|
||||||
|
String context) {
|
||||||
|
unregisterAdapter(MetadataRoot.getMetadataRoot().getObjectType(type),
|
||||||
|
context);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the traversal adapter for an object type in a given
|
||||||
|
* context.
|
||||||
|
*
|
||||||
|
* @param type the object type to lookup
|
||||||
|
* @param context the adapter context
|
||||||
|
*/
|
||||||
|
public static ObjectTypeTraversalAdapter lookupAdapter(ObjectType type,
|
||||||
|
String context) {
|
||||||
|
return (ObjectTypeTraversalAdapter)s_adapters
|
||||||
|
.get(new AdapterKey(type, context));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the closest matching traversal adapter for an object type
|
||||||
|
* in a given context. The algorithm looks for an exact match, then
|
||||||
|
* considers the supertype, and the supertype's supertype. If no match
|
||||||
|
* could be found at all, returns null
|
||||||
|
*
|
||||||
|
* @param type the object type to search for
|
||||||
|
* @param context the adapter context
|
||||||
|
*/
|
||||||
|
public static ObjectTypeTraversalAdapter findAdapter(ObjectType type,
|
||||||
|
String context) {
|
||||||
|
ObjectTypeTraversalAdapter adapter = null;
|
||||||
|
while (adapter == null && type != null) {
|
||||||
|
adapter = lookupAdapter(type, context);
|
||||||
|
type = type.getSupertype();
|
||||||
|
}
|
||||||
|
return adapter;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Walks over properties of a domain object, invoking
|
||||||
|
* methods to handle assoications, roles and attributes.
|
||||||
|
*
|
||||||
|
* @param obj the domain object to traverse
|
||||||
|
* @param context the context for the traversal adapter
|
||||||
|
*/
|
||||||
|
public void walk(String type,
|
||||||
|
String context) {
|
||||||
|
walk(MetadataRoot.getMetadataRoot().getObjectType(type),
|
||||||
|
context);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Walks over properties of a domain object, invoking
|
||||||
|
* methods to handle assoications, roles and attributes.
|
||||||
|
*
|
||||||
|
* @param obj the domain object to traverse
|
||||||
|
* @param context the context for the traversal adapter
|
||||||
|
*/
|
||||||
|
public void walk(ObjectType type,
|
||||||
|
String context) {
|
||||||
|
Assert.exists(type, ObjectType.class);
|
||||||
|
|
||||||
|
ObjectTypeTraversalAdapter adapter = findAdapter(type,
|
||||||
|
context);
|
||||||
|
Assert.exists(adapter, ObjectTypeTraversalAdapter.class);
|
||||||
|
walk(adapter, type, "/object");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void walk(ObjectTypeTraversalAdapter adapter,
|
||||||
|
ObjectType type,
|
||||||
|
String path) {
|
||||||
|
beginObject(type, path);
|
||||||
|
|
||||||
|
if (s_log.isInfoEnabled()) {
|
||||||
|
s_log.info("Walking " + path + " type: " + type.getQualifiedName());
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Iterator i = type.getProperties(); i.hasNext(); ) {
|
||||||
|
Property prop = (Property) i.next();
|
||||||
|
String propName = prop.getName();
|
||||||
|
|
||||||
|
if (!adapter.processProperty(type,
|
||||||
|
appendToPath(path, prop.getName()),
|
||||||
|
prop)) {
|
||||||
|
if (s_log.isDebugEnabled()) {
|
||||||
|
s_log.debug("Skipping property " + propName);
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (s_log.isDebugEnabled()) {
|
||||||
|
s_log.debug("Process property " + propName + " type " + prop.getType().getQualifiedName());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (prop.isAttribute()) {
|
||||||
|
handleAttribute(type, path, prop);
|
||||||
|
} else {
|
||||||
|
if (!prop.isCollection()) {
|
||||||
|
beginRole(type, path, prop);
|
||||||
|
|
||||||
|
walk(adapter,
|
||||||
|
(ObjectType)prop.getType(),
|
||||||
|
appendToPath(path, propName));
|
||||||
|
|
||||||
|
endRole(type, path, prop);
|
||||||
|
} else {
|
||||||
|
beginAssociation(type, path, prop);
|
||||||
|
|
||||||
|
Property roleProp = prop.getAssociatedProperty();
|
||||||
|
|
||||||
|
walk(adapter,
|
||||||
|
(ObjectType)prop.getType(),
|
||||||
|
appendToPath(path, propName));
|
||||||
|
|
||||||
|
endAssociation(type, path, prop);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
endObject(type, path);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method called when the processing of an object
|
||||||
|
* starts
|
||||||
|
*/
|
||||||
|
protected abstract void beginObject(ObjectType obj,
|
||||||
|
String path);
|
||||||
|
/**
|
||||||
|
* Method called when the procesing of an object
|
||||||
|
* completes
|
||||||
|
*/
|
||||||
|
protected abstract void endObject(ObjectType obj,
|
||||||
|
String path);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method called when an attribute is encountered
|
||||||
|
*/
|
||||||
|
protected abstract void handleAttribute(ObjectType obj,
|
||||||
|
String path,
|
||||||
|
Property property);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method called when the processing of a role
|
||||||
|
* starts
|
||||||
|
*/
|
||||||
|
protected abstract void beginRole(ObjectType obj,
|
||||||
|
String path,
|
||||||
|
Property property);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method called when the procesing of a role
|
||||||
|
* completes
|
||||||
|
*/
|
||||||
|
protected abstract void endRole(ObjectType obj,
|
||||||
|
String path,
|
||||||
|
Property property);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method called when the processing of an association
|
||||||
|
* starts
|
||||||
|
*/
|
||||||
|
protected abstract void beginAssociation(ObjectType obj,
|
||||||
|
String path,
|
||||||
|
Property property);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method called when the procesing of an association
|
||||||
|
* completes
|
||||||
|
*/
|
||||||
|
protected abstract void endAssociation(ObjectType obj,
|
||||||
|
String path,
|
||||||
|
Property property);
|
||||||
|
|
||||||
|
|
||||||
|
protected String appendToPath(String path,
|
||||||
|
String name) {
|
||||||
|
if (path.endsWith("/" + name)) {
|
||||||
|
path = path + "+";
|
||||||
|
} else if (!path.endsWith("/" + name + "+")) {
|
||||||
|
path = path + "/" + name;
|
||||||
|
}
|
||||||
|
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected String nameFromPath(String path) {
|
||||||
|
int index = path.lastIndexOf("/");
|
||||||
|
Assert.truth(index >= 0, "Path starts with /");
|
||||||
|
|
||||||
|
if (path.endsWith("+")) {
|
||||||
|
return path.substring(index + 1, path.length() - 2);
|
||||||
|
} else {
|
||||||
|
return path.substring(index + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected String parentFromPath(String path) {
|
||||||
|
int index = path.lastIndexOf("/");
|
||||||
|
Assert.truth(index >= 0, "Path starts with /");
|
||||||
|
|
||||||
|
if (index == 0) {
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
return path.substring(0, index - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class AdapterKey {
|
||||||
|
private ObjectType m_type;
|
||||||
|
private String m_context;
|
||||||
|
|
||||||
|
public AdapterKey(ObjectType type,
|
||||||
|
String context) {
|
||||||
|
m_type = type;
|
||||||
|
m_context = context;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (o instanceof AdapterKey) {
|
||||||
|
AdapterKey k = (AdapterKey)o;
|
||||||
|
return k.m_type.equals(m_type) &&
|
||||||
|
k.m_context.equals(m_context);
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int hashCode() {
|
||||||
|
return m_type.hashCode() + m_context.hashCode();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2001-2004 Red Hat Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.arsdigita.aplaws;
|
||||||
|
|
||||||
|
import com.arsdigita.persistence.metadata.Property;
|
||||||
|
import com.arsdigita.persistence.metadata.ObjectType;
|
||||||
|
|
||||||
|
// XXX this class is pretty similar to DomainObjectTraversal
|
||||||
|
// and it would be nice to figure out a way to let them share
|
||||||
|
// some of their logic (provided it didn't cripple / obfuscate
|
||||||
|
// the API).
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>This interface is used to control traversal of domain
|
||||||
|
* objects. Whenever a property is encountered, the {@link
|
||||||
|
* #processProperty} method will be called to determine whether or not
|
||||||
|
* to continue processing the object. The most important use for this
|
||||||
|
* is to prevent the needless (and potentially infinite) traversal of
|
||||||
|
* associations between objects, but it can also be used to filter out
|
||||||
|
* certain attributes.</p>
|
||||||
|
*
|
||||||
|
* <p>Instances of this class need to be registered using the
|
||||||
|
* DomainObjectTraversal.registerAdapter method.</p>
|
||||||
|
*
|
||||||
|
* @see com.arsdigita.domain.DomainObjectTraversal
|
||||||
|
* @see com.arsdigita.domain.SimpleDomainObjectTraversalAdapter
|
||||||
|
* @version $Id: ObjectTypeTraversalAdapter.java 287 2005-02-22 00:29:02Z sskracic $
|
||||||
|
*/
|
||||||
|
public interface ObjectTypeTraversalAdapter {
|
||||||
|
/**
|
||||||
|
* Invoked to determine whether to process a property.
|
||||||
|
* Should return true to allow processing to commence,
|
||||||
|
* false to prevent it.
|
||||||
|
*
|
||||||
|
* @param obj the object type currently being processed
|
||||||
|
* @param path the path to the current domain object from
|
||||||
|
* the root object being traversed
|
||||||
|
* @param prop the property about to be processed
|
||||||
|
* @return true if the property should be processed
|
||||||
|
*/
|
||||||
|
public boolean processProperty(ObjectType obj,
|
||||||
|
String path,
|
||||||
|
Property prop);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,151 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2001-2004 Red Hat Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.arsdigita.aplaws;
|
||||||
|
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
import com.arsdigita.persistence.metadata.Property;
|
||||||
|
import com.arsdigita.persistence.metadata.ObjectType;
|
||||||
|
import java.util.HashSet;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is a general purpose traversal adaptor
|
||||||
|
* that allows/denies processing of a property
|
||||||
|
* based on the path to the property, and its
|
||||||
|
* presence in an inclusion/exclusion set.
|
||||||
|
*
|
||||||
|
* Instances of this class can be configured using
|
||||||
|
* the ObjectTypeTraversalInitializer
|
||||||
|
*
|
||||||
|
* <p>See <code>com.arsdigita.cms.installer.ObjectTypeTraversalInitializer</code>.
|
||||||
|
*/
|
||||||
|
public class SimpleObjectTypeTraversalAdapter
|
||||||
|
implements ObjectTypeTraversalAdapter {
|
||||||
|
|
||||||
|
private static final Logger s_log =
|
||||||
|
Logger.getLogger(SimpleObjectTypeTraversalAdapter.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rule that indicates the set of properties should be treated
|
||||||
|
* as an inclusion list. ie, don't allow any properties except
|
||||||
|
* those listed. This is the default for associations
|
||||||
|
*/
|
||||||
|
public final static int RULE_INCLUDE = 0;
|
||||||
|
/**
|
||||||
|
* Rule that indicates the set of properties should be treated
|
||||||
|
* as an exclusion list. ie, allow through all properties,
|
||||||
|
* except those listed. This is the default for attributes.
|
||||||
|
*/
|
||||||
|
public final static int RULE_EXCLUDE = 1;
|
||||||
|
|
||||||
|
private HashSet m_attr = new HashSet();
|
||||||
|
private HashSet m_assoc = new HashSet();
|
||||||
|
|
||||||
|
private int m_attrRule = RULE_EXCLUDE;
|
||||||
|
private int m_assocRule = RULE_INCLUDE;
|
||||||
|
|
||||||
|
private SimpleObjectTypeTraversalAdapter m_parent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new traversal adapter, with no parent
|
||||||
|
* delegate. If no explicit rule is present it will
|
||||||
|
* return false if RULE_INCLUDE is set, or true if
|
||||||
|
* RULE_EXCLUDE is set.
|
||||||
|
*/
|
||||||
|
public SimpleObjectTypeTraversalAdapter() {
|
||||||
|
this(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new traversal adapter, extending the rules
|
||||||
|
* defined by a parent. If there is no explicit rule
|
||||||
|
* for the property questioned, it will delegate the
|
||||||
|
* query to the parent.
|
||||||
|
* @param parent the parent adapter to delegate to
|
||||||
|
*/
|
||||||
|
public SimpleObjectTypeTraversalAdapter(
|
||||||
|
SimpleObjectTypeTraversalAdapter parent
|
||||||
|
) {
|
||||||
|
m_parent = parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the rule for processing attributes
|
||||||
|
*
|
||||||
|
* @param rule the new processing rule
|
||||||
|
*/
|
||||||
|
public void setAttributeRule(int rule) {
|
||||||
|
m_attrRule = rule;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the rule for processing associations
|
||||||
|
*
|
||||||
|
* @param rule the new processing rule
|
||||||
|
*/
|
||||||
|
public void setAssociationRule(int rule) {
|
||||||
|
m_assocRule = rule;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a property to the attribute property set.
|
||||||
|
*
|
||||||
|
* @param path the full path to the property
|
||||||
|
*/
|
||||||
|
public void addAttributeProperty(String prop) {
|
||||||
|
m_attr.add(prop);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a property to the association property set.
|
||||||
|
*
|
||||||
|
* @param path the full path to the property
|
||||||
|
*/
|
||||||
|
public void addAssociationProperty(String prop) {
|
||||||
|
m_assoc.add(prop);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines whether or not to allow processing
|
||||||
|
* of a property, based on the property set and
|
||||||
|
* the processing rule
|
||||||
|
*/
|
||||||
|
public boolean processProperty(ObjectType obj,
|
||||||
|
String path,
|
||||||
|
Property prop) {
|
||||||
|
if (prop.isAttribute()) {
|
||||||
|
boolean result = m_attr.contains(path);
|
||||||
|
s_log.debug("Check attr " + path + " contains " +
|
||||||
|
result + " " + m_attrRule);
|
||||||
|
if (!result && m_parent != null) {
|
||||||
|
s_log.debug("No explicit rule, delegating to parent");
|
||||||
|
return m_parent.processProperty(obj, path, prop);
|
||||||
|
}
|
||||||
|
return m_attrRule == RULE_INCLUDE ? result : !result;
|
||||||
|
} else {
|
||||||
|
boolean result = m_assoc.contains(path);
|
||||||
|
s_log.debug("Check assoc " + path + " contains " +
|
||||||
|
result + " " + m_attrRule);
|
||||||
|
if (!result && m_parent != null) {
|
||||||
|
s_log.debug("No explicit rule, delegating to parent");
|
||||||
|
return m_parent.processProperty(obj, path, prop);
|
||||||
|
}
|
||||||
|
return m_assocRule == RULE_INCLUDE ? result : !result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,57 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2001-2004 Red Hat Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.arsdigita.aplaws;
|
||||||
|
|
||||||
|
|
||||||
|
import com.arsdigita.web.Application;
|
||||||
|
import com.arsdigita.web.Web;
|
||||||
|
import com.arsdigita.templating.PatternGenerator;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates a set of patterns corresponding to the current
|
||||||
|
* web application prefix
|
||||||
|
*/
|
||||||
|
public class WebAppPatternGenerator implements PatternGenerator {
|
||||||
|
|
||||||
|
private static final Logger s_log =
|
||||||
|
Logger.getLogger(WebAppPatternGenerator.class);
|
||||||
|
|
||||||
|
public String[] generateValues(String key,
|
||||||
|
HttpServletRequest req) {
|
||||||
|
Application app = Web.getContext().getApplication();
|
||||||
|
String ctx = app == null ? null : app.getContextPath();
|
||||||
|
|
||||||
|
if (app == null ||
|
||||||
|
ctx == null ||
|
||||||
|
"".equals(ctx)) {
|
||||||
|
return new String[] { Web.ROOT_WEBAPP };
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ctx.startsWith("/")) {
|
||||||
|
ctx = ctx.substring(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new String[] { ctx };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,278 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2001-2004 Red Hat Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.arsdigita.aplaws.ui;
|
||||||
|
|
||||||
|
import com.arsdigita.aplaws.Aplaws;
|
||||||
|
import com.arsdigita.bebop.Label;
|
||||||
|
import com.arsdigita.bebop.SimpleContainer;
|
||||||
|
import com.arsdigita.bebop.PageState;
|
||||||
|
import com.arsdigita.bebop.parameters.StringParameter;
|
||||||
|
import com.arsdigita.bebop.parameters.BigDecimalParameter;
|
||||||
|
import com.arsdigita.bebop.event.ActionEvent;
|
||||||
|
import com.arsdigita.bebop.event.ActionListener;
|
||||||
|
import com.arsdigita.bebop.form.Widget;
|
||||||
|
import com.arsdigita.persistence.SessionManager;
|
||||||
|
import com.arsdigita.persistence.DataCollection;
|
||||||
|
import com.arsdigita.domain.DomainCollection;
|
||||||
|
import com.arsdigita.domain.DomainObjectFactory;
|
||||||
|
import com.arsdigita.kernel.ACSObject;
|
||||||
|
import com.arsdigita.london.terms.Term;
|
||||||
|
import com.arsdigita.london.terms.Domain;
|
||||||
|
import com.arsdigita.categorization.ui.ACSObjectCategoryForm;
|
||||||
|
import com.arsdigita.cms.ContentItem;
|
||||||
|
import com.arsdigita.cms.CMS;
|
||||||
|
import com.arsdigita.cms.ui.authoring.ItemCategoryForm;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* abstracted from original version of ItemCategoryPicker r1297
|
||||||
|
* chris gilbert
|
||||||
|
*/
|
||||||
|
public abstract class ACSObjectCategoryPicker extends SimpleContainer {
|
||||||
|
private static final Logger s_log = Logger.getLogger(ItemCategoryPicker.class);
|
||||||
|
|
||||||
|
private ACSObjectCategoryForm m_form;
|
||||||
|
private BigDecimalParameter m_root;
|
||||||
|
|
||||||
|
public ACSObjectCategoryPicker(BigDecimalParameter root,
|
||||||
|
StringParameter mode) {
|
||||||
|
|
||||||
|
m_form = getForm(root, mode);
|
||||||
|
m_root = root;
|
||||||
|
|
||||||
|
add(m_form);
|
||||||
|
m_form.addCompletionListener(new ItemCategoryFormCompletion());
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract ACSObjectCategoryForm getForm(BigDecimalParameter root, StringParameter mode);
|
||||||
|
|
||||||
|
protected abstract ACSObject getObject(PageState state);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private class ItemCategoryFormCompletion implements ActionListener {
|
||||||
|
public void actionPerformed(ActionEvent ev) {
|
||||||
|
|
||||||
|
PageState state = ev.getPageState();
|
||||||
|
Domain domain = getDomain(state);
|
||||||
|
String domainKey = domain.getKey();
|
||||||
|
|
||||||
|
if (s_log.isDebugEnabled()) {
|
||||||
|
s_log.debug("Saving categories in: " + domainKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
ACSObject object = getObject(state);
|
||||||
|
|
||||||
|
if ("LGCL".equals(domainKey)) {
|
||||||
|
lgclSelected(domain, object);
|
||||||
|
}
|
||||||
|
|
||||||
|
else if ("LGDL".equals(domainKey)) {
|
||||||
|
lgdlSelected(domain, object);
|
||||||
|
}
|
||||||
|
|
||||||
|
fireCompletionEvent(state);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void lgclSelected(Domain domain, ACSObject object) {
|
||||||
|
List lgclTerms = getCurrentCategories(domain, object);
|
||||||
|
|
||||||
|
Domain gcl = Domain.retrieve("GCL");
|
||||||
|
Collection gclTerms = getRelatedTerms(lgclTerms, gcl);
|
||||||
|
clearTerms(gcl, object);
|
||||||
|
assignTerms(gclTerms, object);
|
||||||
|
|
||||||
|
// The assignment below is removed to satisfy requirement 4.1,
|
||||||
|
// use case 1 of the document "Metadata Improvements" version 1
|
||||||
|
// by Camden, dated 23/01/05.
|
||||||
|
//Domain lgsl = Domain.retrieve("LGSL");
|
||||||
|
//Collection lgslTerms = getRelatedTerms(lgclTerms, lgsl);
|
||||||
|
//clearTerms(lgsl, object);
|
||||||
|
//assignTerms(lgslTerms, object);
|
||||||
|
|
||||||
|
// adding processing or mapping from LGCL to APLAWS-NAV too
|
||||||
|
// boolean lgclOverrideAnav = Aplaws.getAplawsConfig().getOverrideAnavFromLGCLMappings().booleanValue();
|
||||||
|
// if (lgclOverrideAnav) {
|
||||||
|
// Domain aplawsNav = Domain.retrieve("APLAWS-NAV");
|
||||||
|
// Collection aplawsNavTerms = getRelatedTerms(lgclTerms, aplawsNav);
|
||||||
|
// clearTerms(aplawsNav, object);
|
||||||
|
// assignTerms(aplawsNavTerms, object);
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
// User has selected a term in the LGDL hierarchy, which includes
|
||||||
|
// terms from the LGSL. We're only interested in LGSL terms here.
|
||||||
|
private void lgdlSelected(Domain domain, ACSObject object) {
|
||||||
|
Domain lgsl = Domain.retrieve("LGSL");
|
||||||
|
Domain gcl = Domain.retrieve("GCL");
|
||||||
|
Domain lgcl = Domain.retrieve("LGCL");
|
||||||
|
|
||||||
|
// We have a mapping LGSL -> LGCL based on the reverse of a
|
||||||
|
// published mapping. We don't have a mapping LGSL -> GCL, so we
|
||||||
|
// do LGSL -> LGCL -> GCL instead.
|
||||||
|
|
||||||
|
List lgslTerms = getCurrentCategories(lgsl, object);
|
||||||
|
Collection lgclTerms = getRelatedTerms(lgslTerms, lgcl);
|
||||||
|
|
||||||
|
LinkedList lgclIDs = new LinkedList();
|
||||||
|
Iterator i = lgclTerms.iterator();
|
||||||
|
while (i.hasNext()) {
|
||||||
|
Term term = (Term) i.next();
|
||||||
|
lgclIDs.add(term.getModel().getID());
|
||||||
|
}
|
||||||
|
|
||||||
|
Collection gclTerms = getRelatedTerms(lgclIDs, gcl);
|
||||||
|
|
||||||
|
clearTerms(lgcl, object);
|
||||||
|
assignTerms(lgclTerms, object);
|
||||||
|
|
||||||
|
clearTerms(gcl, object);
|
||||||
|
assignTerms(gclTerms, object);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected List getCurrentCategories(Domain domain,
|
||||||
|
ACSObject object) {
|
||||||
|
if (s_log.isDebugEnabled()) {
|
||||||
|
s_log.debug("Getting terms from " + domain + " to " + object);
|
||||||
|
}
|
||||||
|
DomainCollection terms = domain.getTerms();
|
||||||
|
terms.addEqualsFilter("model.childObjects.id", object.getID());
|
||||||
|
terms.addPath("model.id");
|
||||||
|
|
||||||
|
List current = new LinkedList();
|
||||||
|
while (terms.next()) {
|
||||||
|
if (s_log.isDebugEnabled()) {
|
||||||
|
s_log.debug("Got term " + terms.get("model.id"));
|
||||||
|
}
|
||||||
|
current.add(terms.get("model.id"));
|
||||||
|
}
|
||||||
|
return current;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO move out of UI code
|
||||||
|
public static Collection getCurrentTerms(Domain domain,
|
||||||
|
ACSObject object) {
|
||||||
|
if (s_log.isDebugEnabled()) {
|
||||||
|
s_log.debug("Getting terms from " + domain + " to " + object);
|
||||||
|
}
|
||||||
|
Collection current = new LinkedList();
|
||||||
|
DomainCollection terms = domain.getTerms();
|
||||||
|
terms.addEqualsFilter("model.childObjects.id", object.getID());
|
||||||
|
terms.addPath("model.id");
|
||||||
|
while (terms.next()) {
|
||||||
|
if (s_log.isDebugEnabled()) {
|
||||||
|
s_log.debug("Got term " + terms.get("model.id"));
|
||||||
|
}
|
||||||
|
current.add(terms.getDomainObject());
|
||||||
|
}
|
||||||
|
return current;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO move out of UI code
|
||||||
|
public static Collection getRelatedTerms(Collection src,
|
||||||
|
Domain domain) {
|
||||||
|
if (s_log.isDebugEnabled()) {
|
||||||
|
s_log.debug("Getting related terms to " + domain);
|
||||||
|
|
||||||
|
}
|
||||||
|
if (src.isEmpty()) {
|
||||||
|
// this is a hack, it would be better not to use a completion event listener as
|
||||||
|
// this is called even when the form is cancelled...
|
||||||
|
return new LinkedList();
|
||||||
|
}
|
||||||
|
DomainCollection terms = domain.getTerms();
|
||||||
|
// these next two lines build the query
|
||||||
|
terms.addEqualsFilter("model.parents.link.relationType", "related");
|
||||||
|
terms.addFilter("model.parents.id in :ids").set("ids", src);
|
||||||
|
|
||||||
|
Collection related = new LinkedList();
|
||||||
|
while (terms.next()) {
|
||||||
|
if (s_log.isDebugEnabled()) {
|
||||||
|
s_log.debug("Got term " + terms.getDomainObject());
|
||||||
|
}
|
||||||
|
related.add(terms.getDomainObject());
|
||||||
|
}
|
||||||
|
return related;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void clearTerms(Domain domain,
|
||||||
|
ACSObject object) {
|
||||||
|
if (s_log.isDebugEnabled()) {
|
||||||
|
s_log.debug("Removing terms from " + domain + " to " + object);
|
||||||
|
}
|
||||||
|
Iterator terms = getCurrentTerms(domain, object).iterator();
|
||||||
|
while (terms.hasNext()) {
|
||||||
|
Term term = (Term)terms.next();
|
||||||
|
if (s_log.isDebugEnabled()) {
|
||||||
|
s_log.debug("Removing term " + term + " from " + object);
|
||||||
|
}
|
||||||
|
term.removeObject(object);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// TODO move out of UI code
|
||||||
|
public static void assignTerms(Collection terms,
|
||||||
|
ACSObject object) {
|
||||||
|
if (s_log.isDebugEnabled()) {
|
||||||
|
s_log.debug("Assigning terms to " + object);
|
||||||
|
}
|
||||||
|
Iterator i = terms.iterator();
|
||||||
|
while (i.hasNext()) {
|
||||||
|
Term term = (Term)i.next();
|
||||||
|
if (s_log.isDebugEnabled()) {
|
||||||
|
s_log.debug("Assigning term " + term + " to " + object);
|
||||||
|
}
|
||||||
|
term.addObject(object);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Domain getDomain(PageState state) {
|
||||||
|
if (s_log.isDebugEnabled()) {
|
||||||
|
s_log.debug("Getting domain for " + state.getValue(m_root));
|
||||||
|
}
|
||||||
|
|
||||||
|
DataCollection domains = SessionManager.getSession()
|
||||||
|
.retrieve(Domain.BASE_DATA_OBJECT_TYPE);
|
||||||
|
domains.addEqualsFilter("model.id",
|
||||||
|
state.getValue(m_root));
|
||||||
|
|
||||||
|
if (domains.next()) {
|
||||||
|
Domain domain = (Domain)DomainObjectFactory
|
||||||
|
.newInstance(domains.getDataObject());
|
||||||
|
if (s_log.isDebugEnabled()) {
|
||||||
|
s_log.debug("Got domain " + domain);
|
||||||
|
}
|
||||||
|
domains.close();
|
||||||
|
return domain;
|
||||||
|
}
|
||||||
|
if (s_log.isDebugEnabled()) {
|
||||||
|
s_log.debug("No domain found");
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
/**
|
||||||
|
* Copyright (C) 2005 Runtime Collective Ltd. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.arsdigita.aplaws.ui;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.PageState;
|
||||||
|
import com.arsdigita.cms.CMS;
|
||||||
|
import com.arsdigita.cms.ContentBundle;
|
||||||
|
import com.arsdigita.cms.ContentItem;
|
||||||
|
import com.arsdigita.cms.ContentPage;
|
||||||
|
import com.arsdigita.kernel.ACSObject;
|
||||||
|
import com.arsdigita.london.navigation.Navigation;
|
||||||
|
import com.arsdigita.london.terms.ui.AbstractAssignedTerms;
|
||||||
|
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
public class AssignedIndexItemTerms extends AbstractAssignedTerms {
|
||||||
|
|
||||||
|
private static final Logger s_log = Logger.getLogger(AssignedIndexItemTerms.class);
|
||||||
|
|
||||||
|
protected ACSObject getObject(PageState state) {
|
||||||
|
|
||||||
|
ACSObject obj = Navigation.getConfig().getDefaultModel().getObject();
|
||||||
|
|
||||||
|
if (s_log.isDebugEnabled()) {
|
||||||
|
s_log.debug("Dealing with item " + obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2001-2004 Red Hat Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.arsdigita.aplaws.ui;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.PageState;
|
||||||
|
import com.arsdigita.cms.CMS;
|
||||||
|
import com.arsdigita.kernel.ACSObject;
|
||||||
|
import com.arsdigita.london.terms.ui.AbstractAssignedTerms;
|
||||||
|
|
||||||
|
public class AssignedItemTerms extends AbstractAssignedTerms {
|
||||||
|
|
||||||
|
protected ACSObject getObject(PageState state) {
|
||||||
|
return CMS.getContext().getContentItem().getParent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,57 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2001-2004 Red Hat Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.arsdigita.aplaws.ui;
|
||||||
|
|
||||||
|
import com.arsdigita.london.navigation.Navigation;
|
||||||
|
import com.arsdigita.london.navigation.NavigationModel;
|
||||||
|
|
||||||
|
import com.arsdigita.persistence.SessionManager;
|
||||||
|
import com.arsdigita.persistence.DataCollection;
|
||||||
|
|
||||||
|
import com.arsdigita.domain.DomainObjectFactory;
|
||||||
|
|
||||||
|
import com.arsdigita.categorization.Category;
|
||||||
|
import com.arsdigita.util.Assert;
|
||||||
|
import com.arsdigita.bebop.PageState;
|
||||||
|
|
||||||
|
import com.arsdigita.london.portal.Workspace;
|
||||||
|
import com.arsdigita.london.portal.ui.WorkspaceSelectionModel;
|
||||||
|
|
||||||
|
public class CategoryPortalSelectionModel extends WorkspaceSelectionModel {
|
||||||
|
|
||||||
|
protected Workspace getDefaultWorkspace(PageState state) {
|
||||||
|
NavigationModel model = Navigation.getConfig().getDefaultModel();
|
||||||
|
Category cat = model.getCategory();
|
||||||
|
Assert.exists(cat);
|
||||||
|
|
||||||
|
DataCollection workspaces
|
||||||
|
= SessionManager.getSession().retrieve(
|
||||||
|
Workspace.BASE_DATA_OBJECT_TYPE);
|
||||||
|
workspaces.addEqualsFilter("categories.id", cat.getID());
|
||||||
|
|
||||||
|
if (workspaces.next()) {
|
||||||
|
Workspace wk = (Workspace)DomainObjectFactory
|
||||||
|
.newInstance(workspaces.getDataObject());
|
||||||
|
workspaces.close();
|
||||||
|
return wk;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
package com.arsdigita.aplaws.ui;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.Page;
|
||||||
|
import com.arsdigita.bebop.PageState;
|
||||||
|
import com.arsdigita.bebop.SimpleComponent;
|
||||||
|
import com.arsdigita.bebop.parameters.BigDecimalParameter;
|
||||||
|
import com.arsdigita.bebop.parameters.IntegerParameter;
|
||||||
|
import com.arsdigita.bebop.parameters.StringParameter;
|
||||||
|
import com.arsdigita.categorization.Category;
|
||||||
|
import com.arsdigita.domain.DomainObjectFactory;
|
||||||
|
import com.arsdigita.persistence.OID;
|
||||||
|
import com.arsdigita.xml.Element;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate part of the category tree. Used by Assign Category authoring step.
|
||||||
|
*
|
||||||
|
* @author Alan Pevec
|
||||||
|
*/
|
||||||
|
public class CategorySubtree extends SimpleComponent {
|
||||||
|
|
||||||
|
StringParameter nodeIDparam = new StringParameter("nodeID");
|
||||||
|
|
||||||
|
private static Logger s_log = Logger.getLogger(CategorySubtree.class);
|
||||||
|
public void register(Page p) {
|
||||||
|
super.register(p);
|
||||||
|
p.addGlobalStateParam(nodeIDparam);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void generateXML(PageState state, Element p) {
|
||||||
|
|
||||||
|
String node = (String)state.getValue(nodeIDparam);
|
||||||
|
s_log.debug("selected node = " + node);
|
||||||
|
String[] pathElements = StringUtils.split(node, "-");
|
||||||
|
|
||||||
|
Category root = (Category) DomainObjectFactory.newInstance(new OID(
|
||||||
|
Category.BASE_DATA_OBJECT_TYPE, new BigDecimal(pathElements[pathElements.length - 1])));
|
||||||
|
s_log.debug("generating subtree for cat " + root.getID());
|
||||||
|
TermWidget.generateSubtree(p, root);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,66 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2001-2004 Red Hat Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.arsdigita.aplaws.ui;
|
||||||
|
|
||||||
|
import com.arsdigita.london.terms.Term;
|
||||||
|
import com.arsdigita.london.terms.ui.AbstractTermDetails;
|
||||||
|
import com.arsdigita.persistence.DataCollection;
|
||||||
|
import com.arsdigita.persistence.SessionManager;
|
||||||
|
import com.arsdigita.london.navigation.Navigation;
|
||||||
|
import com.arsdigita.categorization.Category;
|
||||||
|
import com.arsdigita.bebop.PageState;
|
||||||
|
import com.arsdigita.domain.DomainObjectFactory;
|
||||||
|
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
public class CategoryTermDetails extends AbstractTermDetails {
|
||||||
|
|
||||||
|
private static final Logger s_log = Logger.getLogger(CategoryTermDetails.class);
|
||||||
|
|
||||||
|
protected Term getTerm(PageState state) {
|
||||||
|
Category cat = Navigation.getConfig().getDefaultModel()
|
||||||
|
.getCategory();
|
||||||
|
|
||||||
|
if (cat == null) {
|
||||||
|
s_log.debug("No category found, skiping term");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
DataCollection terms = SessionManager.getSession()
|
||||||
|
.retrieve(Term.BASE_DATA_OBJECT_TYPE);
|
||||||
|
terms.addEqualsFilter(Term.MODEL + "." + Category.ID,
|
||||||
|
cat.getID());
|
||||||
|
|
||||||
|
if (terms.next()) {
|
||||||
|
Term term = (Term)DomainObjectFactory
|
||||||
|
.newInstance(terms.getDataObject());
|
||||||
|
terms.close();
|
||||||
|
if (s_log.isInfoEnabled()) {
|
||||||
|
s_log.info("Found term " + term + " for category " + cat);
|
||||||
|
}
|
||||||
|
return term;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (s_log.isDebugEnabled()) {
|
||||||
|
s_log.debug("No term found for category " + cat);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,75 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2001 ArsDigita Corporation. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the ArsDigita Public
|
||||||
|
* License (the "License"); you may not use this file except in
|
||||||
|
* compliance with the License. You may obtain a copy of
|
||||||
|
* the License at http://www.arsdigita.com/ADPL.txt
|
||||||
|
*
|
||||||
|
* Software distributed under the License is distributed on an "AS
|
||||||
|
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||||
|
* implied. See the License for the specific language governing
|
||||||
|
* rights and limitations under the License.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.arsdigita.aplaws.ui;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.AbstractSingleSelectionModel;
|
||||||
|
import com.arsdigita.london.portal.ui.PortalSelectionModel;
|
||||||
|
import com.arsdigita.london.portal.WorkspacePage;
|
||||||
|
import com.arsdigita.bebop.PageState;
|
||||||
|
import com.arsdigita.bebop.parameters.ParameterModel;
|
||||||
|
import com.arsdigita.domain.DomainObject;
|
||||||
|
|
||||||
|
public class HomepagePortalSelectionModel extends AbstractSingleSelectionModel
|
||||||
|
implements PortalSelectionModel {
|
||||||
|
|
||||||
|
private HomepageWorkspaceSelectionModel m_workspace;
|
||||||
|
private int m_column;
|
||||||
|
|
||||||
|
public HomepagePortalSelectionModel(HomepageWorkspaceSelectionModel workspace,
|
||||||
|
int column) {
|
||||||
|
m_workspace = workspace;
|
||||||
|
m_column = column;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onCustomize(PageState state) {
|
||||||
|
m_workspace.onCustomize(state, m_column);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onReset(PageState state) {
|
||||||
|
m_workspace.onReset(state, m_column);
|
||||||
|
}
|
||||||
|
|
||||||
|
public HomepageWorkspaceSelectionModel getWorkspaceModel() {
|
||||||
|
return m_workspace;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getSelectedKey(PageState state) {
|
||||||
|
return getSelectedPortal(state).getID();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSelectedKey(PageState state,
|
||||||
|
Object key) {
|
||||||
|
throw new UnsupportedOperationException("cannot set key");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSelectedObject(PageState state,
|
||||||
|
DomainObject key) {
|
||||||
|
throw new UnsupportedOperationException("cannot set object");
|
||||||
|
}
|
||||||
|
|
||||||
|
public ParameterModel getStateParameter() {
|
||||||
|
throw new UnsupportedOperationException("not state param");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public DomainObject getSelectedObject(PageState state) {
|
||||||
|
return getSelectedPortal(state);
|
||||||
|
}
|
||||||
|
|
||||||
|
public WorkspacePage getSelectedPortal(PageState state) {
|
||||||
|
return m_workspace.getPortal(state, m_column);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,155 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2001 ArsDigita Corporation. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the ArsDigita Public
|
||||||
|
* License (the "License"); you may not use this file except in
|
||||||
|
* compliance with the License. You may obtain a copy of
|
||||||
|
* the License at http://www.arsdigita.com/ADPL.txt
|
||||||
|
*
|
||||||
|
* Software distributed under the License is distributed on an "AS
|
||||||
|
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||||
|
* implied. See the License for the specific language governing
|
||||||
|
* rights and limitations under the License.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.arsdigita.aplaws.ui;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.SimpleContainer;
|
||||||
|
import com.arsdigita.bebop.ActionLink;
|
||||||
|
import com.arsdigita.bebop.Page;
|
||||||
|
import com.arsdigita.bebop.event.ActionEvent;
|
||||||
|
import com.arsdigita.bebop.event.ActionListener;
|
||||||
|
import com.arsdigita.london.portal.ui.PersistentPortal;
|
||||||
|
import com.arsdigita.london.portal.Workspace;
|
||||||
|
import com.arsdigita.bebop.PageState;
|
||||||
|
import com.arsdigita.xml.Element;
|
||||||
|
import com.arsdigita.london.portal.ui.PortalConstants;
|
||||||
|
import com.arsdigita.kernel.permissions.PermissionService;
|
||||||
|
import com.arsdigita.kernel.permissions.PermissionDescriptor;
|
||||||
|
import com.arsdigita.kernel.permissions.PrivilegeDescriptor;
|
||||||
|
import com.arsdigita.kernel.Party;
|
||||||
|
import com.arsdigita.kernel.Kernel;
|
||||||
|
|
||||||
|
|
||||||
|
public class HomepageWorkspace extends SimpleContainer {
|
||||||
|
|
||||||
|
private HomepagePortalSelectionModel m_model;
|
||||||
|
private ActionLink m_reset;
|
||||||
|
private ActionLink m_browse;
|
||||||
|
private ActionLink m_edit;
|
||||||
|
private PersistentPortal m_browser;
|
||||||
|
private PersistentPortal m_editor;
|
||||||
|
private boolean m_customizable;
|
||||||
|
private boolean m_readOnly;
|
||||||
|
private String m_name;
|
||||||
|
|
||||||
|
public HomepageWorkspace() {
|
||||||
|
super("portal:homepageWorkspace", PortalConstants.PORTAL_XML_NS);
|
||||||
|
m_customizable = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setModel(HomepagePortalSelectionModel model) {
|
||||||
|
m_model = model;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCustomizable(boolean customizable) {
|
||||||
|
m_customizable = customizable;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setReadOnly(boolean readOnly) {
|
||||||
|
m_readOnly = readOnly;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
m_name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addWidgets() {
|
||||||
|
m_edit = new ActionLink("customize");
|
||||||
|
m_browse = new ActionLink("browse");
|
||||||
|
m_reset = new ActionLink("reset");
|
||||||
|
m_reset.setConfirmation("Are you sure you wish to reset this column? " +
|
||||||
|
"This will permanently remove all portlets.");
|
||||||
|
|
||||||
|
m_browser = new PersistentPortal(m_model,
|
||||||
|
m_name,
|
||||||
|
PortalConstants.MODE_DISPLAY);
|
||||||
|
m_editor = new PersistentPortal(m_model,
|
||||||
|
m_name,
|
||||||
|
PortalConstants.MODE_EDITOR);
|
||||||
|
|
||||||
|
m_edit.addActionListener(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
PageState state = e.getPageState();
|
||||||
|
setDisplayMode(state, false);
|
||||||
|
|
||||||
|
m_model.onCustomize(state);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
m_browse.addActionListener(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
PageState state = e.getPageState();
|
||||||
|
setDisplayMode(state, true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
m_reset.addActionListener(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
PageState state = e.getPageState();
|
||||||
|
setDisplayMode(state, true);
|
||||||
|
|
||||||
|
m_model.onReset(state);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
add(m_edit);
|
||||||
|
add(m_browse);
|
||||||
|
add(m_reset);
|
||||||
|
add(m_editor);
|
||||||
|
add(m_browser);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDisplayMode(PageState state,
|
||||||
|
boolean browse) {
|
||||||
|
if (m_readOnly) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
m_browse.setVisible(state, !browse);
|
||||||
|
m_reset.setVisible(state, !browse);
|
||||||
|
m_edit.setVisible(state, browse);
|
||||||
|
m_browser.setVisible(state, browse);
|
||||||
|
m_editor.setVisible(state, !browse);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void register(Page page) {
|
||||||
|
super.register(page);
|
||||||
|
|
||||||
|
page.setVisibleDefault(m_browse, false);
|
||||||
|
page.setVisibleDefault(m_reset, false);
|
||||||
|
page.setVisibleDefault(m_edit, !m_readOnly);
|
||||||
|
page.setVisibleDefault(m_browser, true);
|
||||||
|
page.setVisibleDefault(m_editor, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void generateXML(PageState state,
|
||||||
|
Element parent) {
|
||||||
|
Party party = Kernel.getContext().getParty();
|
||||||
|
Workspace global = m_model.getWorkspaceModel().getGlobalWorkspace(state);
|
||||||
|
PermissionDescriptor admin =
|
||||||
|
new PermissionDescriptor(PrivilegeDescriptor.ADMIN,
|
||||||
|
global,
|
||||||
|
party);
|
||||||
|
boolean hasAdmin = PermissionService.checkPermission(admin);
|
||||||
|
boolean userWorkspaces = Workspace.getConfig().getCreateUserWorkspaces();
|
||||||
|
|
||||||
|
if (party == null || m_readOnly ||
|
||||||
|
(!hasAdmin && !m_customizable) || (!hasAdmin && !userWorkspaces)) {
|
||||||
|
m_reset.setVisible(state, false);
|
||||||
|
m_browse.setVisible(state, false);
|
||||||
|
m_edit.setVisible(state, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
super.generateXML(state, parent);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,287 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2001 ArsDigita Corporation. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the ArsDigita Public
|
||||||
|
* License (the "License"); you may not use this file except in
|
||||||
|
* compliance with the License. You may obtain a copy of
|
||||||
|
* the License at http://www.arsdigita.com/ADPL.txt
|
||||||
|
*
|
||||||
|
* Software distributed under the License is distributed on an "AS
|
||||||
|
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||||
|
* implied. See the License for the specific language governing
|
||||||
|
* rights and limitations under the License.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.arsdigita.aplaws.ui;
|
||||||
|
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.RequestLocal;
|
||||||
|
import com.arsdigita.bebop.PageState;
|
||||||
|
|
||||||
|
|
||||||
|
import com.arsdigita.kernel.Party;
|
||||||
|
import com.arsdigita.kernel.User;
|
||||||
|
import com.arsdigita.kernel.Kernel;
|
||||||
|
import com.arsdigita.kernel.permissions.PermissionService;
|
||||||
|
import com.arsdigita.kernel.permissions.PermissionDescriptor;
|
||||||
|
import com.arsdigita.kernel.permissions.PrivilegeDescriptor;
|
||||||
|
|
||||||
|
import com.arsdigita.london.portal.Workspace;
|
||||||
|
import com.arsdigita.london.portal.WorkspacePage;
|
||||||
|
import com.arsdigita.london.portal.WorkspacePageCollection;
|
||||||
|
|
||||||
|
import com.arsdigita.london.subsite.Subsite;
|
||||||
|
|
||||||
|
import com.arsdigita.util.Assert;
|
||||||
|
import com.arsdigita.util.UncheckedWrapperException;
|
||||||
|
|
||||||
|
import com.arsdigita.domain.DataObjectNotFoundException;
|
||||||
|
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
|
||||||
|
public class HomepageWorkspaceSelectionModel {
|
||||||
|
private RequestLocal m_loaded = new RequestLocal();
|
||||||
|
private RequestLocal m_global = new RequestLocal();
|
||||||
|
private RequestLocal m_personal = new RequestLocal();
|
||||||
|
private RequestLocal m_left = new RequestLocal();
|
||||||
|
private RequestLocal m_middle = new RequestLocal();
|
||||||
|
private RequestLocal m_right = new RequestLocal();
|
||||||
|
private RequestLocal m_custom = new RequestLocal();
|
||||||
|
|
||||||
|
private static Logger s_log = Logger.getLogger
|
||||||
|
(HomepageWorkspaceSelectionModel.class.getName());
|
||||||
|
|
||||||
|
public WorkspacePage getPortal(PageState state,
|
||||||
|
int column) {
|
||||||
|
if (!Boolean.TRUE.equals(m_loaded.get(state))) {
|
||||||
|
loadWorkspacePages(state);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (column == 0) { // Always global portal
|
||||||
|
return (WorkspacePage)m_left.get(state);
|
||||||
|
} else if (column == 1) { // Always global portal
|
||||||
|
return (WorkspacePage)m_middle.get(state);
|
||||||
|
} else if (column == 2) { // Personal portal, fallback on global
|
||||||
|
Party party = (Party)Kernel.getContext().getParty();
|
||||||
|
WorkspacePage right = (WorkspacePage)m_right.get(state);
|
||||||
|
PermissionDescriptor admin =
|
||||||
|
new PermissionDescriptor(PrivilegeDescriptor.ADMIN,
|
||||||
|
right,
|
||||||
|
party);
|
||||||
|
// Always ensure admin gets global portal
|
||||||
|
// don't use custom portals if asked not to
|
||||||
|
if (m_custom.get(state) == null ||
|
||||||
|
PermissionService.checkPermission(admin) ||
|
||||||
|
!Workspace.getConfig().getCreateUserWorkspaces()) {
|
||||||
|
s_log.debug("Returning global portal");
|
||||||
|
return (WorkspacePage)m_right.get(state);
|
||||||
|
} else {
|
||||||
|
s_log.debug("Returning personal portal");
|
||||||
|
return (WorkspacePage)m_custom.get(state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new UncheckedWrapperException("column out of range (0..2)");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onCustomize(PageState state,
|
||||||
|
int column) {
|
||||||
|
if (!Boolean.TRUE.equals(m_loaded.get(state))) {
|
||||||
|
loadWorkspacePages(state);
|
||||||
|
}
|
||||||
|
|
||||||
|
Party party = (Party)Kernel.getContext().getParty();
|
||||||
|
|
||||||
|
Assert.exists(party, Party.class);
|
||||||
|
|
||||||
|
// When customizing right column, may need to clone
|
||||||
|
// for a personal portal
|
||||||
|
// don't use custom portals if asked not to
|
||||||
|
if (column == 2 &&
|
||||||
|
Workspace.getConfig().getCreateUserWorkspaces()) {
|
||||||
|
Workspace global = getTopWorkspace();
|
||||||
|
|
||||||
|
WorkspacePage right = (WorkspacePage)m_right.get(state);
|
||||||
|
PermissionDescriptor admin =
|
||||||
|
new PermissionDescriptor(PrivilegeDescriptor.ADMIN,
|
||||||
|
right,
|
||||||
|
party);
|
||||||
|
if (PermissionService.checkPermission(admin)) {
|
||||||
|
s_log.debug("Party has admin on global portal");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_custom.get(state) != null) {
|
||||||
|
s_log.debug("Party has custom portal already");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
s_log.debug("Looking for custom column 2");
|
||||||
|
|
||||||
|
Workspace custom = null;
|
||||||
|
try {
|
||||||
|
custom = global.retrieveSubworkspaceForParty(party);
|
||||||
|
s_log.debug("Found exsting personal workspce");
|
||||||
|
} catch (DataObjectNotFoundException ex) {
|
||||||
|
s_log.debug("Created new personal workspace");
|
||||||
|
custom = Workspace.createWorkspace(
|
||||||
|
"personal-" + party.getID(),
|
||||||
|
"Personal Workspace for " + party.getDisplayName(),
|
||||||
|
global,
|
||||||
|
(User)party
|
||||||
|
);
|
||||||
|
}
|
||||||
|
s_log.debug("Looking for portal");
|
||||||
|
m_personal.set(state, custom);
|
||||||
|
WorkspacePageCollection portals = custom.getPages();
|
||||||
|
portals.addOrder(WorkspacePage.SORT_KEY);
|
||||||
|
WorkspacePage portal;
|
||||||
|
if (portals.next()) {
|
||||||
|
s_log.debug("Found portal");
|
||||||
|
portal = portals.getPage();
|
||||||
|
portals.close();
|
||||||
|
} else {
|
||||||
|
s_log.debug("Create portal");
|
||||||
|
portal = custom.addPage("Custom", "Custom page");
|
||||||
|
}
|
||||||
|
m_custom.set(state, portal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void onReset(PageState state,
|
||||||
|
int column) {
|
||||||
|
if (!Boolean.TRUE.equals(m_loaded.get(state))) {
|
||||||
|
loadWorkspacePages(state);
|
||||||
|
}
|
||||||
|
|
||||||
|
Party party = Kernel.getContext().getParty();
|
||||||
|
|
||||||
|
Assert.exists(party, Party.class);
|
||||||
|
|
||||||
|
WorkspacePage clear = null;
|
||||||
|
|
||||||
|
// don't use custom portals if asked not to
|
||||||
|
if (column == 2 &&
|
||||||
|
Workspace.getConfig().getCreateUserWorkspaces()) {
|
||||||
|
// If we find a custom workspace, then delete it,
|
||||||
|
// otherwise just clear the portlets.
|
||||||
|
Workspace global = getTopWorkspace();
|
||||||
|
Workspace custom = null;
|
||||||
|
try {
|
||||||
|
custom = global.retrieveSubworkspaceForParty(party);
|
||||||
|
Assert.truth(custom.getParty() != null &&
|
||||||
|
custom.getParty().equals(party),
|
||||||
|
"party is not null and not admin");
|
||||||
|
s_log.debug("Found exsting personal workspce");
|
||||||
|
custom.delete();
|
||||||
|
m_custom.set(state, null);
|
||||||
|
} catch (DataObjectNotFoundException ex) {
|
||||||
|
clear = (WorkspacePage)m_right.get(state);
|
||||||
|
}
|
||||||
|
} else if (column == 1) {
|
||||||
|
clear = (WorkspacePage)m_middle.get(state);
|
||||||
|
} else if (column == 0) {
|
||||||
|
clear = (WorkspacePage)m_left.get(state);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (clear != null) {
|
||||||
|
clear.clearPortlets();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Workspace getGlobalWorkspace(PageState state) {
|
||||||
|
if (!Boolean.TRUE.equals(m_loaded.get(state))) {
|
||||||
|
loadWorkspacePages(state);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (Workspace)m_global.get(state);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Workspace getPersonalWorkspace(PageState state) {
|
||||||
|
if (!Boolean.TRUE.equals(m_loaded.get(state))) {
|
||||||
|
loadWorkspacePages(state);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (Workspace)m_personal.get(state);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void loadWorkspacePages(PageState state) {
|
||||||
|
Workspace global = getTopWorkspace();
|
||||||
|
m_global.set(state, global);
|
||||||
|
|
||||||
|
WorkspacePage left = null;
|
||||||
|
WorkspacePage middle = null;
|
||||||
|
WorkspacePage right = null;
|
||||||
|
|
||||||
|
WorkspacePageCollection portals = global.getPages();
|
||||||
|
portals.addOrder(WorkspacePage.SORT_KEY);
|
||||||
|
while (portals.next()) {
|
||||||
|
WorkspacePage portal = portals.getPage();
|
||||||
|
|
||||||
|
if (portal.getSortKey() == 0) {
|
||||||
|
left = portal;
|
||||||
|
} else if (portal.getSortKey() == 1) {
|
||||||
|
middle = portal;
|
||||||
|
} else if (portal.getSortKey() == 2) {
|
||||||
|
right = portal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (left == null) {
|
||||||
|
left = global.addPage("Left", "Left hand page");
|
||||||
|
}
|
||||||
|
if (middle == null) {
|
||||||
|
middle = global.addPage("Middle", "Middle page");
|
||||||
|
}
|
||||||
|
if (right == null) {
|
||||||
|
right = global.addPage("Right", "Right hand page");
|
||||||
|
}
|
||||||
|
m_left.set(state, left);
|
||||||
|
m_middle.set(state, middle);
|
||||||
|
m_right.set(state, right);
|
||||||
|
|
||||||
|
|
||||||
|
Party party = (Party)Kernel.getContext().getParty();
|
||||||
|
m_custom.set(state, null);
|
||||||
|
if (party != null) {
|
||||||
|
Workspace custom = null;
|
||||||
|
try {
|
||||||
|
custom = global.retrieveSubworkspaceForParty(party);
|
||||||
|
} catch (DataObjectNotFoundException ex) {
|
||||||
|
// nada
|
||||||
|
}
|
||||||
|
if (custom != null) {
|
||||||
|
portals = custom.getPages();
|
||||||
|
portals.addOrder(WorkspacePage.SORT_KEY);
|
||||||
|
if (portals.next()) {
|
||||||
|
WorkspacePage portal = portals.getPage();
|
||||||
|
m_custom.set(state, portal);
|
||||||
|
}
|
||||||
|
portals.close();
|
||||||
|
}
|
||||||
|
s_log.debug("Is there a custom portal ?" + custom +
|
||||||
|
" - " + m_custom.get(state));
|
||||||
|
m_personal.set(state, custom);
|
||||||
|
}
|
||||||
|
|
||||||
|
m_loaded.set(state, Boolean.TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Workspace getTopWorkspace() {
|
||||||
|
if (Subsite.getContext().hasSite()) {
|
||||||
|
if (s_log.isDebugEnabled()) {
|
||||||
|
s_log.debug("Return a subsite front page");
|
||||||
|
}
|
||||||
|
return (Workspace)Subsite.getContext().getSite().getFrontPage();
|
||||||
|
} else {
|
||||||
|
if (s_log.isDebugEnabled()) {
|
||||||
|
s_log.debug("Return the main front page");
|
||||||
|
}
|
||||||
|
return (Workspace)Kernel.getContext().getResource();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,76 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2001-2004 Red Hat Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.arsdigita.aplaws.ui;
|
||||||
|
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.PageState;
|
||||||
|
import com.arsdigita.bebop.parameters.BigDecimalParameter;
|
||||||
|
import com.arsdigita.bebop.parameters.StringParameter;
|
||||||
|
import com.arsdigita.categorization.ui.ACSObjectCategoryForm;
|
||||||
|
import com.arsdigita.cms.CMS;
|
||||||
|
import com.arsdigita.cms.ContentItem;
|
||||||
|
import com.arsdigita.cms.ui.authoring.*;
|
||||||
|
import com.arsdigita.kernel.ACSObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p> cms specific Concrete implementation of
|
||||||
|
* <code>com.arsdigita.aplaws.ui.ACSObjectCategoryPicker</code>. </p>
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* <p>Activated by pointing the parameter
|
||||||
|
* <code>com.arsdigita.cms.category_authoring_add_form<</code> to it.</p>
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
public class ItemCategoryPicker extends ACSObjectCategoryPicker {
|
||||||
|
private static final Logger s_log = Logger.getLogger(ItemCategoryPicker.class);
|
||||||
|
|
||||||
|
|
||||||
|
public ItemCategoryPicker(BigDecimalParameter root,
|
||||||
|
StringParameter mode) {
|
||||||
|
super(root, mode);
|
||||||
|
s_log.debug("instantiating ItemCategoryPicker");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @see com.arsdigita.aplaws.ui.ACSObjectCategoryPicker#getForm(
|
||||||
|
com.arsdigita.bebop.parameters.BigDecimalParameter,
|
||||||
|
com.arsdigita.bebop.parameters.StringParameter)
|
||||||
|
*/
|
||||||
|
protected ACSObjectCategoryForm getForm(BigDecimalParameter root, StringParameter mode) {
|
||||||
|
s_log.debug("getForm");
|
||||||
|
return new ItemCategoryForm(root, mode, new TermWidget(mode, this));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @see com.arsdigita.aplaws.ui.ACSObjectCategoryPicker#getObject()
|
||||||
|
*/
|
||||||
|
protected ACSObject getObject(PageState state) {
|
||||||
|
ContentItem item = CMS.getContext().getContentItem();
|
||||||
|
return item.getParent();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,69 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2001-2004 Red Hat Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.arsdigita.aplaws.ui;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.PageState;
|
||||||
|
import com.arsdigita.bebop.Label;
|
||||||
|
import com.arsdigita.dispatcher.DispatcherHelper;
|
||||||
|
import com.arsdigita.xml.Document;
|
||||||
|
import com.arsdigita.xml.Element;
|
||||||
|
import com.arsdigita.web.Web;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* Special implementation of <code>com.arsdigita.ui.SimplePage</code> as
|
||||||
|
* the base page to serve bebop pages.</p>
|
||||||
|
*
|
||||||
|
* <p>Activated by pointing the parameter <code>waf.bebop.base_page</code>
|
||||||
|
* to it.</p>
|
||||||
|
*/
|
||||||
|
public class SimplePage extends com.arsdigita.ui.SimplePage {
|
||||||
|
|
||||||
|
public SimplePage(String application,
|
||||||
|
Label title,
|
||||||
|
String id) {
|
||||||
|
super(application, title, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Element generateXMLHelper(PageState state,
|
||||||
|
Document parent) {
|
||||||
|
Element page = super.generateXMLHelper(state, parent);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TODO: What specific funcionality is added here and what is
|
||||||
|
* its purpose and why is the bebop standard implementation
|
||||||
|
* insufficient.
|
||||||
|
*
|
||||||
|
* Two xml attributes are added in addition to the bebop standard
|
||||||
|
* implementation.
|
||||||
|
*/
|
||||||
|
if (Web.getContext().getRequestURL() != null) {
|
||||||
|
page.addAttribute("url", Web.getContext().getRequestURL().toString());
|
||||||
|
|
||||||
|
page.addAttribute("textOnly", "/text".equals(
|
||||||
|
DispatcherHelper
|
||||||
|
.getDispatcherPrefix(state.getRequest()))
|
||||||
|
? "1" : "0"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return page;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,57 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2001-2004 Red Hat Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.arsdigita.aplaws.ui;
|
||||||
|
|
||||||
|
import com.arsdigita.london.terms.Domain;
|
||||||
|
import com.arsdigita.london.terms.ui.AbstractTermItemSummary;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.PageState;
|
||||||
|
import com.arsdigita.bebop.Page;
|
||||||
|
import com.arsdigita.bebop.parameters.StringParameter;
|
||||||
|
|
||||||
|
public class TermItemSummary extends AbstractTermItemSummary {
|
||||||
|
|
||||||
|
private StringParameter m_key;
|
||||||
|
private String m_defaultKey = "LGSL";
|
||||||
|
|
||||||
|
public TermItemSummary() {
|
||||||
|
m_key = new StringParameter("key");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void register(Page p) {
|
||||||
|
super.register(p);
|
||||||
|
|
||||||
|
p.addGlobalStateParam(m_key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDefaultDomain(String key) {
|
||||||
|
m_defaultKey = key;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Domain getDomain(PageState state) {
|
||||||
|
String key = (String)state.getValue(m_key);
|
||||||
|
|
||||||
|
if (key == null) {
|
||||||
|
key = m_defaultKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Domain.retrieve(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,334 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2004 Red Hat Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.arsdigita.aplaws.ui;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import com.arsdigita.aplaws.Aplaws;
|
||||||
|
import com.arsdigita.bebop.PageState;
|
||||||
|
import com.arsdigita.bebop.form.Widget;
|
||||||
|
import com.arsdigita.bebop.parameters.ArrayParameter;
|
||||||
|
import com.arsdigita.bebop.parameters.BigDecimalParameter;
|
||||||
|
import com.arsdigita.bebop.parameters.StringParameter;
|
||||||
|
import com.arsdigita.categorization.Category;
|
||||||
|
import com.arsdigita.cms.CMS;
|
||||||
|
import com.arsdigita.cms.ContentItem;
|
||||||
|
import com.arsdigita.cms.ContentSection;
|
||||||
|
import com.arsdigita.domain.DomainCollection;
|
||||||
|
import com.arsdigita.domain.DomainObjectFactory;
|
||||||
|
import com.arsdigita.london.terms.Domain;
|
||||||
|
import com.arsdigita.london.terms.Term;
|
||||||
|
import com.arsdigita.london.terms.indexing.Indexer;
|
||||||
|
import com.arsdigita.london.terms.indexing.RankedTerm;
|
||||||
|
import com.arsdigita.persistence.DataCollection;
|
||||||
|
import com.arsdigita.persistence.SessionManager;
|
||||||
|
import com.arsdigita.xml.Element;
|
||||||
|
import com.arsdigita.xml.XML;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A Widget for selecting Terms. Based heavily on CategoryWidget.
|
||||||
|
*
|
||||||
|
* @author mbooth@redhat.com
|
||||||
|
*
|
||||||
|
* Chris Gilbert - updated to identify each node uniquely (correct behaviour
|
||||||
|
* for polyhierarchical trees) - also, allow ajax update on all branches or
|
||||||
|
* just top level branch
|
||||||
|
*
|
||||||
|
* nb - widget applies to allocation of categories to any ACSObject hence
|
||||||
|
* xml prefix should be more generic eg bebop rather than cms. cms retained
|
||||||
|
* for compatibility with existing stylesheets
|
||||||
|
*/
|
||||||
|
public class TermWidget extends Widget {
|
||||||
|
private StringParameter m_mode;
|
||||||
|
private ACSObjectCategoryPicker m_picker;
|
||||||
|
|
||||||
|
public TermWidget(StringParameter mode, ACSObjectCategoryPicker picker) {
|
||||||
|
super(new ArrayParameter(new BigDecimalParameter("category")));
|
||||||
|
|
||||||
|
m_mode = mode;
|
||||||
|
m_picker = picker;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
protected String getType() {
|
||||||
|
return "category";
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isCompound() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void generateWidget(PageState state,
|
||||||
|
Element parent) {
|
||||||
|
Domain domain = m_picker.getDomain(state);
|
||||||
|
|
||||||
|
Element widget = parent.newChildElement("cms:categoryWidget",
|
||||||
|
CMS.CMS_XML_NS);
|
||||||
|
exportAttributes(widget);
|
||||||
|
|
||||||
|
widget.addAttribute("mode", (String)state.getValue(m_mode));
|
||||||
|
widget.addAttribute("name", getName());
|
||||||
|
|
||||||
|
Set ids = new HashSet();
|
||||||
|
|
||||||
|
BigDecimal[] values = (BigDecimal[])getValue(state);
|
||||||
|
if (values != null) {
|
||||||
|
for (int i = 0 ; i < values.length ; i++) {
|
||||||
|
ids.add(values[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// only root terms at first, the rest is loaded on-demand via AJAX
|
||||||
|
DomainCollection terms = domain.getRootTerms();
|
||||||
|
terms.addPath("model.parents.link.sortKey");
|
||||||
|
terms.addPath("model.parents.id");
|
||||||
|
terms.addPath("domain.key");
|
||||||
|
|
||||||
|
// Pull out everything related to the category, otherwise
|
||||||
|
// another query per row is executed when doing term.getModel();
|
||||||
|
terms.addPath("model.objectType");
|
||||||
|
terms.addPath("model.displayName");
|
||||||
|
terms.addPath("model.defaultDomainClass");
|
||||||
|
terms.addPath("model.name");
|
||||||
|
terms.addPath("model.description");
|
||||||
|
terms.addPath("model.url");
|
||||||
|
terms.addPath("model.isEnabled");
|
||||||
|
terms.addPath("model.isAbstract");
|
||||||
|
terms.addPath("model.defaultAncestors");
|
||||||
|
|
||||||
|
List roots = new LinkedList();
|
||||||
|
while (terms.next()) {
|
||||||
|
Term term = (Term) terms.getDomainObject();
|
||||||
|
roots.add(new TermSortKeyPair
|
||||||
|
(term,(BigDecimal)terms.get("model.parents.link.sortKey")));
|
||||||
|
}
|
||||||
|
|
||||||
|
Element el = generateCategory(widget, domain.getModel(), ids, null);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used by kea based keyphrase extraction facility.
|
||||||
|
* (Added r1885)
|
||||||
|
*
|
||||||
|
* @Author: terry_permeance
|
||||||
|
*/
|
||||||
|
Indexer indexer = Indexer.retrieve(domain);
|
||||||
|
if (indexer != null) {
|
||||||
|
ContentItem item = CMS.getContext().getContentItem();
|
||||||
|
List<RankedTerm> autoTerms = indexer.index(item, 16);
|
||||||
|
Element autoCategories = widget.newChildElement("cms:autoCategories", CMS.CMS_XML_NS);
|
||||||
|
for (Iterator<RankedTerm> i = autoTerms.iterator(); i.hasNext(); ) {
|
||||||
|
RankedTerm nextRankedTerm = i.next();
|
||||||
|
Category cat = nextRankedTerm.getTerm().getModel();
|
||||||
|
if (!ids.contains(cat.getID())) {
|
||||||
|
String fullname = cat.getQualifiedName(" > ", false);
|
||||||
|
if (fullname != null) {
|
||||||
|
Element catEl = autoCategories.newChildElement("cms:category", CMS.CMS_XML_NS);
|
||||||
|
catEl.addAttribute("id", XML.format(cat.getID()));
|
||||||
|
catEl.addAttribute("name", cat.getName());
|
||||||
|
catEl.addAttribute("description", cat.getDescription());
|
||||||
|
catEl.addAttribute("isAbstract", cat.isAbstract() ? "1" : "0");
|
||||||
|
catEl.addAttribute("isEnabled", cat.isEnabled() ? "1" : "0");
|
||||||
|
catEl.addAttribute("sortKey", nextRankedTerm.getRanking().toString());
|
||||||
|
catEl.addAttribute("fullname", fullname);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Aplaws.getAplawsConfig().ajaxExpandAllBranches()) {
|
||||||
|
// add attribute to the parent node, so that in stylesheet
|
||||||
|
// we can look for any ancestor with this attribute (can't
|
||||||
|
// add attribute to categoryWidget element as that is not
|
||||||
|
// visible when subbranches are transformed)
|
||||||
|
el.addAttribute("expand", "all" );
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Iterator i=roots.iterator(); i.hasNext(); ) {
|
||||||
|
TermSortKeyPair pair = (TermSortKeyPair) i.next();
|
||||||
|
Term term = pair.getTerm();
|
||||||
|
BigDecimal sortKey = pair.getSortKey();
|
||||||
|
|
||||||
|
generateRootTerm(el, term, ids, sortKey);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Element generateCategory(Element parent,
|
||||||
|
Category cat,
|
||||||
|
Set selected,
|
||||||
|
BigDecimal sortKey) {
|
||||||
|
Element el = parent.newChildElement("cms:category", CMS.CMS_XML_NS);
|
||||||
|
|
||||||
|
el.addAttribute("id", XML.format(cat.getID()));
|
||||||
|
el.addAttribute("name", cat.getName());
|
||||||
|
el.addAttribute("description", cat.getDescription());
|
||||||
|
el.addAttribute("isSelected", selected.contains(cat.getID()) ? "1" : "0");
|
||||||
|
el.addAttribute("isAbstract", cat.isAbstract() ? "1" : "0");
|
||||||
|
el.addAttribute("isEnabled", cat.isEnabled() ? "1" : "0");
|
||||||
|
if (sortKey != null) {
|
||||||
|
el.addAttribute("sortKey", sortKey.toString());
|
||||||
|
}
|
||||||
|
// sort order attribute added to every node so that we can
|
||||||
|
// correctly transform xml fragments returned by ajax
|
||||||
|
el.addAttribute("order", ContentSection.getConfig().getCategoryTreeOrder());
|
||||||
|
|
||||||
|
StringBuffer path = new StringBuffer(parent.getAttribute("fullname"));
|
||||||
|
if (path.length() > 0) path.append(" > ");
|
||||||
|
path.append(cat.getName());
|
||||||
|
el.addAttribute("fullname", path.toString());
|
||||||
|
|
||||||
|
// need to uniquely identify each node in polyhierarchical trees
|
||||||
|
// so that expand/contract is applied to the correct node by
|
||||||
|
// javascript getElementByID function
|
||||||
|
StringBuffer nodeID = new StringBuffer(parent.getAttribute("node-id"));
|
||||||
|
if (nodeID.length() > 0) nodeID.append("-");
|
||||||
|
nodeID.append(cat.getID());
|
||||||
|
el.addAttribute("node-id", nodeID.toString());
|
||||||
|
|
||||||
|
return el;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Element generateTerm(Element parent,
|
||||||
|
Term term,
|
||||||
|
Set selected,
|
||||||
|
BigDecimal sortKey) {
|
||||||
|
Category cat = term.getModel();
|
||||||
|
Element el = generateCategory(parent, cat, selected, sortKey);
|
||||||
|
|
||||||
|
el.addAttribute("pid", term.getUniqueID().toString());
|
||||||
|
el.addAttribute("domain", term.getDomain().getKey());
|
||||||
|
return el;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void generateRootTerm(Element parent,
|
||||||
|
Term term,
|
||||||
|
Set selected,
|
||||||
|
BigDecimal sortKey) {
|
||||||
|
Element el = generateTerm(parent, term, selected, sortKey);
|
||||||
|
el.addAttribute("root","1");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void generateSubtree(Element parent, Category root) {
|
||||||
|
DataCollection terms = SessionManager.getSession().retrieve(
|
||||||
|
Term.BASE_DATA_OBJECT_TYPE);
|
||||||
|
terms.addEqualsFilter("model.roTransParents.id", root.getID());
|
||||||
|
terms.addEqualsFilter("model.parents.link.relationType", "child");
|
||||||
|
|
||||||
|
Map children = new HashMap();
|
||||||
|
while (terms.next()) {
|
||||||
|
Term term = (Term) DomainObjectFactory.newInstance(terms
|
||||||
|
.getDataObject());
|
||||||
|
BigDecimal parentID = (BigDecimal) terms.get("model.parents.id");
|
||||||
|
|
||||||
|
List childList = (List) children.get(parentID);
|
||||||
|
if (childList == null) {
|
||||||
|
childList = new LinkedList();
|
||||||
|
children.put(parentID, childList);
|
||||||
|
}
|
||||||
|
|
||||||
|
childList.add(new TermSortKeyPair(term, (BigDecimal) terms
|
||||||
|
.get("model.parents.link.sortKey")));
|
||||||
|
}
|
||||||
|
|
||||||
|
// XXX for isSelected
|
||||||
|
Set ids = new HashSet();
|
||||||
|
|
||||||
|
Element el = generateCategory(parent, root, ids, null);
|
||||||
|
el.addAttribute("fullname", root.getName());
|
||||||
|
el.addAttribute("node-id", root.getID().toString());
|
||||||
|
el.addAttribute("order", ContentSection.getConfig().getCategoryTreeOrder());
|
||||||
|
if (Aplaws.getAplawsConfig().ajaxExpandAllBranches()) {
|
||||||
|
// recognisable attribute has to be in the XML for each snippet that is transformed,
|
||||||
|
// hence add it to the parent
|
||||||
|
el.addAttribute("expand", "all" );
|
||||||
|
}
|
||||||
|
|
||||||
|
List roots = (List) children.get(root.getID());
|
||||||
|
if (null != roots) {
|
||||||
|
Iterator i = roots.iterator();
|
||||||
|
while (i.hasNext()) {
|
||||||
|
TermSortKeyPair pair = (TermSortKeyPair) i.next();
|
||||||
|
Term term = pair.getTerm();
|
||||||
|
BigDecimal sortKey = pair.getSortKey();
|
||||||
|
|
||||||
|
generateTermWithChildren(el, term, ids, sortKey, children);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void generateTermWithChildren(Element parent,
|
||||||
|
Term term,
|
||||||
|
Set selected,
|
||||||
|
BigDecimal sortKey,
|
||||||
|
Map children) {
|
||||||
|
Category cat = term.getModel();
|
||||||
|
Element el = generateCategory(parent, cat, selected, sortKey);
|
||||||
|
|
||||||
|
el.addAttribute("pid", term.getUniqueID().toString());
|
||||||
|
el.addAttribute("domain", term.getDomain().getKey());
|
||||||
|
|
||||||
|
List c = (List) children.get(cat.getID());
|
||||||
|
if (c != null) {
|
||||||
|
Iterator i = c.iterator();
|
||||||
|
while (i.hasNext()) {
|
||||||
|
TermSortKeyPair pair = (TermSortKeyPair) i.next();
|
||||||
|
Term child = pair.getTerm();
|
||||||
|
BigDecimal childSortKey = pair.getSortKey();
|
||||||
|
|
||||||
|
// either generate next level down, or get all levels below current
|
||||||
|
|
||||||
|
if (Aplaws.getAplawsConfig().ajaxExpandAllBranches()) {
|
||||||
|
generateTerm(el, child, selected, childSortKey);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
generateTermWithChildren(el, child, selected, childSortKey,
|
||||||
|
children);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class TermSortKeyPair {
|
||||||
|
private Term m_term;
|
||||||
|
private BigDecimal m_sortKey;
|
||||||
|
|
||||||
|
public TermSortKeyPair(Term term, BigDecimal sortKey) {
|
||||||
|
m_term = term;
|
||||||
|
m_sortKey = sortKey;
|
||||||
|
}
|
||||||
|
public Term getTerm() {
|
||||||
|
return m_term;
|
||||||
|
}
|
||||||
|
public BigDecimal getSortKey() {
|
||||||
|
return m_sortKey;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,566 @@
|
||||||
|
<!DOCTYPE web-app
|
||||||
|
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
|
||||||
|
"http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
|
||||||
|
|
||||||
|
<web-app>
|
||||||
|
|
||||||
|
<display-name>CCM AAP</display-name>
|
||||||
|
<description>Content and Collaboration Management</description>
|
||||||
|
|
||||||
|
<!-- path and filename of the log4j user accessible config file
|
||||||
|
WEB-INF/conf/log4j.properties is the built-in default value -->
|
||||||
|
<context-param>
|
||||||
|
<param-name>log4j-conf-file</param-name>
|
||||||
|
<param-value>WEB-INF/conf/log4j.properties</param-value>
|
||||||
|
</context-param>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Require secure connection by redirect to host-port part
|
||||||
|
of parameter waf.web.secure_server
|
||||||
|
NOT USED with AAP
|
||||||
|
<filter>
|
||||||
|
<filter-name>secured</filter-name>
|
||||||
|
<filter-class>com.arsdigita.web.SecureFilter</filter-class>
|
||||||
|
</filter>
|
||||||
|
-->
|
||||||
|
<!-- Initialize Profiler timers
|
||||||
|
NOT USED with AAP standard / production
|
||||||
|
<filter>
|
||||||
|
<filter-name>profiler</filter-name>
|
||||||
|
<filter-class>com.arsdigita.profiler.ProfilerFilter</filter-class>
|
||||||
|
</filter>
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
<filter>
|
||||||
|
<filter-name>shortcuts</filter-name>
|
||||||
|
<filter-class>com.arsdigita.london.shortcuts.ShortcutFilter</filter-class>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<filter>
|
||||||
|
<filter-name>subsite</filter-name>
|
||||||
|
<filter-class>com.arsdigita.london.subsite.SubsiteFilter</filter-class>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- NOT USED HERE
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>secured</filter-name>
|
||||||
|
<url-pattern>/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>profiler</filter-name>
|
||||||
|
<url-pattern>/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>subsite</filter-name>
|
||||||
|
<url-pattern>/ccm/*</url-pattern>
|
||||||
|
<!-- please check: with or w/o ccm?
|
||||||
|
<url-pattern>/*</url-pattern>
|
||||||
|
-->
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>shortcuts</filter-name>
|
||||||
|
<url-pattern>/*</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Context Listener
|
||||||
|
required and used to initialize the runtime environment before any other
|
||||||
|
task is performed or any servlet initialized.
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
<listener>
|
||||||
|
<listener-class>com.arsdigita.web.CCMApplicationContextListener</listener-class>
|
||||||
|
</listener>
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
BASE SERVLET DECLARATIONS SECTION
|
||||||
|
basically requirred by ccm-core
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>reg</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ContextRegistrationServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>uri</param-name>
|
||||||
|
<param-value>/</param-value>
|
||||||
|
</init-param>
|
||||||
|
<load-on-startup>1</load-on-startup>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>legacy-dispatcher</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.sitenode.SiteNodeDispatcher</servlet-class>
|
||||||
|
<load-on-startup>3</load-on-startup>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>ccm-dispatcher</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.DispatcherServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>fallback-servlet</param-name>
|
||||||
|
<param-value>legacy-dispatcher</param-value>
|
||||||
|
</init-param>
|
||||||
|
<load-on-startup>2</load-on-startup>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>legacy-adapter</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.LegacyAdapterServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>cache-manager</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.caching.CacheServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>db-test</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.monitoring.DBTestServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>versioning-log</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.versioning.VersioningServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>oid-redirect</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.OIDRedirectServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>resource-resolver</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ResourceServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
ADDITIONAL SERVLET DECLARATIONS SECTION
|
||||||
|
basically requirred by ccm-cms
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>content-section</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.cms.ContentSectionServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>content-type-xsl</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.cms.dispatcher.ContentTypeXSLServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>content-item-xsl</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.cms.dispatcher.ContentItemXSLServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>template-xsl</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.cms.dispatcher.TemplateXSLServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>TextOnlyServlet</servlet-name>
|
||||||
|
<display-name>Text Only Servlet</display-name>
|
||||||
|
<servlet-class>
|
||||||
|
com.arsdigita.web.InternalPrefixerServlet
|
||||||
|
</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>prefix</param-name>
|
||||||
|
<param-value>/text</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>PrintFriendlyServlet</servlet-name>
|
||||||
|
<display-name>Printer Friendly Output Servlet</display-name>
|
||||||
|
<servlet-class>
|
||||||
|
com.arsdigita.web.InternalPrefixerServlet
|
||||||
|
</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>prefix</param-name>
|
||||||
|
<param-value>/print</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
MODULES SERVLET DECLARATIONS SECTION
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-atoz - servlet definitions BEGIN
|
||||||
|
NOT USED with ZeS
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>atoz-files</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>template-path</param-name>
|
||||||
|
<param-value>/templates/ccm-ldn-atoz</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
module ccm-ldn-atoz - servlet definitions END -->
|
||||||
|
|
||||||
|
<!-- module ccm-forum - servlet declarations BEGIN -->
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>forum-main</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.forum.ForumServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
<!-- module ccm-forum - servlet declarations END -->
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>portal-files</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>template-path</param-name>
|
||||||
|
<param-value>/templates/ccm-ldn-portal</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>navigation-files</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>template-path</param-name>
|
||||||
|
<param-value>/templates/ccm-ldn-navigation</param-value>
|
||||||
|
</init-param>
|
||||||
|
<init-param>
|
||||||
|
<param-name>file-resolver</param-name>
|
||||||
|
<param-value>com.arsdigita.london.navigation.NavigationFileResolver</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>portlet-type-xsl</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.dispatcher.PortletTypeXSLServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-rss - servlet declaration BEGIN -->
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>rss-files</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>template-path</param-name>
|
||||||
|
<param-value>/templates/ccm-ldn-rss</param-value>
|
||||||
|
</init-param>
|
||||||
|
<init-param>
|
||||||
|
<param-name>file-resolver</param-name>
|
||||||
|
<param-value>com.arsdigita.london.rss.RSSFileResolver</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
<!-- module ccm-ldn-rss - servlet declaration END -->
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-search - servlet declarations BEGIN -->
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>worker</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.london.search.SearchWorkerServlet</servlet-class>
|
||||||
|
<load-on-startup>4</load-on-startup>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>search-files</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>template-path</param-name>
|
||||||
|
<param-value>/templates/ccm-ldn-search</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>AxisServlet</servlet-name>
|
||||||
|
<display-name>Apache-Axis Servlet</display-name>
|
||||||
|
<servlet-class>
|
||||||
|
org.apache.axis.transport.http.AxisServlet
|
||||||
|
</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
<!-- module ccm-ldn-search - servlet declarations END -->
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-shortcuts - servlet definitions -->
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>shortcuts-files</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>template-path</param-name>
|
||||||
|
<param-value>/templates/ccm-ldn-shortcuts</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-subsite - servlet declarations BEGIN -->
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>subsite-files</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>template-path</param-name>
|
||||||
|
<param-value>/templates/ccm-ldn-subsite</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
<!-- module ccm-ldn-subsite - servlet declarations END -->
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-terms - servlet declarations BEGIN -->
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>terms-files</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>template-path</param-name>
|
||||||
|
<param-value>/templates/ccm-ldn-terms</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
<!-- module ccm-ldn-terms - servlet declarations END -->
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-themes - servlet declarations BEGIN -->
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>theme-files</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>template-path</param-name>
|
||||||
|
<param-value>/templates/ccm-ldn-theme</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>ThemeDownload</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.london.theme.dispatcher.ThemeDownloadServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>ThemePreviewServlet</servlet-name>
|
||||||
|
<display-name>Servlet to allow admins to preview look/feel</display-name>
|
||||||
|
<servlet-class>
|
||||||
|
com.arsdigita.london.theme.dispatcher.InternalThemePrefixerServlet
|
||||||
|
</servlet-class>
|
||||||
|
<init-param>
|
||||||
|
<param-name>prefix</param-name>
|
||||||
|
<param-value>/theme</param-value>
|
||||||
|
</init-param>
|
||||||
|
</servlet>
|
||||||
|
<!-- module ccm-ldn-themes - servlet declarations END -->
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
MODULES SERVLET MAPPINGS SECTION
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-atoz - servlet mappings BEGIN - - >
|
||||||
|
NOT USED HERE
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>atoz-files</servlet-name>
|
||||||
|
<url-pattern>/ccm-ldn-atoz/files/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
< ! - - module ccm-ldn-atoz - servlet mappings END -->
|
||||||
|
|
||||||
|
<!-- module ccm-forum - servlet mappings BEGIN -->
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>forum-main</servlet-name>
|
||||||
|
<url-pattern>/forum-main/main/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
<!-- module ccm-forum - servlet mappings END -->
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>portlet-type-xsl</servlet-name>
|
||||||
|
<url-pattern>/__ccm__/servlet/portlet-type/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>portal-files</servlet-name>
|
||||||
|
<url-pattern>/ccm-ldn-portal/files/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>navigation-files</servlet-name>
|
||||||
|
<url-pattern>/ccm-ldn-navigation/files/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-rss - servlet mappings -->
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>rss-files</servlet-name>
|
||||||
|
<url-pattern>/ccm-ldn-rss/files/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-search - servlet mappings BEGIN -->
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>search-files</servlet-name>
|
||||||
|
<url-pattern>/ccm-ldn-search/files/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>AxisServlet</servlet-name>
|
||||||
|
<url-pattern>/services/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
<!-- module ccm-ldn-search - servlet mappings END -->
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-shortcuts - servlet mappings -->
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>shortcuts-files</servlet-name>
|
||||||
|
<url-pattern>/ccm-ldn-shortcuts/files/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-subsite - servlet mappings BEGIN -->
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>subsite-files</servlet-name>
|
||||||
|
<url-pattern>/ccm-ldn-subsite/files/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
<!-- module ccm-ldn-subsite - servlet mappings END -->
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-terms - servlet mappings BEGIN -->
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>terms-files</servlet-name>
|
||||||
|
<url-pattern>/ccm-ldn-terms/files/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
<!-- module ccm-ldn-terms - servlet mappings END -->
|
||||||
|
|
||||||
|
<!-- module ccm-ldn-theme - servlet mappings BEGIN -->
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>theme-files</servlet-name>
|
||||||
|
<url-pattern>/theme-files/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>ThemeDownload</servlet-name>
|
||||||
|
<url-pattern>/theme-files/download/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>ThemePreviewServlet</servlet-name>
|
||||||
|
<url-pattern>/theme/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
<!-- module ccm-ldn-themes - servlet mappings END -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
BASE SERVLET MAPPINGS SECTION
|
||||||
|
basically requirred by ccm-core
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>reg</servlet-name>
|
||||||
|
<url-pattern>/__ccm__/null/reg/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>ccm-dispatcher</servlet-name>
|
||||||
|
<url-pattern>/ccm/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>legacy-adapter</servlet-name>
|
||||||
|
<url-pattern>/__ccm__/servlet/legacy-adapter/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>cache-manager</servlet-name>
|
||||||
|
<url-pattern>/expireCache/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>db-test</servlet-name>
|
||||||
|
<url-pattern>/dbtest</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>versioning-log</servlet-name>
|
||||||
|
<url-pattern>/versioning/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>oid-redirect</servlet-name>
|
||||||
|
<url-pattern>/redirect/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>resource-resolver</servlet-name>
|
||||||
|
<url-pattern>/resource/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
ADDITIONAL SERVLET MAPPINGS SECTION
|
||||||
|
basically requirred by ccm-cms
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>content-section</servlet-name>
|
||||||
|
<url-pattern>/__ccm__/servlet/content-section/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>content-item-xsl</servlet-name>
|
||||||
|
<url-pattern>/__ccm__/servlet/content-item/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>content-type-xsl</servlet-name>
|
||||||
|
<url-pattern>/__ccm__/servlet/content-type/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>template-xsl</servlet-name>
|
||||||
|
<url-pattern>/__ccm__/servlet/template/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>TextOnlyServlet</servlet-name>
|
||||||
|
<url-pattern>/text/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>PrintFriendlyServlet</servlet-name>
|
||||||
|
<url-pattern>/print/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
ERROR PAGES
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
|
<error-page>
|
||||||
|
<exception-type>com.arsdigita.dispatcher.AccessDeniedException</exception-type>
|
||||||
|
<location>/error/access-denied.jsp</location>
|
||||||
|
</error-page>
|
||||||
|
|
||||||
|
<error-page>
|
||||||
|
<exception-type>com.arsdigita.dispatcher.ObjectNotFoundException</exception-type>
|
||||||
|
<location>/error/object-not-found.jsp</location>
|
||||||
|
</error-page>
|
||||||
|
|
||||||
|
<error-page>
|
||||||
|
<exception-type>com.arsdigita.kernel.permissions.PermissionException</exception-type>
|
||||||
|
<location>/error/permission-denied.jsp</location>
|
||||||
|
</error-page>
|
||||||
|
|
||||||
|
<error-page>
|
||||||
|
<exception-type>com.arsdigita.persistence.DbNotAvailableException</exception-type>
|
||||||
|
<location>/error/db-not-available.jsp</location>
|
||||||
|
</error-page>
|
||||||
|
|
||||||
|
<error-page>
|
||||||
|
<exception-type>com.arsdigita.db.DbNotAvailableException</exception-type>
|
||||||
|
<location>/error/db-not-available.jsp</location>
|
||||||
|
</error-page>
|
||||||
|
|
||||||
|
<error-page>
|
||||||
|
<exception-type>java.lang.Exception</exception-type>
|
||||||
|
<location>/error/general.jsp</location>
|
||||||
|
</error-page>
|
||||||
|
|
||||||
|
<error-page>
|
||||||
|
<exception-type>java.lang.Error</exception-type>
|
||||||
|
<location>/error/general.jsp</location>
|
||||||
|
</error-page>
|
||||||
|
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
TAG LIBS
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
|
<taglib>
|
||||||
|
<taglib-uri>/WEB-INF/bebop-show.tld</taglib-uri>
|
||||||
|
<taglib-location>/WEB-INF/bebop-show.tld</taglib-location>
|
||||||
|
</taglib>
|
||||||
|
|
||||||
|
<taglib>
|
||||||
|
<taglib-uri>/WEB-INF/bebop-define.tld</taglib-uri>
|
||||||
|
<taglib-location>/WEB-INF/bebop-define.tld</taglib-location>
|
||||||
|
</taglib>
|
||||||
|
|
||||||
|
</web-app>
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
@import url(/css/acs-master.css);
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<xsl:stylesheet
|
||||||
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||||
|
xmlns:aplaws="http://www.arsdigita.com/aplaws/1.0"
|
||||||
|
version="1.0">
|
||||||
|
|
||||||
|
<xsl:import href="../../../../ROOT/__ccm__/apps/admin/xsl/index.xsl"/>
|
||||||
|
<xsl:import href="lib/page.xsl"/>
|
||||||
|
|
||||||
|
<xsl:param name="theme-prefix"/>
|
||||||
|
|
||||||
|
<xsl:template name="aplaws:headerStyleSheets">
|
||||||
|
<link rel="stylesheet" href="{$theme-prefix}/admin-index.css" type="text/css" media="screen"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
</xsl:stylesheet>
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
@import url("/css/acs-master.css");
|
||||||
|
@import url("/__ccm__/static/atoz/atoz.css");
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<xsl:stylesheet
|
||||||
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||||
|
xmlns:aplaws="http://www.arsdigita.com/aplaws/1.0"
|
||||||
|
version="1.0">
|
||||||
|
|
||||||
|
<!-- IMPORT DEFINITIONS ccm-ldn-atoz installed as separate web application
|
||||||
|
<xsl:import href="../../../../ccm-ldn-atoz/__ccm__/apps/atoz/xsl/index.xsl"/>
|
||||||
|
-->
|
||||||
|
<!-- IMPORT DEFINITIONS ccm-ldn-atoz installed into the main CCM webapp
|
||||||
|
-->
|
||||||
|
<xsl:import href="../../../__ccm__/apps/atoz/xsl/index.xsl"/>
|
||||||
|
<xsl:import href="lib/page.xsl"/>
|
||||||
|
|
||||||
|
<xsl:param name="theme-prefix"/>
|
||||||
|
|
||||||
|
<xsl:template name="aplaws:headerStyleSheets">
|
||||||
|
<link rel="stylesheet" href="{$theme-prefix}/atoz-index.css" type="text/css" media="screen"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
</xsl:stylesheet>
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
@import url("/css/acs-master.css");
|
||||||
|
@import url("/__ccm__/static/atoz/atoz.css");
|
||||||
|
|
@ -0,0 +1,160 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<xsl:stylesheet
|
||||||
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||||
|
xmlns:bebop="http://www.arsdigita.com/bebop/1.0"
|
||||||
|
xmlns:aplaws="http://www.arsdigita.com/aplaws/1.0"
|
||||||
|
xmlns:ui="http://www.arsdigita.com/ui/1.0"
|
||||||
|
xmlns:cms="http://www.arsdigita.com/cms/1.0"
|
||||||
|
xmlns:nav="http://ccm.redhat.com/london/navigation"
|
||||||
|
xmlns:search="http://rhea.redhat.com/search/1.0"
|
||||||
|
xmlns:atoz="http://xmlns.redhat.com/atoz/1.0"
|
||||||
|
exclude-result-prefixes="xsl bebop aplaws ui cms nav search atoz"
|
||||||
|
version="1.0">
|
||||||
|
|
||||||
|
<!-- IMPORT DEFINITIONS ccm-ldn-atoz installed as separate web application
|
||||||
|
<xsl:import href="../../../../ROOT/__ccm__/apps/content-section/xsl/index.xsl"/>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- IMPORT DEFINITIONS ccm-ldn-atoz installed into the main CCM webapp
|
||||||
|
-->
|
||||||
|
<xsl:import href="../../../__ccm__/apps/content-section/xsl/index.xsl"/>
|
||||||
|
|
||||||
|
<xsl:import href="lib/header.xsl"/>
|
||||||
|
<xsl:import href="lib/lib.xsl"/>
|
||||||
|
<xsl:import href="../../../../ROOT/packages/bebop/xsl/dcp.xsl"/>
|
||||||
|
|
||||||
|
<xsl:param name="context-prefix"></xsl:param>
|
||||||
|
<xsl:param name="dispatcher-prefix" />
|
||||||
|
<xsl:param name="theme-prefix" />
|
||||||
|
|
||||||
|
<xsl:output
|
||||||
|
method="html"
|
||||||
|
doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||||
|
doctype-system="http://www.w3.org/TR/html4/loose.dtd"
|
||||||
|
indent="yes"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<xsl:template match="bebop:page[@application='atoz']">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>APLAWS+: A to Z</title>
|
||||||
|
<xsl:call-template name="cssStyles"/>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<xsl:call-template name="bebop:dcpJavascript"/>
|
||||||
|
<a class="navHide" href="#startcontent" title="Go directly to main content" accesskey="S">Skip over navigation</a>
|
||||||
|
<span class="hide">|</span>
|
||||||
|
<xsl:call-template name="header"/>
|
||||||
|
<xsl:call-template name="azBreadcrumb"/>
|
||||||
|
<xsl:call-template name="azBody"/>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="azBody">
|
||||||
|
<table id="mainLayout" width="100%" border="0" cellspacing="0" cellpadding="0" summary="This table is used for a three-column page layout">
|
||||||
|
<tr>
|
||||||
|
<td width="20%" rowspan="2" align="left" valign="top" id="LHS">
|
||||||
|
<!--LHS NAVIGATION -->
|
||||||
|
<xsl:call-template name="azNav" />
|
||||||
|
</td>
|
||||||
|
<td colspan="2" align="left" valign="top" id="title">
|
||||||
|
<!--MAIN CONTENT -->
|
||||||
|
<h1>A to Z List</h1>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="60%" align="left" valign="top" id="mainContent">
|
||||||
|
<span class="hide">|</span>
|
||||||
|
<!--CONTENT -->
|
||||||
|
<a id="startcontent" title="Start of content"></a>
|
||||||
|
<span class="hide">|</span>
|
||||||
|
<xsl:call-template name="azMain" />
|
||||||
|
</td>
|
||||||
|
<td width="20%" height="400" align="left" valign="top" id="RHS">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<xsl:call-template name="footer"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="azBreadcrumb">
|
||||||
|
<div id="bread">
|
||||||
|
<p>
|
||||||
|
<b><a href="{$dispatcher-prefix}/portal/" title="home">home</a></b>
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>gt;
|
||||||
|
<span class="breadHi">A to Z</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="azNav">
|
||||||
|
<div id="nav">
|
||||||
|
<div class="navUp">
|
||||||
|
<a href="{$dispatcher-prefix}/portal/">
|
||||||
|
<xsl:attribute name="title">up to homepage</xsl:attribute>
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>#094;
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;home</a>
|
||||||
|
</div>
|
||||||
|
<div class="navHere"><p>A to Z</p></div>
|
||||||
|
<a href="/atozhelp" class="navChild" title="A to Z explained" >A to Z explained</a><span class="hide">|</span>
|
||||||
|
</div>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="azMain">
|
||||||
|
<a class="navHide" href="#startAZResults" title="Go directly to A-Z results">Skip to A-Z results</a>
|
||||||
|
<xsl:for-each select="atoz:atoz">
|
||||||
|
<div id="azSub">Browse the alphabetically listed information and services below</div>
|
||||||
|
<div id="azArea">
|
||||||
|
<div id="azInfo">
|
||||||
|
<xsl:for-each select="atoz:letter">
|
||||||
|
<a>
|
||||||
|
<xsl:attribute name="href">?letter=<xsl:value-of select="." /></xsl:attribute>
|
||||||
|
<xsl:value-of select="." /></a>
|
||||||
|
<xsl:if test="position()!='last'"> | </xsl:if>
|
||||||
|
</xsl:for-each>
|
||||||
|
</div>
|
||||||
|
<div id="azPlace">Categories starting with the letter <span class="letterSelected"><xsl:value-of select="atoz:letter[@isSelected]" /></span></div>
|
||||||
|
</div>
|
||||||
|
<a id="startAZResults" title="Start of A-Z results"></a>
|
||||||
|
<xsl:call-template name="azResults" />
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="azResults">
|
||||||
|
<xsl:for-each select="./atoz:provider">
|
||||||
|
<div id="azList">
|
||||||
|
<h2><xsl:value-of select="@title" /><span class="azTitleDescription"><xsl:text>[</xsl:text><xsl:value-of select="@description" /><xsl:text>]</xsl:text></span></h2>
|
||||||
|
<xsl:for-each select="atoz:atomicEntry">
|
||||||
|
<div class="azResult">
|
||||||
|
<a href="{@url}" title="{@description}"><xsl:value-of select="@title" /></a>
|
||||||
|
</div>
|
||||||
|
</xsl:for-each>
|
||||||
|
</div>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</xsl:stylesheet>
|
||||||
|
|
@ -0,0 +1,50 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<xsl:stylesheet
|
||||||
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||||
|
xmlns:bebop="http://www.arsdigita.com/bebop/1.0"
|
||||||
|
xmlns:cms="http://www.arsdigita.com/cms/1.0"
|
||||||
|
xmlns:ui="http://www.arsdigita.com/ui/1.0"
|
||||||
|
xmlns:aplaws="http://www.arsdigita.com/aplaws/1.0"
|
||||||
|
version="1.0" exclude-result-prefixes="bebop cms ui aplaws xsl">
|
||||||
|
|
||||||
|
<xsl:import href="../../../../ROOT/__ccm__/static/cms/admin/category-step/category-step.xsl"/>
|
||||||
|
|
||||||
|
<xsl:param name="theme-prefix" />
|
||||||
|
|
||||||
|
<xsl:template match="cms:emptyPage[@title='childCategories']">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="cms:category/@order='sortKey'">
|
||||||
|
<xsl:apply-templates select="cms:category/cms:category" mode="cms:javascriptCat">
|
||||||
|
<xsl:with-param name="expand" select="'none'"/>
|
||||||
|
<xsl:sort data-type="number" select="@sortKey"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:apply-templates select="cms:category/cms:category" mode="cms:javascriptCat">
|
||||||
|
<xsl:sort data-type="text" select="@name"/>
|
||||||
|
<xsl:with-param name="expand" select="'none'"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="cms:emptyPage[@title='autoCategories']">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="cms:category/@order='sortKey'">
|
||||||
|
<xsl:apply-templates select="cms:category" mode="cms:javascriptCat" >
|
||||||
|
<xsl:with-param name="expand" select="'none'"/>
|
||||||
|
<xsl:sort data-type="number" select="@sortKey"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:apply-templates select="cms:category" mode="cms:javascriptCat" >
|
||||||
|
<xsl:sort data-type="text" select="@name"/>
|
||||||
|
<xsl:with-param name="expand" select="'none'"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
</xsl:stylesheet>
|
||||||
|
|
@ -0,0 +1,124 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<xsl:stylesheet
|
||||||
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||||
|
xmlns:bebop="http://www.arsdigita.com/bebop/1.0"
|
||||||
|
xmlns:aplaws="http://www.arsdigita.com/aplaws/1.0"
|
||||||
|
xmlns:ui="http://www.arsdigita.com/ui/1.0"
|
||||||
|
xmlns:cms="http://www.arsdigita.com/cms/1.0"
|
||||||
|
xmlns:nav="http://ccm.redhat.com/london/navigation"
|
||||||
|
version="1.0">
|
||||||
|
|
||||||
|
<xsl:import href="../../../../ROOT/__ccm__/themes/aplaws/navigation-index.xsl"/>
|
||||||
|
|
||||||
|
<xsl:template name="pageContent">
|
||||||
|
<a class="intLink" name="top" />
|
||||||
|
<xsl:call-template name="greeting" />
|
||||||
|
<xsl:call-template name="contentLinks" />
|
||||||
|
<xsl:call-template name="dimensionalNavbars" />
|
||||||
|
<xsl:call-template name="dataTables" />
|
||||||
|
<xsl:call-template name="boxPanels1" />
|
||||||
|
<xsl:call-template name="forms" />
|
||||||
|
<xsl:call-template name="labels" />
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- Copied from ccm-core/web/packages/bebop/xsl/DataTable.xsl -->
|
||||||
|
<xsl:template name="dataTables">
|
||||||
|
<xsl:for-each select="bebop:table[@class='dataTable']">
|
||||||
|
<table cellpadding="1" cellspacing="2" border="0">
|
||||||
|
<xsl:for-each select="thead|bebop:thead">
|
||||||
|
<xsl:call-template name="dataTableHead">
|
||||||
|
<xsl:with-param name="orderColumn" select="../@order"/>
|
||||||
|
<xsl:with-param name="direction" select="../@direction"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:for-each>
|
||||||
|
<xsl:for-each select="bebop:tbody">
|
||||||
|
<xsl:call-template name="dataTableBody"/>
|
||||||
|
</xsl:for-each>
|
||||||
|
</table>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- Copied from ccm-core/web/packages/bebop/xsl/BoxPanel.xsl -->
|
||||||
|
<xsl:template name="boxPanels1">
|
||||||
|
<xsl:for-each select="bebop:boxPanel[@axis='1']">
|
||||||
|
<table>
|
||||||
|
<xsl:if test="string-length(@width)>0">
|
||||||
|
<xsl:attribute name="width">
|
||||||
|
<xsl:value-of select="@width"/>
|
||||||
|
</xsl:attribute>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="string-length(@border)>0">
|
||||||
|
<xsl:attribute name="border">
|
||||||
|
<xsl:value-of select="@border"/>
|
||||||
|
</xsl:attribute>
|
||||||
|
</xsl:if>
|
||||||
|
<tr>
|
||||||
|
<xsl:for-each select="bebop:cell">
|
||||||
|
<td>
|
||||||
|
<xsl:for-each select="*/@class|*/@style">
|
||||||
|
<xsl:attribute name="{name()}">
|
||||||
|
<xsl:value-of select="." />
|
||||||
|
</xsl:attribute>
|
||||||
|
</xsl:for-each>
|
||||||
|
<xsl:apply-templates/>
|
||||||
|
</td>
|
||||||
|
</xsl:for-each>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- Copied from ccm-core/web/packages/bebop/xsl/DimensionalNavbar.xsl -->
|
||||||
|
<xsl:template name="dimensionalNavbars">
|
||||||
|
<xsl:for-each select="bebop:dimensionalNavbar">
|
||||||
|
<xsl:comment>bebop:dimensionalNavbar</xsl:comment>
|
||||||
|
<xsl:value-of select="@startTag"/>
|
||||||
|
<xsl:for-each select="*">
|
||||||
|
<xsl:apply-templates select="."/>
|
||||||
|
<xsl:if test="position()!=last()">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="string-length(../@delimiter)=0">
|
||||||
|
 > 
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise><xsl:value-of select="../@delimiter"/></xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:for-each>
|
||||||
|
<xsl:value-of select="@endTag"/>
|
||||||
|
<xsl:comment>/bebop:dimensionalNavbar</xsl:comment>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- Copied from ccm-core/web/packages/bebop/xsl/Form.xsl -->
|
||||||
|
<xsl:template name="forms">
|
||||||
|
<xsl:for-each select="bebop:form">
|
||||||
|
<xsl:value-of select="@message"/>
|
||||||
|
<form>
|
||||||
|
<xsl:for-each select="@*[not(self::method)]">
|
||||||
|
<xsl:attribute name="{name()}">
|
||||||
|
<xsl:value-of select="."/>
|
||||||
|
</xsl:attribute>
|
||||||
|
<xsl:attribute name="method">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="string-length(../@method)=0">post</xsl:when>
|
||||||
|
<xsl:otherwise><xsl:value-of select="../@method"/></xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:attribute>
|
||||||
|
</xsl:for-each>
|
||||||
|
<xsl:apply-templates />
|
||||||
|
</form>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- Copied from ccm-core/web/packages/bebop/xsl/Label.xsl -->
|
||||||
|
<xsl:template name="labels">
|
||||||
|
<xsl:for-each select="bebop:label">
|
||||||
|
<xsl:call-template name="bebop-label-text">
|
||||||
|
<xsl:with-param name="text" select="text()"/>
|
||||||
|
<xsl:with-param name="escape" select="@escape"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:output method="html"/>
|
||||||
|
</xsl:stylesheet>
|
||||||
|
|
@ -0,0 +1,69 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<xsl:stylesheet
|
||||||
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||||
|
xmlns:bebop="http://www.arsdigita.com/bebop/1.0"
|
||||||
|
xmlns:cms="http://www.arsdigita.com/cms/1.0"
|
||||||
|
xmlns:ui="http://www.arsdigita.com/ui/1.0"
|
||||||
|
xmlns:aplaws="http://www.arsdigita.com/aplaws/1.0"
|
||||||
|
version="1.0" exclude-result-prefixes="bebop cms ui aplaws xsl">
|
||||||
|
|
||||||
|
<xsl:import href="../../../../ROOT/__ccm__/apps/content-center/xsl/index.xsl"/>
|
||||||
|
<xsl:import href="../../../../ROOT/packages/bebop/xsl/dcp.xsl"/>
|
||||||
|
|
||||||
|
<xsl:param name="theme-prefix" />
|
||||||
|
|
||||||
|
<xsl:variable name="here"><xsl:value-of select="$static-prefix"/>/cms/admin/page</xsl:variable>
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template match="bebop:page[@class = 'cms-admin']">
|
||||||
|
<html xmlns:deditor="http://www.arsdigita.com/deditor/1.0">
|
||||||
|
<head>
|
||||||
|
<title><xsl:value-of select="bebop:title"/></title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="{$legacy-asset-prefix}/css/acs-master.css"/>
|
||||||
|
<link rel="stylesheet" type="text/css" href="{$static-prefix}/cms/admin/cms-admin.css"/>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<xsl:call-template name="bebop:dcpJavascript"/>
|
||||||
|
<table id="global-header">
|
||||||
|
<tr>
|
||||||
|
<td id="logo"><img src="{$theme-prefix}/images/aplaws-logo-small.png" height="30" width="30"/></td>
|
||||||
|
<td id="context"><xsl:apply-templates select="bebop:contextBar"/></td>
|
||||||
|
<td style="margin: 0; color: #3f3f3f; border: 0; padding: 0; padding-right: 18px;">Welcome <strong><xsl:value-of select="@name" /></strong></td>
|
||||||
|
<td>
|
||||||
|
<table id="global-links">
|
||||||
|
<tr>
|
||||||
|
<td class="global-link-icon"><a href="{cms:globalNavigation/cms:workspace/@href}"><img src="{$here}/home.png" height="18" width="18"/></a></td>
|
||||||
|
<td class="global-link"><a href="{cms:globalNavigation/cms:workspace/@href}">Home</a></td>
|
||||||
|
|
||||||
|
<td class="global-link-icon"><a href="{cms:globalNavigation/cms:signOut/@href}"><img src="{$here}//lock.png" height="18" width="14"/></a></td>
|
||||||
|
<td class="global-link"><a href="{cms:globalNavigation/cms:signOut/@href}">Logout</a></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<div id="page-title"><xsl:value-of select="bebop:title"/></div>
|
||||||
|
<xsl:if test="bebop:link[@id = 'preview_link']">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="bebop:link[@target]">
|
||||||
|
<div style="float: right; margin-right: 12px"><a target="{bebop:link/@target}" href="{bebop:link[@id = 'preview_link']/@href}"><xsl:value-of select="bebop:link[@id = 'preview_link']/bebop:label"/></a></div>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<div style="float: right; margin-right: 12px"><a href="{bebop:link[@id = 'preview_link']/@href}"><xsl:value-of select="bebop:link[@id = 'preview_link']/bebop:label"/></a></div>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:if>
|
||||||
|
<div><xsl:apply-templates select="*[@id = 'page-body']"/></div>
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="bebop:structure">
|
||||||
|
<div><xsl:apply-templates select="bebop:structure"/></div>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="ui:debugPanel">
|
||||||
|
<div><xsl:apply-templates select="ui:debugPanel"/></div>
|
||||||
|
</xsl:when>
|
||||||
|
</xsl:choose>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
</xsl:stylesheet>
|
||||||
|
|
@ -0,0 +1,79 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<xsl:stylesheet
|
||||||
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||||
|
xmlns:bebop="http://www.arsdigita.com/bebop/1.0"
|
||||||
|
xmlns:cms="http://www.arsdigita.com/cms/1.0"
|
||||||
|
xmlns:ui="http://www.arsdigita.com/ui/1.0"
|
||||||
|
xmlns:aplaws="http://www.arsdigita.com/aplaws/1.0"
|
||||||
|
version="1.0" exclude-result-prefixes="bebop cms ui aplaws xsl">
|
||||||
|
|
||||||
|
<xsl:import href="../../../../ROOT/__ccm__/apps/content-section/xsl/admin.xsl"/>
|
||||||
|
<xsl:import href="../../../../ROOT/packages/bebop/xsl/dcp.xsl"/>
|
||||||
|
|
||||||
|
<xsl:import href="category-step.xsl"/>
|
||||||
|
|
||||||
|
<xsl:param name="theme-prefix" />
|
||||||
|
|
||||||
|
<xsl:variable name="here"><xsl:value-of select="$static-prefix"/>/cms/admin/page</xsl:variable>
|
||||||
|
|
||||||
|
<xsl:template name="cat-widget-cat-name">
|
||||||
|
<xsl:value-of select="@name"/>
|
||||||
|
|
||||||
|
<xsl:if test="@pid and @domain='LGSL'">
|
||||||
|
(<xsl:value-of select="@pid"/>)
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template match="bebop:page[@class = 'cms-admin']">
|
||||||
|
<html xmlns:deditor="http://www.arsdigita.com/deditor/1.0">
|
||||||
|
<head>
|
||||||
|
<title><xsl:value-of select="bebop:title"/></title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="{$legacy-asset-prefix}/css/acs-master.css"/>
|
||||||
|
<link rel="stylesheet" type="text/css" href="{$static-prefix}/cms/admin/cms-admin.css"/>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<xsl:call-template name="bebop:dcpJavascript"/>
|
||||||
|
<table id="global-header">
|
||||||
|
<tr>
|
||||||
|
<td id="logo"><img src="{$theme-prefix}/images/aplaws-logo-small.png" height="30" width="30"/></td>
|
||||||
|
<td id="context"><xsl:apply-templates select="bebop:contextBar"/></td>
|
||||||
|
<td style="margin: 0; color: #3f3f3f; border: 0; padding: 0; padding-right: 18px;">Welcome <strong><xsl:value-of select="@name" /></strong></td>
|
||||||
|
<td>
|
||||||
|
<table id="global-links">
|
||||||
|
<tr>
|
||||||
|
<td class="global-link-icon"><a href="{cms:globalNavigation/cms:workspace/@href}"><img src="{$here}/home.png" height="18" width="18"/></a></td>
|
||||||
|
<td class="global-link"><a href="{cms:globalNavigation/cms:workspace/@href}">Home</a></td>
|
||||||
|
|
||||||
|
<td class="global-link-icon"><a href="{cms:globalNavigation/cms:signOut/@href}"><img src="{$here}//lock.png" height="18" width="14"/></a></td>
|
||||||
|
<td class="global-link"><a href="{cms:globalNavigation/cms:signOut/@href}">Logout</a></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<div id="page-title"><xsl:value-of select="bebop:title"/></div>
|
||||||
|
<xsl:if test="bebop:link[@id = 'preview_link']">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="bebop:link[@target]">
|
||||||
|
<div style="float: right; margin-right: 12px"><a target="{bebop:link/@target}" href="{bebop:link[@id = 'preview_link']/@href}"><xsl:value-of select="bebop:link[@id = 'preview_link']/bebop:label"/></a></div>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<div style="float: right; margin-right: 12px"><a href="{bebop:link[@id = 'preview_link']/@href}"><xsl:value-of select="bebop:link[@id = 'preview_link']/bebop:label"/></a></div>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:if>
|
||||||
|
<div><xsl:apply-templates select="*[@id = 'page-body']"/></div>
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="bebop:structure">
|
||||||
|
<div><xsl:apply-templates select="bebop:structure"/></div>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="ui:debugPanel">
|
||||||
|
<div><xsl:apply-templates select="ui:debugPanel"/></div>
|
||||||
|
</xsl:when>
|
||||||
|
</xsl:choose>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
</xsl:stylesheet>
|
||||||
|
|
@ -0,0 +1,93 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<xsl:stylesheet
|
||||||
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||||
|
xmlns:bebop="http://www.arsdigita.com/bebop/1.0"
|
||||||
|
xmlns:aplaws="http://www.arsdigita.com/aplaws/1.0"
|
||||||
|
xmlns:ui="http://www.arsdigita.com/ui/1.0"
|
||||||
|
xmlns:cms="http://www.arsdigita.com/cms/1.0"
|
||||||
|
xmlns:nav="http://ccm.redhat.com/london/navigation"
|
||||||
|
exclude-result-prefixes="xsl bebop aplaws ui cms nav"
|
||||||
|
version="1.0">
|
||||||
|
|
||||||
|
<xsl:import href="../../../../ROOT/__ccm__/apps/content-section/xsl/index.xsl"/>
|
||||||
|
<xsl:import href="lib/header.xsl"/>
|
||||||
|
<xsl:import href="lib/lib.xsl"/>
|
||||||
|
<xsl:import href="lib/leftNav.xsl"/>
|
||||||
|
<xsl:import href="types/ContentTypes.xsl"/>
|
||||||
|
<xsl:import href="../../../../ROOT/packages/bebop/xsl/dcp.xsl"/>
|
||||||
|
|
||||||
|
<xsl:param name="context-prefix"/>
|
||||||
|
<xsl:param name="dispatcher-prefix"/>
|
||||||
|
|
||||||
|
<xsl:output
|
||||||
|
method="html"
|
||||||
|
doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||||
|
doctype-system="http://www.w3.org/TR/html4/loose.dtd"
|
||||||
|
indent="yes"
|
||||||
|
/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template match="bebop:page[@class='simplePage']">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<xsl:call-template name="metaData"/>
|
||||||
|
<title>APLAWS+: <xsl:call-template name="Title"/></title>
|
||||||
|
<xsl:call-template name="cssStyles"/>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<xsl:call-template name="bebop:dcpJavascript"/>
|
||||||
|
<a class="navHide" href="#startcontent" title="Go directly to main content" accesskey="S">Skip over navigation</a>
|
||||||
|
<span class="hide">|</span>
|
||||||
|
<xsl:call-template name="header"/>
|
||||||
|
<xsl:call-template name="breadcrumb"/>
|
||||||
|
<xsl:call-template name="mainContent"/>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="mainContent">
|
||||||
|
|
||||||
|
<!--MAIN LAYOUT -->
|
||||||
|
|
||||||
|
<table id="mainLayout" width="100%" border="0" cellspacing="0" cellpadding="0" summary="This table is used for a three-column page layout">
|
||||||
|
<tr>
|
||||||
|
<td width="20%" rowspan="2" align="left" valign="top" id="LHS">
|
||||||
|
<!--LHS NAVIGATION -->
|
||||||
|
<xsl:call-template name="leftNav" />
|
||||||
|
</td>
|
||||||
|
<td colspan="2" align="left" valign="top" id="title">
|
||||||
|
<!--MAIN CONTENT -->
|
||||||
|
<h1><xsl:call-template name="Title" /></h1>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="60%" align="left" valign="top" id="mainContent">
|
||||||
|
<span class="hide">|</span>
|
||||||
|
<!--CONTENT -->
|
||||||
|
<a id="startcontent" title="Start of content"></a>
|
||||||
|
<span class="hide">|</span>
|
||||||
|
<xsl:call-template name="pageContent" />
|
||||||
|
</td>
|
||||||
|
<td width="20%" height="400" align="left" valign="top" id="RHS">
|
||||||
|
<div id="related">
|
||||||
|
<xsl:call-template name="relatedItems" />
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:call-template name="footer"/>
|
||||||
|
|
||||||
|
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
</xsl:stylesheet>
|
||||||
|
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
|
||||||
|
.main {
|
||||||
|
color: #333 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.light {
|
||||||
|
color: #CCC !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.medium {
|
||||||
|
color: #6F3 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark {
|
||||||
|
color: #336 !important;
|
||||||
|
font-style: bold !important;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,308 @@
|
||||||
|
<xsl:stylesheet xmlns:forum="http://www.arsdigita.com/forum/1.0"
|
||||||
|
xmlns:bebop="http://www.arsdigita.com/bebop/1.0"
|
||||||
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||||
|
xmlns:nav="http://ccm.redhat.com/london/navigation"
|
||||||
|
xmlns:search="http://rhea.redhat.com/search/1.0"
|
||||||
|
xmlns:portal="http://www.uk.arsdigita.com/portal/1.0"
|
||||||
|
xmlns:cms="http://www.arsdigita.com/cms/1.0"
|
||||||
|
exclude-result-prefixes="xsl bebop nav search portal forum cms"
|
||||||
|
version="1.0">
|
||||||
|
|
||||||
|
<!-- IMPORT DEFINITIONS ccm-forum installed as separate web application
|
||||||
|
<xsl:import href="../../../../ROOT/__ccm__/themes/aplaws/category-step.xsl"/>
|
||||||
|
<xsl:import href="../../../../ROOT/__ccm__/static/cms/admin/category-step/category-step.xsl"/>
|
||||||
|
-->
|
||||||
|
<!-- IMPORT DEFINITIONS ccm-forum installed into the main CCM webapp
|
||||||
|
-->
|
||||||
|
<xsl:import href="../../../__ccm__/themes/aplaws/category-step.xsl"/>
|
||||||
|
<xsl:import href="../../../__ccm__/static/cms/admin/category-step/category-step.xsl"/>
|
||||||
|
|
||||||
|
<xsl:output method="html" indent="yes"/>
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template match="forum:categoryStepSummary">
|
||||||
|
<div class="content">
|
||||||
|
|
||||||
|
<h3>Assign Categories</h3>
|
||||||
|
<br/>
|
||||||
|
<xsl:for-each select="forum:categoryRoots/forum:categoryRoot">
|
||||||
|
<xsl:sort select="@name"/>
|
||||||
|
<xsl:variable name="name">
|
||||||
|
<xsl:value-of select="@name"/>
|
||||||
|
</xsl:variable>
|
||||||
|
<h5><xsl:value-of select="$name"/></h5>
|
||||||
|
<br/>
|
||||||
|
<xsl:if test="@addAction">
|
||||||
|
<script LANGUAGE="JavaScript">
|
||||||
|
<![CDATA[ <!-- begin script ]]>
|
||||||
|
<![CDATA[ document.write('<a href="]]><xsl:value-of select="@addJSAction"/><![CDATA["><img src="/assets/category-step/action-add.png" border="0"/></a>')]]>
|
||||||
|
<![CDATA[ document.write("\<!--") ]]>
|
||||||
|
<![CDATA[ // end script --> ]]>
|
||||||
|
</script>
|
||||||
|
<a href="{@addAction}">
|
||||||
|
<img src="/assets/category-step/action-add.png" border="0"/>
|
||||||
|
</a>
|
||||||
|
<script LANGUAGE="JavaScript">
|
||||||
|
<![CDATA[ <!-- begin script ]]>
|
||||||
|
<![CDATA[ document.write("--\>") ]]>
|
||||||
|
<![CDATA[ // end script --> ]]>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script LANGUAGE="JavaScript">
|
||||||
|
<![CDATA[ <!-- begin script ]]>
|
||||||
|
<![CDATA[ document.write('<a href="]]><xsl:value-of select="@addJSAction"/><![CDATA[">Add Categories</a>')]]>
|
||||||
|
<![CDATA[ document.write("\<!--") ]]>
|
||||||
|
<![CDATA[ // end script --> ]]>
|
||||||
|
</script>
|
||||||
|
<xsl:text> </xsl:text>
|
||||||
|
<a href="{@addAction}">
|
||||||
|
<xsl:text>Add categories</xsl:text>
|
||||||
|
</a>
|
||||||
|
<script LANGUAGE="JavaScript">
|
||||||
|
<![CDATA[ <!-- begin script ]]>
|
||||||
|
<![CDATA[ document.write("--\>") ]]>
|
||||||
|
<![CDATA[ // end script --> ]]>
|
||||||
|
</script>
|
||||||
|
</xsl:if>
|
||||||
|
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="count(../../forum:itemCategories/forum:itemCategory[starts-with(@path, $name)]) = 0">
|
||||||
|
<div>
|
||||||
|
There are no categories assigned in this context
|
||||||
|
</div>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<ul>
|
||||||
|
<xsl:for-each select="../../forum:itemCategories/forum:itemCategory[starts-with(@path, $name)]">
|
||||||
|
<xsl:sort select="@path"/>
|
||||||
|
<li>
|
||||||
|
<xsl:value-of select="substring(@path, string-length($name) + 5)"/> 
|
||||||
|
<xsl:if test="@deleteAction">
|
||||||
|
<a href="{@deleteAction}"><img src="/assets/category-step/action-delete.png" border="0"/></a>
|
||||||
|
<xsl:text> </xsl:text>
|
||||||
|
<a href="{@deleteAction}">Remove</a>
|
||||||
|
</xsl:if>
|
||||||
|
</li>
|
||||||
|
</xsl:for-each>
|
||||||
|
</ul>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:for-each>
|
||||||
|
</div>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="forum:categoryWidget">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="@mode = 'javascript'">
|
||||||
|
<xsl:apply-templates select="." mode="forum:javascript"/>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:apply-templates select="." mode="forum:plain"/>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="forum:categoryWidget" mode="forum:javascript">
|
||||||
|
<script language="JavaScript">
|
||||||
|
<![CDATA[
|
||||||
|
<!-- Begin hiding
|
||||||
|
function catToggle(id) {
|
||||||
|
var elImg = document.getElementById("catTog"+id);
|
||||||
|
var elChildren = document.getElementById("catCh"+id);
|
||||||
|
|
||||||
|
if (elChildren.style.display != "block") {
|
||||||
|
elChildren.style.display = "block";
|
||||||
|
elImg.src = "/assets/category-step/action-delete.png";
|
||||||
|
} else {
|
||||||
|
elChildren.style.display = "none";
|
||||||
|
elImg.src = "/assets/category-step/action-add.png";
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
function catSelect(id, name, node) {
|
||||||
|
var elWidget = document.getElementById("catWd");
|
||||||
|
var elWidgetHidden = document.getElementById("catWdHd");
|
||||||
|
var found = 0;
|
||||||
|
for (var i = 0 ; i < elWidget.options.length ; i++) {
|
||||||
|
if (elWidget.options[i].value == id) {
|
||||||
|
found = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!found) {
|
||||||
|
var opt = new Option(name, id);
|
||||||
|
elWidget.options[elWidget.options.length] = opt;
|
||||||
|
|
||||||
|
var optHidden = new Option(node, id, false, true);
|
||||||
|
elWidgetHidden.options[elWidgetHidden.options.length] = optHidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
var elLink = document.getElementById("catLn"+node);
|
||||||
|
var elName = document.getElementById("catNm"+node);
|
||||||
|
elLink.style.display="none";
|
||||||
|
elName.style.display="inline";
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
function catDeselect() {
|
||||||
|
var elWidget = document.getElementById("catWd");
|
||||||
|
var elWidgetHidden = document.getElementById("catWdHd");
|
||||||
|
var idx = elWidget.selectedIndex;
|
||||||
|
if (idx != -1) {
|
||||||
|
//var id = elWidget.options[idx].value;
|
||||||
|
var node = elWidgetHidden.options[idx].text;
|
||||||
|
var elLink = document.getElementById("catLn"+node);
|
||||||
|
var elName = document.getElementById("catNm"+node);
|
||||||
|
elLink.style.display="inline";
|
||||||
|
elName.style.display="none";
|
||||||
|
|
||||||
|
elWidget.options[idx] = null;
|
||||||
|
elWidgetHidden.options[idx] = null;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// End hiding -->
|
||||||
|
]]>
|
||||||
|
</script>
|
||||||
|
<div>
|
||||||
|
<xsl:apply-templates select="forum:category[@isEnabled = '1']" mode="forum:javascriptCat">
|
||||||
|
<xsl:with-param name="expand" select="'block'"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</div>
|
||||||
|
<br/>
|
||||||
|
<div class="content">
|
||||||
|
<h4>Selected Categories</h4>
|
||||||
|
<select id="catWd" size="5" onClick="catDeselect()" style="width: 400px; height=200px">
|
||||||
|
</select>
|
||||||
|
<select id="catWdHd" name="{@name}" size="5" multiple="multiple" style="display: none">
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="forum:category" mode="forum:javascriptCat">
|
||||||
|
<xsl:param name="expand" select="'none'"/>
|
||||||
|
<xsl:variable name="linkStyle">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="@isAbstract != '1' and @isSelected != '1'">
|
||||||
|
<xsl:value-of select="'inline'"/>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:value-of select="'none'"/>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:variable>
|
||||||
|
<xsl:variable name="nameStyle">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="@isAbstract != '1' and @isSelected != '1'">
|
||||||
|
<xsl:value-of select="'none'"/>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:value-of select="'inline'"/>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:variable>
|
||||||
|
|
||||||
|
<div id="catSelf{@pid}">
|
||||||
|
<div class="content">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="count(forum:category[@isEnabled = '1']) > 0 and $expand='none'">
|
||||||
|
<a href="#" onClick="catToggle('{@nodeID}');">
|
||||||
|
<img id="catTog{@nodeID}" src="/assets/category-step/action-add.png" width="14" height="14" border="0"/></a>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="count(forum:category[@isEnabled = '1']) > 0 and $expand!='none'">
|
||||||
|
<a href="#" onClick="catToggle('{@nodeID}');"><img id="catTog{@nodeID}" src="/assets/category-step/action-delete.png"
|
||||||
|
width="14" height="14" border="0"/></a>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<img src="/assets/category-step/action-generic.png" width="14" height="14" border="0"/>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
<a id="catLn{@nodeID}" href="#" style="padding-left: 6px; display: {$linkStyle}">
|
||||||
|
<xsl:attribute name="onclick">catSelect('<xsl:value-of select="@id"/>', '<xsl:call-template name="escape-apostrophes">
|
||||||
|
<xsl:with-param name="text" select="@fullname"/>
|
||||||
|
</xsl:call-template>', '<xsl:value-of select="@nodeID"/>')</xsl:attribute>
|
||||||
|
|
||||||
|
<xsl:if test="@description">
|
||||||
|
<xsl:attribute name="title">
|
||||||
|
<xsl:value-of select="@description"/>
|
||||||
|
</xsl:attribute>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:value-of select="@name"/>
|
||||||
|
</a>
|
||||||
|
<span id="catNm{@nodeID}" style="padding-left: 6px; display: {$nameStyle}">
|
||||||
|
<xsl:if test="@description">
|
||||||
|
<xsl:attribute name="title">
|
||||||
|
<xsl:value-of select="@description"/>
|
||||||
|
</xsl:attribute>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:value-of select="@name"/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="catCh{@nodeID}" style="margin-left: 20px; display: {$expand}">
|
||||||
|
<xsl:apply-templates select="forum:category[@isEnabled = '1']" mode="forum:javascriptCat">
|
||||||
|
<xsl:sort data-type="number" select="@sortKey"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</div>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="forum:categoryWidget" mode="forum:plain">
|
||||||
|
<select name="{@name}" size="30" multiple="multiple">
|
||||||
|
<xsl:apply-templates select="forum:category[position() = 1]/forum:category[@isEnabled = '1' and @isAbstract = '0']" mode="forum:plainCat"/>
|
||||||
|
</select>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="forum:category" mode="forum:plainCat">
|
||||||
|
<xsl:if test="@isSelected != '1' and @isAbstract != '1'">
|
||||||
|
<option value="{@sortKey}"><xsl:value-of select="@fullname"/></option>
|
||||||
|
</xsl:if>
|
||||||
|
|
||||||
|
<xsl:apply-templates select="forum:category[@isEnabled = '1' and @isAbstract = '0']" mode="forum:plainCat">
|
||||||
|
<xsl:sort data-type="number" select="@sortKey"/>
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="escape-apostrophes">
|
||||||
|
<xsl:param name="text"/>
|
||||||
|
<xsl:variable name="apostrophe">'</xsl:variable>
|
||||||
|
<xsl:variable name="escaped-apostrophe">\'</xsl:variable>
|
||||||
|
<xsl:call-template name="do-replace">
|
||||||
|
<xsl:with-param name="text" select="$text"/>
|
||||||
|
<xsl:with-param name="replace" select="$apostrophe"/>
|
||||||
|
<xsl:with-param name="by" select="$escaped-apostrophe"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="do-replace">
|
||||||
|
<xsl:param name="text"/>
|
||||||
|
<xsl:param name="replace"/>
|
||||||
|
<xsl:param name="by"/>
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="contains($text, $replace)">
|
||||||
|
<xsl:value-of select="substring-before($text, $replace)"/>
|
||||||
|
<xsl:value-of select="$by"/>
|
||||||
|
<xsl:call-template name="do-replace">
|
||||||
|
<xsl:with-param name="text" select="substring-after($text, $replace)"/>
|
||||||
|
<xsl:with-param name="replace" select="$replace"/>
|
||||||
|
<xsl:with-param name="by" select="$by"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:value-of select="$text"/>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!--<xsl:template match="bebop:formAction[@name='category'] ">
|
||||||
|
<div class="content">
|
||||||
|
<form action="{@action}" name="{@name}" method="get">
|
||||||
|
<xsl:apply-templates select="bebop:gridPanel/bebop:formWidget[@type='hidden']" />
|
||||||
|
<xsl:apply-templates select="bebop:pageState" />
|
||||||
|
<xsl:apply-templates />
|
||||||
|
<div class="forumButton">
|
||||||
|
<xsl:apply-templates select="bebop:boxPanel/bebop:cell/bebop:boxPanel/bebop:cell/bebop:formWidget" />
|
||||||
|
<br/>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</xsl:template>-->
|
||||||
|
|
||||||
|
</xsl:stylesheet>
|
||||||
|
|
@ -0,0 +1,402 @@
|
||||||
|
@import url("css/main.css");
|
||||||
|
<--@import url("/css/acs-master.css");-->
|
||||||
|
<--@import url("/css/tabbed-pane/tabbed-pane.css");-->
|
||||||
|
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
background-color: #FFF;
|
||||||
|
color: #000;
|
||||||
|
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.forum {
|
||||||
|
font-size: 0.8em;
|
||||||
|
margin: 8px 0 10px 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*form submission*/
|
||||||
|
|
||||||
|
.forumSelect {
|
||||||
|
margin-top: 0.2em;
|
||||||
|
float:left;
|
||||||
|
}
|
||||||
|
.forumButton input {
|
||||||
|
float:left;
|
||||||
|
margin-top: 0.2em;
|
||||||
|
margin-right: 5px;
|
||||||
|
padding-left: 2px;
|
||||||
|
padding-right: 2px;
|
||||||
|
color: #000;
|
||||||
|
background-color: #CCC;
|
||||||
|
vertical-align: middle;
|
||||||
|
border: 1px solid #000;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.submit {
|
||||||
|
clear: both;
|
||||||
|
margin-left: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
view all threads
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#selectLabel {
|
||||||
|
float:left;
|
||||||
|
color: white;
|
||||||
|
padding-top: 0.2em;
|
||||||
|
padding-left: 0.2em;
|
||||||
|
}
|
||||||
|
#selectCategory {
|
||||||
|
background-color: #999;
|
||||||
|
height: 2.2em;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#threadHead {
|
||||||
|
background-color: #E5F3FC;
|
||||||
|
font-weight: bold;
|
||||||
|
height: 1.5em;
|
||||||
|
padding-left: 0.2em;
|
||||||
|
margin-bottom: 0.3em;
|
||||||
|
|
||||||
|
}
|
||||||
|
#noMessages {
|
||||||
|
clear:both;
|
||||||
|
float:left;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
}
|
||||||
|
.subject {
|
||||||
|
clear: both;
|
||||||
|
float:left;
|
||||||
|
width: 190px;
|
||||||
|
padding: 4px 0 4px 22px;
|
||||||
|
background-position: 4px 0.7em;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-image: url("images/forum/read.gif");
|
||||||
|
}
|
||||||
|
|
||||||
|
.topic {
|
||||||
|
clear:both;
|
||||||
|
float:left;
|
||||||
|
width: 212px;
|
||||||
|
padding: 4px 0 4px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.threadSubject {
|
||||||
|
clear:both;
|
||||||
|
float:left;
|
||||||
|
width: 140px;
|
||||||
|
padding: 4px 0 4px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.author {
|
||||||
|
float:left;
|
||||||
|
width: 100px;
|
||||||
|
padding: 4px 0 4px 0px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.replies {
|
||||||
|
float:left;
|
||||||
|
text-align: center;
|
||||||
|
width: 60px;
|
||||||
|
padding: 4px 0 4px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.threads {
|
||||||
|
float:left;
|
||||||
|
text-align: center;
|
||||||
|
width: 75px;
|
||||||
|
padding: 4px 0 4px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.status {
|
||||||
|
float:left;
|
||||||
|
width: 75px;
|
||||||
|
padding: 4px 0 4px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete {
|
||||||
|
float:left;
|
||||||
|
text-align: center;
|
||||||
|
width: 50px;
|
||||||
|
padding: 4px 0 4px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lastPost {
|
||||||
|
float: left;
|
||||||
|
text-align: center;
|
||||||
|
width: 150px;
|
||||||
|
padding: 4px 0 4px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#newTopicLink a {
|
||||||
|
padding: 4px 0 4px 22px;
|
||||||
|
background-position: 0px 0.3em;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-image: url("images/forum/post-16x16.gif");
|
||||||
|
}
|
||||||
|
|
||||||
|
#viewAllTopicsLink a {
|
||||||
|
float: left;
|
||||||
|
padding: 4px 15px 4px 22px;
|
||||||
|
background-position: 0px 0.3em;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-image: url("images/forum/back-to-16x16.gif");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#watchTopicLink a {
|
||||||
|
float: left;
|
||||||
|
padding: 4px 0 4px 22px;
|
||||||
|
background-position: 0px 0.3em;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-image: url("images/forum/watch-16x16.gif");
|
||||||
|
margin-left: 0.8em;
|
||||||
|
margin-bottom: 0.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#info {
|
||||||
|
clear:both;
|
||||||
|
padding: 4px 0 4px 22px;
|
||||||
|
background-position: 0px 0.6em;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-image: url("images/forum/info-16x16.gif");
|
||||||
|
color: green;
|
||||||
|
margin-left: 0.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post {
|
||||||
|
clear: both;
|
||||||
|
margin-bottom: 0.8em;
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.postOdd {
|
||||||
|
background-color: #EFEFEF;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.postEven {
|
||||||
|
background-color: #FFFFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
#topic {
|
||||||
|
margin-bottom: 0.8em;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.actions {
|
||||||
|
float: right;
|
||||||
|
margin-right: 0.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header {
|
||||||
|
float: left;
|
||||||
|
margin-left: 0.3em;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.message {
|
||||||
|
clear: both;
|
||||||
|
float: left;
|
||||||
|
width:98%;
|
||||||
|
margin-left: 0.3em;
|
||||||
|
margin-bottom: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.postDetails {
|
||||||
|
clear: both;
|
||||||
|
float: left;
|
||||||
|
margin-bottom: 0.5em;
|
||||||
|
margin-left: 0.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bar {
|
||||||
|
clear:both;
|
||||||
|
float:left;
|
||||||
|
width: 98%;
|
||||||
|
padding-left: 0.3em;
|
||||||
|
padding-right: 0.3em;
|
||||||
|
padding-top: 0.5em;
|
||||||
|
padding-bottom: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.replyBar {
|
||||||
|
clear:both;
|
||||||
|
padding-right: 0.3em;
|
||||||
|
padding-top: 0.5em;
|
||||||
|
padding-bottom: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.clearGroup {
|
||||||
|
clear:both;
|
||||||
|
margin-bottom: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.columnOne {
|
||||||
|
float: left;
|
||||||
|
width: 100px;
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.columnOneWide {
|
||||||
|
float: left;
|
||||||
|
width: 130px;
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.columnTwo {
|
||||||
|
display: inline;
|
||||||
|
font-size: 1em;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.columnTwo input {
|
||||||
|
width: 300px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.columnTwo select {
|
||||||
|
width: 300px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.columnTwo textArea {
|
||||||
|
width: 300px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.columnThree {
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#title {
|
||||||
|
float:left;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
font-size: 1.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
padding: 0.3em 0.3em 0.3em 0.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fileLink {
|
||||||
|
margin-left: 0.5em;
|
||||||
|
clear: both;
|
||||||
|
float:left;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
textarea {
|
||||||
|
width: 450px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.validationError {
|
||||||
|
color: red;
|
||||||
|
margin-left: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#images {
|
||||||
|
clear: both;
|
||||||
|
float:left;
|
||||||
|
margin-left: 0.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#plainText {
|
||||||
|
clear: both;
|
||||||
|
font-size: 1em;
|
||||||
|
margin-bottom: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
list-style-position: inside;
|
||||||
|
}
|
||||||
|
|
||||||
|
.expiry input {
|
||||||
|
width: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fileTable {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
pre {
|
||||||
|
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Contents of tabbed-pane.css - forum tabs */
|
||||||
|
|
||||||
|
div.tabbed-pane div, div.tabbed-pane table.tab-set, div.tabbed-pane table.tab-set td {
|
||||||
|
margin: 0;
|
||||||
|
border: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.tabbed-pane table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.tabbed-pane table.tab-set {
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.tabbed-pane table.tab-set a {
|
||||||
|
text-decoration: none;
|
||||||
|
color: rgb(63,63,63);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.tabbed-pane table.tab-set td.tab-label {
|
||||||
|
margin-left: 4px;
|
||||||
|
padding: 5px 0 3px 10px;
|
||||||
|
|
||||||
|
background: rgb(225,225,225) url(/css/tabbed-pane/tab-unselected.png) no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.tabbed-pane table.tab-set td.tab-end {
|
||||||
|
width: 10px;
|
||||||
|
background: url(/css/tabbed-pane/tab-unselected-end.png) no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.tabbed-pane table.tab-set td.current-tab-label {
|
||||||
|
margin-left: 4px;
|
||||||
|
padding: 5px 0 3px 10px;
|
||||||
|
background: rgb(162,30,30) url(/css/tabbed-pane/tab-selected.png) no-repeat;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.tabbed-pane table.tab-set td.current-tab-end {
|
||||||
|
width: 10px;
|
||||||
|
background: url(/css/tabbed-pane/tab-selected-end.png) no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.tabbed-pane table.tab-set td.tab-spacer {
|
||||||
|
width: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.tabbed-pane table.rule {
|
||||||
|
margin-left: 10px;
|
||||||
|
width: 100%;
|
||||||
|
background: rgb(162,30,30) url(/css/tabbed-pane/tab-bar.png) repeat-x;
|
||||||
|
height: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.tabbed-pane div.current-pane {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
After Width: | Height: | Size: 561 B |
|
After Width: | Height: | Size: 552 B |
|
After Width: | Height: | Size: 581 B |
|
After Width: | Height: | Size: 551 B |
|
After Width: | Height: | Size: 619 B |
|
After Width: | Height: | Size: 1010 B |
|
After Width: | Height: | Size: 296 B |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
|
@ -0,0 +1,2 @@
|
||||||
|
@import url("/css/acs-master.css");
|
||||||
|
@import url("/__ccm__/static/forum/forum.css");
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<xsl:stylesheet
|
||||||
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||||
|
xmlns:aplaws="http://www.arsdigita.com/aplaws/1.0"
|
||||||
|
version="1.0">
|
||||||
|
|
||||||
|
<!-- IMPORT DEFINITIONS ccm-forum installed as separate web application ccm-forum
|
||||||
|
<xsl:import href="../../../../ccm-forum/__ccm__/apps/forum/xsl/index.xsl"/>
|
||||||
|
-->
|
||||||
|
<!-- IMPORT DEFINITIONS ccm-ldn-shortcuts installed into the main CCM webapp
|
||||||
|
-->
|
||||||
|
<xsl:import href="../../../__ccm__/apps/forum/xsl/index.xsl"/>
|
||||||
|
|
||||||
|
<xsl:import href="lib/page.xsl"/>
|
||||||
|
|
||||||
|
<xsl:param name="theme-prefix" />
|
||||||
|
|
||||||
|
<xsl:template name="aplaws:headerStyleSheets">
|
||||||
|
<link rel="stylesheet" href="{$theme-prefix}/forum-index.css" type="text/css" media="screen"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
</xsl:stylesheet>
|
||||||
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 57 B |
|
After Width: | Height: | Size: 43 B |
|
After Width: | Height: | Size: 124 B |
|
After Width: | Height: | Size: 125 B |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
|
@ -0,0 +1,48 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<xsl:stylesheet
|
||||||
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||||
|
xmlns:bebop="http://www.arsdigita.com/bebop/1.0"
|
||||||
|
xmlns:aplaws="http://www.arsdigita.com/aplaws/1.0"
|
||||||
|
xmlns:ui="http://www.arsdigita.com/ui/1.0"
|
||||||
|
version="1.0">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
This file contains templates relating to
|
||||||
|
generating <body> tags in HTML.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<xsl:import href="user-banner.xsl"/>
|
||||||
|
|
||||||
|
<xsl:template name="aplaws:bodyHeader">
|
||||||
|
<div class="bodyHeader">
|
||||||
|
<xsl:apply-templates select="ui:userBanner"/>
|
||||||
|
</div>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="aplaws:bodyBreadcrumb">
|
||||||
|
<div class="bodyBreadcrumb">
|
||||||
|
<a href="/">APLAWS</a>><xsl:call-template name="aplaws:pageTitle"/>
|
||||||
|
</div>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="aplaws:bodyContent">
|
||||||
|
<h1><xsl:call-template name="aplaws:pageTitle"/></h1>
|
||||||
|
<div class="bodyContent">
|
||||||
|
<xsl:apply-templates select="*[not(@metadata.tag)]"/>
|
||||||
|
</div>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="aplaws:bodyFooter">
|
||||||
|
<div class="bodyFooter">
|
||||||
|
<xsl:apply-templates select="ui:siteBanner"/>
|
||||||
|
</div>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="aplaws:bodyDebug">
|
||||||
|
<div class="bodyDebug">
|
||||||
|
<xsl:apply-templates select="ui:debugPanel"/>
|
||||||
|
<xsl:apply-templates select="bebop:structure"/>
|
||||||
|
</div>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
</xsl:stylesheet>
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<xsl:stylesheet
|
||||||
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||||
|
xmlns:bebop="http://www.arsdigita.com/bebop/1.0"
|
||||||
|
xmlns:aplaws="http://www.arsdigita.com/aplaws/1.0"
|
||||||
|
xmlns:ui="http://www.arsdigita.com/ui/1.0"
|
||||||
|
version="1.0">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
This file contains templates related
|
||||||
|
to generating <head> tags in HTML
|
||||||
|
-->
|
||||||
|
|
||||||
|
<xsl:template name="aplaws:pageTitle">
|
||||||
|
<xsl:value-of select="/bebop:page/bebop:title"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="aplaws:headerMetaData">
|
||||||
|
<meta name="title">
|
||||||
|
<xsl:attribute name="content">
|
||||||
|
<xsl:call-template name="aplaws:pageTitle"/>
|
||||||
|
</xsl:attribute>
|
||||||
|
</meta>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="aplaws:headerStyleSheets">
|
||||||
|
<link rel="stylesheet" href="/__ccm__/themes/aplaws/lib/page.css" type="text/css" media="screen"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
</xsl:stylesheet>
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<xsl:stylesheet
|
||||||
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||||
|
xmlns:bebop="http://www.arsdigita.com/bebop/1.0"
|
||||||
|
xmlns:aplaws="http://www.arsdigita.com/aplaws/1.0"
|
||||||
|
xmlns:ui="http://www.arsdigita.com/ui/1.0"
|
||||||
|
xmlns:cms="http://www.arsdigita.com/cms/1.0"
|
||||||
|
xmlns:nav="http://ccm.redhat.com/london/navigation"
|
||||||
|
exclude-result-prefixes="xsl bebop aplaws ui cms nav"
|
||||||
|
version="1.0">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="cssStyles">
|
||||||
|
<link rel="stylesheet" href="{$theme-prefix}/css/main.css" type="text/css" media="all"/>
|
||||||
|
<link rel="stylesheet" href="{$theme-prefix}/css/wysiwyg.css" type="text/css" media="all"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</xsl:stylesheet>
|
||||||
|
|
@ -0,0 +1,86 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<xsl:stylesheet
|
||||||
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||||
|
xmlns:bebop="http://www.arsdigita.com/bebop/1.0"
|
||||||
|
xmlns:aplaws="http://www.arsdigita.com/aplaws/1.0"
|
||||||
|
xmlns:ui="http://www.arsdigita.com/ui/1.0"
|
||||||
|
xmlns:cms="http://www.arsdigita.com/cms/1.0"
|
||||||
|
xmlns:nav="http://ccm.redhat.com/london/navigation"
|
||||||
|
exclude-result-prefixes="xsl bebop aplaws ui cms nav"
|
||||||
|
version="1.0">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="leftNav">
|
||||||
|
|
||||||
|
<div id="nav">
|
||||||
|
<xsl:for-each select="/bebop:page/nav:categoryMenu//nav:category[@isSelected='true']">
|
||||||
|
<xsl:choose>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:when test="position() = last()">
|
||||||
|
|
||||||
|
|
||||||
|
<div class="navUp">
|
||||||
|
<!-- category above -->
|
||||||
|
<xsl:for-each select="../../nav:category[@isSelected='true']">
|
||||||
|
<xsl:if test="../../nav:categoryMenu">
|
||||||
|
<a href="{$dispatcher-prefix}/portal/">
|
||||||
|
<xsl:attribute name="title">up to homepage</xsl:attribute>
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>#094;
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;home</a>
|
||||||
|
</xsl:if>
|
||||||
|
|
||||||
|
<xsl:if test="not(../../nav:categoryMenu)">
|
||||||
|
<a href="{@url}">
|
||||||
|
<xsl:attribute name="title">up to <xsl:value-of select="@title" /></xsl:attribute>
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>#094;
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;<xsl:value-of select="@title" />
|
||||||
|
</a>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:for-each>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- category above if homepage/root-->
|
||||||
|
<xsl:for-each select="../../nav:categoryMenu">
|
||||||
|
<a href="{$dispatcher-prefix}/portal/">
|
||||||
|
<xsl:attribute name="title">up to homepage</xsl:attribute>
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>#094;
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;home</a>
|
||||||
|
</xsl:for-each>
|
||||||
|
<span class="hide">|</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="navHere">
|
||||||
|
<!-- selected category -->
|
||||||
|
<p>
|
||||||
|
<a href="{@url}" title="{@title}"><xsl:value-of select="@title" /></a>
|
||||||
|
</p>
|
||||||
|
<span class="hide">|</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- children -->
|
||||||
|
<xsl:for-each select="./nav:category">
|
||||||
|
<xsl:if test="not(@isSelected)">
|
||||||
|
<a href="{@url}" class="navChild" title="{@title}"><xsl:value-of select="@title" /></a>
|
||||||
|
</xsl:if>
|
||||||
|
<span class="hide">|</span>
|
||||||
|
</xsl:for-each>
|
||||||
|
|
||||||
|
</xsl:when>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:for-each>
|
||||||
|
</div>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
</xsl:stylesheet>
|
||||||
|
<!-- Stylus Studio meta-information - (c)1998-2003. Sonic Software Corporation. All rights reserved.
|
||||||
|
<metaInformation>
|
||||||
|
<scenarios/><MapperInfo srcSchemaPath="" srcSchemaRoot="" srcSchemaPathIsRelative="yes" srcSchemaInterpretAsXML="no" destSchemaPath="" destSchemaRoot="" destSchemaPathIsRelative="yes" destSchemaInterpretAsXML="no"/>
|
||||||
|
</metaInformation>
|
||||||
|
-->
|
||||||
|
|
@ -0,0 +1,562 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<xsl:stylesheet
|
||||||
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||||
|
xmlns:bebop="http://www.arsdigita.com/bebop/1.0"
|
||||||
|
xmlns:aplaws="http://www.arsdigita.com/aplaws/1.0"
|
||||||
|
xmlns:ui="http://www.arsdigita.com/ui/1.0"
|
||||||
|
xmlns:cms="http://www.arsdigita.com/cms/1.0"
|
||||||
|
xmlns:nav="http://ccm.redhat.com/london/navigation"
|
||||||
|
xmlns:terms="http://xmlns.redhat.com/london/terms/1.0"
|
||||||
|
exclude-result-prefixes="xsl bebop aplaws ui nav cms terms"
|
||||||
|
version="1.0">
|
||||||
|
|
||||||
|
<xsl:import href="../types/ContentTypes.xsl"/>
|
||||||
|
|
||||||
|
<xsl:param name="theme-prefix"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="header">
|
||||||
|
|
||||||
|
<!--HEADER -->
|
||||||
|
|
||||||
|
<div id="header">
|
||||||
|
|
||||||
|
<div id="logo">
|
||||||
|
<a href="{$dispatcher-prefix}/portal/" title="APLAWS+ home">
|
||||||
|
<img src="{$theme-prefix}/images/aplawsplus.gif" hspace="5" width="158" height="30" alt="APLAWS+ logo" />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="utils">
|
||||||
|
<span class="hide">|</span>
|
||||||
|
<a href="{$dispatcher-prefix}/portal/" title="home" accesskey="1">home</a>
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;|
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
|
||||||
|
<!-- atoz disabled, currently it only display categories (and indes pages), not content.
|
||||||
|
so, it's not so useful for general content pages
|
||||||
|
<a href="{$dispatcher-prefix}/atoz" title="a-z">a-z</a><xsl:text disable-output-escaping="yes">&
|
||||||
|
</xsl:text>nbsp;|<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
|
||||||
|
-->
|
||||||
|
<a href="{$dispatcher-prefix}/navigation/sitemap.jsp" title="site map" accesskey="3">site map</a>
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;|
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
|
||||||
|
<a href="/contact" title="contact us" accesskey="9">contact us</a>
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;|
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
|
||||||
|
<a href="/help" title="help" accesskey="6">help</a>
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="search">
|
||||||
|
|
||||||
|
<form name="search" method="get" action="{$dispatcher-prefix}/search/">
|
||||||
|
<label for="topSearch" accesskey="4">Search</label>
|
||||||
|
<input class="searchBox" id="topSearch" name="terms" value="search" />
|
||||||
|
<label for="topGo">Go</label>
|
||||||
|
<input type="submit" name="Submit" id="topGo" value="GO" class="go" />
|
||||||
|
<xsl:apply-templates select="bebop:pageState" />
|
||||||
|
</form>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<br id="clear"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!--TOP LEVEL NAVIGATION -->
|
||||||
|
<!-- hard coded navigation arranged horizonally, deactivated
|
||||||
|
<div id="tlcNav">
|
||||||
|
|
||||||
|
<span class="hide">|</span>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<xsl:call-template name="TLC"/>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
-->
|
||||||
|
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!--BREADCRUMB -->
|
||||||
|
<xsl:template name="breadcrumb">
|
||||||
|
|
||||||
|
<span class="hide">|</span>
|
||||||
|
<div id="bread">
|
||||||
|
<p>
|
||||||
|
<b>
|
||||||
|
<a href="{$dispatcher-prefix}/portal/" title="home">home</a><xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;<xsl:text disable-output-escaping="yes">&</xsl:text>gt;<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;</b>
|
||||||
|
<span class="hide">|</span>
|
||||||
|
<xsl:for-each select="nav:categoryPath/nav:category[not(position()=1)]">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="not(position()=last())">
|
||||||
|
<a>
|
||||||
|
<xsl:attribute name="href"><xsl:value-of select="@url" /></xsl:attribute>
|
||||||
|
<xsl:attribute name="title"><xsl:value-of select="@description" /></xsl:attribute>
|
||||||
|
<xsl:value-of select="@title" />
|
||||||
|
</a>
|
||||||
|
<span class="hide">|</span>
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;<span class="breadArrow"><xsl:text disable-output-escaping="yes">&</xsl:text>gt;</span><xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<span class="breadHi"><xsl:value-of select="@title" /></span>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:for-each>
|
||||||
|
</p>
|
||||||
|
<span class="hide">|</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- aplaws council navigation categories,
|
||||||
|
originally CONFIGURED TO MATCH LGCL TOP CATEGORIES, hard coded
|
||||||
|
may be used as an example if someone really needs hard coded navigation categories -->
|
||||||
|
<!-- deactivated for now
|
||||||
|
<xsl:template name="TLC">
|
||||||
|
<span class="hide">|</span>
|
||||||
|
<a href="{$dispatcher-prefix}/navigation/first-cat" title="First Category">first categoty</a>
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;|<xsl:text disable-output-escaping="yes">&
|
||||||
|
</xsl:text>nbsp;
|
||||||
|
<a href="{$dispatcher-prefix}/navigation/second-cat" title="Second Category">second category</a>
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;|<xsl:text disable-output-escaping="yes">&
|
||||||
|
</xsl:text>nbsp;
|
||||||
|
<a href="{$dispatcher-prefix}/navigation/third-cat" title="Third Category">third category</a>
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;|<xsl:text disable-output-escaping="yes">&
|
||||||
|
</xsl:text>nbsp;
|
||||||
|
<a href="{$dispatcher-prefix}/navigation/last-cat" title="Last Category">last category</a>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="footer">
|
||||||
|
<div id="footer">
|
||||||
|
|
||||||
|
<!-- if you use hard coded navigation categories, you may repeat them at the bottom of each page -->
|
||||||
|
<!-- deactivated for now
|
||||||
|
<p id="foottlc">
|
||||||
|
<span class="hide">|</span>
|
||||||
|
<a href="{$dispatcher-prefix}/navigation/first-cat" title="First Category">first categoty</a>
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;|<xsl:text disable-output-escaping="yes">&
|
||||||
|
</xsl:text>nbsp;
|
||||||
|
<a href="{$dispatcher-prefix}/navigation/second-cat" title="Second Category">second category</a>
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;|<xsl:text disable-output-escaping="yes">&
|
||||||
|
</xsl:text>nbsp;
|
||||||
|
<a href="{$dispatcher-prefix}/navigation/third-cat" title="Third Category">third category</a>
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;|<xsl:text disable-output-escaping="yes">&
|
||||||
|
</xsl:text>nbsp;
|
||||||
|
<a href="{$dispatcher-prefix}/navigation/last-cat" title="Last Category">last category</a>
|
||||||
|
</p>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<p id="legal">
|
||||||
|
<span class="hide">|</span>
|
||||||
|
<a href="/copyright" title="copyright">copyright</a>
|
||||||
|
<xsl:text disable-output-escaping="yes">&nbsp;|&nbsp;</xsl:text>
|
||||||
|
<a href="/disclaimer" title="disclaimer and privacy statement" accesskey="8">disclaimer and privacy statement</a>
|
||||||
|
<xsl:text disable-output-escaping="yes">&nbsp;|&</xsl:text>
|
||||||
|
<a href="/contact" title="contact" accesskey="9">contact</a>
|
||||||
|
<xsl:text disable-output-escaping="yes">&nbsp;|&nbsp;</xsl:text>
|
||||||
|
<a href="/accessibility" title="accessibility statement" accesskey="0">accessibility</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<span class="hide">|</span>
|
||||||
|
<a href="http://validator.w3.org/check/referer">
|
||||||
|
<img border="0" src="{$theme-prefix}/images/w3c-xhtml.png" alt="Valid HTML 4.01!" height="31" width="88" /></a>
|
||||||
|
<span class="hide">|</span>
|
||||||
|
<a href="http://jigsaw.w3.org/css-validator/">
|
||||||
|
<img style="border:0;width:88px;height:31px" src="{$theme-prefix}/images/w3c-css.png" alt="Valid CSS!" /></a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<xsl:call-template name="aplaws:bodyDebug"/>
|
||||||
|
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="pageContent">
|
||||||
|
<a class="intLink" name="top" />
|
||||||
|
<xsl:choose>
|
||||||
|
<!-- CIs -->
|
||||||
|
<xsl:when test="cms:contentPanel">
|
||||||
|
<xsl:apply-templates select="cms:contentPanel/cms:item"/>
|
||||||
|
<xsl:call-template name="fileAttachments" />
|
||||||
|
<xsl:call-template name="associatedLinks" />
|
||||||
|
<font family="arial">Data Protection and Information Sharing notice. No personal information you have given us will be passed on to third parties for commercial purposes. The Council's policy is that all information will be shared among officers and other agencies where the legal framework allows it, if this will help to improve the service you receive and to develop other services. If you do not wish certain information about you to be exchanged within the Council, you can request that this does not happen.
|
||||||
|
</font>
|
||||||
|
</xsl:when>
|
||||||
|
<!-- A-Z -->
|
||||||
|
<xsl:when test="cms:alphabetNavigation">
|
||||||
|
<xsl:apply-templates select="ui:simplePageContent/cms:alphabetNavigation"/>
|
||||||
|
<div id="navSpace"><img src="{$theme-prefix}/images/spacer.gif" alt="*" /></div>
|
||||||
|
</xsl:when>
|
||||||
|
<!-- Nav pages -->
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:call-template name="greeting" />
|
||||||
|
<xsl:call-template name="contentLinks" />
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="Title">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="cms:contentPanel">
|
||||||
|
<xsl:value-of select="cms:contentPanel/cms:item/title"/>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="cms:alphabetNavigation">A to Z</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:for-each select="/bebop:page/nav:categoryMenu//nav:category[@isSelected='true']">
|
||||||
|
<xsl:if test="position() = last()">
|
||||||
|
<xsl:value-of select="@title"/>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="greeting">
|
||||||
|
<xsl:for-each select="nav:greetingItem[@id='greetingItem']/cms:item">
|
||||||
|
<div id="greeting">
|
||||||
|
|
||||||
|
<xsl:choose>
|
||||||
|
|
||||||
|
<xsl:when test="type[label = 'MultiPartArticle']">
|
||||||
|
<xsl:call-template name="CT_MultiPartArticle_graphics" />
|
||||||
|
</xsl:when>
|
||||||
|
|
||||||
|
<xsl:when test="type[label = 'Site Proxy']">
|
||||||
|
<xsl:call-template name="CT_SiteProxy_graphics" />
|
||||||
|
</xsl:when>
|
||||||
|
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:for-each select="imageCaptions">
|
||||||
|
<div id="CI_Image">
|
||||||
|
<img align="right">
|
||||||
|
<xsl:attribute name="src"><xsl:value-of select="$dispatcher-prefix"/>/cms-service/stream/image/?image_id=<xsl:value-of select="imageAsset/id" /></xsl:attribute>
|
||||||
|
<xsl:attribute name="alt"><xsl:value-of select="caption" /></xsl:attribute>
|
||||||
|
</img>
|
||||||
|
</div>
|
||||||
|
</xsl:for-each>
|
||||||
|
<p>
|
||||||
|
<xsl:value-of disable-output-escaping="yes" select="./textAsset/content"/>
|
||||||
|
</p>
|
||||||
|
</xsl:otherwise>
|
||||||
|
|
||||||
|
</xsl:choose>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="contentLinks">
|
||||||
|
<xsl:variable name="thisCategory" select="nav:categoryPath/nav:category[position()=last()]/@id"/>
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="nav:dateOrderCategories/nav:category[@id=$thisCategory]">
|
||||||
|
<!-- this category should have items date ordered -->
|
||||||
|
<xsl:call-template name="datedContentLinks">
|
||||||
|
<xsl:with-param name="order" select = "nav:dateOrderCategories/nav:category[@id=$thisCategory]/@order"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:call-template name="undatedContentLinks"/>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="undatedContentLinks">
|
||||||
|
|
||||||
|
<xsl:for-each select="nav:simpleObjectList/nav:objectList">
|
||||||
|
<div id="contentLinks">
|
||||||
|
<xsl:for-each select="nav:item">
|
||||||
|
<a>
|
||||||
|
<xsl:attribute name="href"><xsl:value-of select="nav:path" /></xsl:attribute>
|
||||||
|
<xsl:attribute name="title"><xsl:value-of select="nav:attribute[@name='title']" /></xsl:attribute>
|
||||||
|
<xsl:value-of select="nav:attribute[@name='title']" />
|
||||||
|
</a>
|
||||||
|
<span class="hide">|</span>
|
||||||
|
</xsl:for-each>
|
||||||
|
</div>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="datedContentLinks">
|
||||||
|
<xsl:param name="order"/>
|
||||||
|
<xsl:comment>Dated Links</xsl:comment>
|
||||||
|
<xsl:for-each select="nav:simpleObjectList/nav:objectList">
|
||||||
|
<div id="contentLinks">
|
||||||
|
<xsl:comment>Items ordered in <xsl:value-of select ="$order"/> order</xsl:comment>
|
||||||
|
<xsl:for-each select="nav:item">
|
||||||
|
<!-- nb can't put nav:attribute[@name='launchDate' and @usage='sort'] into a variable because it
|
||||||
|
will not be initialised for items without launch date, and so sort will fail -->
|
||||||
|
<xsl:sort select="nav:attribute[@name='launchDate']/@year" order = "{$order}" data-type="number"/>
|
||||||
|
<xsl:sort select="nav:attribute[@name='launchDate']/@month" order = "{$order}" data-type="number"/>
|
||||||
|
<xsl:sort select="nav:attribute[@name='launchDate']/@day" order = "{$order}" data-type="number"/>
|
||||||
|
<xsl:sort select="nav:attribute[@name='launchDate']/@hour" order = "{$order}" data-type="number"/>
|
||||||
|
<xsl:sort select="nav:attribute[@name='launchDate']/@minute" order = "{$order}" data-type="number"/>
|
||||||
|
<xsl:sort select="nav:attribute[@name='launchDate']/@second" order = "{$order}" data-type="number"/>
|
||||||
|
<xsl:sort select="nav:attribute[@name='title']"/>
|
||||||
|
<a>
|
||||||
|
<xsl:attribute name="href"><xsl:value-of select="nav:path" /></xsl:attribute>
|
||||||
|
<xsl:attribute name="title"><xsl:value-of select="nav:attribute[@name='title']" /></xsl:attribute>
|
||||||
|
<!-- if there is a launch date, prepend title with date, so that the order of
|
||||||
|
entries makes sense -->
|
||||||
|
<xsl:if test="nav:attribute[@name='launchDate']">
|
||||||
|
|
||||||
|
<xsl:value-of select="nav:attribute[@name='launchDate']"/> -
|
||||||
|
<!-- line above displays the locale specific version of the date - personally I think
|
||||||
|
the default long version looks awful - maybe short format can be specified in
|
||||||
|
com.arsdigita.london.navigation.DataCollectionRenderer. Alternative approach
|
||||||
|
is to construct short date with the available attributes eg UK version below
|
||||||
|
(which could do with some left padding on day & month so that the dates align correctly)
|
||||||
|
<xsl:value-of select="nav:attribute[@name='launchDate']/@day"/>/
|
||||||
|
<xsl:value-of select="nav:attribute[@name='launchDate']/@month"/>/
|
||||||
|
<xsl:value-of select="nav:attribute[@name='launchDate']/@year"/> - -->
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:value-of select="nav:attribute[@name='title']" />
|
||||||
|
</a>
|
||||||
|
<span class="hide">|</span>
|
||||||
|
</xsl:for-each>
|
||||||
|
</div>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="fileAttachments">
|
||||||
|
<xsl:if test="cms:contentPanel/cms:item/fileAttachments">
|
||||||
|
<div class="attachment">
|
||||||
|
<h2>Related Files:</h2>
|
||||||
|
<ul class="linklist">
|
||||||
|
<xsl:for-each select="cms:contentPanel/cms:item/fileAttachments">
|
||||||
|
<xsl:sort select="fileOrder" data-type="number" />
|
||||||
|
<li>
|
||||||
|
<xsl:value-of select="name"/> -
|
||||||
|
<xsl:value-of select="description"/>
|
||||||
|
<a href="{$dispatcher-prefix}/cms-service/stream/asset/?asset_id={./id}" title="view file">[View]</a>
|
||||||
|
<a href="{$dispatcher-prefix}/cms-service/download/asset/?asset_id={./id}" title="save file to your computer">[Save]</a>
|
||||||
|
</li>
|
||||||
|
</xsl:for-each>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- URL Encoding Template Begin -->
|
||||||
|
<!-- Taken on as is basis.Written by Mike J. Brown, mike@skew.org.
|
||||||
|
No license; use freely, but credit me if reproducing in print.
|
||||||
|
Characters we'll support.
|
||||||
|
We could add control chars 0-31 and 127-159, but we won't.
|
||||||
|
-->
|
||||||
|
<xsl:variable name="ascii"> !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~</xsl:variable>
|
||||||
|
<xsl:variable name="latin1"> ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ</xsl:variable>
|
||||||
|
|
||||||
|
<!-- Characters that usually don't need to be escaped -->
|
||||||
|
<xsl:variable name="safe">!'()*-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~</xsl:variable>
|
||||||
|
|
||||||
|
<xsl:variable name="hex" >0123456789ABCDEF</xsl:variable>
|
||||||
|
<xsl:template name="url-encode">
|
||||||
|
<xsl:param name="str"/>
|
||||||
|
<xsl:if test="$str">
|
||||||
|
<xsl:variable name="first-char" select="substring($str,1,1)"/>
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="contains($safe,$first-char)">
|
||||||
|
<xsl:value-of select="$first-char"/>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:variable name="codepoint">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="contains($ascii,$first-char)">
|
||||||
|
<xsl:value-of select="string-length(substring-before($ascii,$first-char)) + 32"/>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="contains($latin1,$first-char)">
|
||||||
|
<xsl:value-of select="string-length(substring-before($latin1,$first-char)) + 160"/>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:message terminate="no">Warning: string contains a character that is out of range! Substituting "?".</xsl:message>
|
||||||
|
<xsl:text>63</xsl:text>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:variable>
|
||||||
|
<xsl:variable name="hex-digit1" select="substring($hex,floor($codepoint div 16) + 1,1)"/>
|
||||||
|
<xsl:variable name="hex-digit2" select="substring($hex,$codepoint mod 16 + 1,1)"/>
|
||||||
|
<xsl:value-of select="concat('%',$hex-digit1,$hex-digit2)"/>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
<xsl:if test="string-length($str) > 1">
|
||||||
|
<xsl:call-template name="url-encode">
|
||||||
|
<xsl:with-param name="str" select="substring($str,2)"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:template>
|
||||||
|
<!-- URL Encoding Template End -->
|
||||||
|
|
||||||
|
<xsl:template name="associatedLinks">
|
||||||
|
<xsl:if test="cms:contentPanel/cms:item/links">
|
||||||
|
<div class="attachment">
|
||||||
|
<h2>Associated Links:</h2>
|
||||||
|
<ul class="linklist">
|
||||||
|
<xsl:for-each select="cms:contentPanel/cms:item/links">
|
||||||
|
<xsl:sort select="linkOrder" data-type="number" />
|
||||||
|
<li>
|
||||||
|
<a>
|
||||||
|
<xsl:attribute name="href">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="targetType='internalLink'">
|
||||||
|
<xsl:text>/redirect/?oid=</xsl:text>
|
||||||
|
<xsl:call-template name="url-encode">
|
||||||
|
<xsl:with-param name="str">
|
||||||
|
<xsl:value-of select="targetItem/@oid"/>
|
||||||
|
</xsl:with-param>
|
||||||
|
</xsl:call-template>
|
||||||
|
<!-- <xsl:text>/redirect/?oid=</xsl:text><xsl:value-of select="targetItem/@oid"/> -->
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:value-of select="targetURI"/>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:attribute>
|
||||||
|
<xsl:attribute name="title"><xsl:value-of select="./linkDescription" /></xsl:attribute>
|
||||||
|
<xsl:if test="./targetWindow">
|
||||||
|
<xsl:attribute name="target"><xsl:value-of select="./targetWindow" /></xsl:attribute>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:value-of disable-output-escaping="yes" select="./linkTitle" />
|
||||||
|
</a>
|
||||||
|
- <xsl:value-of select="./linkDescription" />
|
||||||
|
|
||||||
|
</li>
|
||||||
|
</xsl:for-each>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="relatedItems">
|
||||||
|
<xsl:for-each select="nav:relatedItems">
|
||||||
|
<h2>Related Items</h2>
|
||||||
|
<xsl:for-each select="nav:relatedItem">
|
||||||
|
<a href="{@path}" title="{@title}"><xsl:value-of select="@title" /></a>
|
||||||
|
</xsl:for-each>
|
||||||
|
<span class="hide">|</span>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="metaData">
|
||||||
|
<meta name="eGMS.accessibility" scheme="WCAG" content="Double-A" />
|
||||||
|
<meta name="DCTERMS.audience" content="" scheme="LGAL" href="http://www.esd.org.uk/standards/lgal/" />
|
||||||
|
<xsl:for-each select="descendant::dublinCore">
|
||||||
|
<meta name="DC.coverage.spatial" scheme="ONS SNAC" content="{./dcCoverageSpatialRef}" />
|
||||||
|
<meta name="DC.coverage.temporal.beginnningDate" scheme="ISO 639-2" ><xsl:attribute name="content"><xsl:call-template name="metaDate"><xsl:with-param name="date" select="./dcTemporalBegin" /></xsl:call-template></xsl:attribute></meta>
|
||||||
|
<meta name="DC.coverage.temporal.endDate" scheme="ISO 639-2" ><xsl:attribute name="content"><xsl:call-template name="metaDate"><xsl:with-param name="date" select="./dcTemporalEnd" /></xsl:call-template></xsl:attribute></meta>
|
||||||
|
<meta name="DC.creator" content="{./dcCreatorOwner}" />
|
||||||
|
<meta name="Dc.date.valid" scheme="ISO8601" ><xsl:attribute name="content"><xsl:call-template name="metaDate"><xsl:with-param name="date" select="./dcDateValid" /></xsl:call-template></xsl:attribute></meta>
|
||||||
|
<meta name="eGMS.disposal.review" scheme="ISO8601" ><xsl:attribute name="content"><xsl:call-template name="metaDate"><xsl:with-param name="date" select="./dcDisposalReview" /></xsl:call-template></xsl:attribute></meta>
|
||||||
|
<meta name="DC.identifier" content="" schmeme="URI"/>
|
||||||
|
<meta name="DC.language" content="{./dcLanguage}" scheme="ISO 639-2" />
|
||||||
|
<meta name="DC.publisher" content="{./dcPublisher}" />
|
||||||
|
<meta name="DC.rights" content="{./dcRights}" />
|
||||||
|
<meta name="DC.relation.isFormatOf" content="{$context-prefix}{//bebop:page/@url}?output=xml" />
|
||||||
|
<meta name="DC.subject"><xsl:attribute name="content"><xsl:call-template name="metaTranslate"><xsl:with-param name="toTranslate" select="./dcKeywords" /></xsl:call-template></xsl:attribute></meta>
|
||||||
|
</xsl:for-each>
|
||||||
|
|
||||||
|
<xsl:for-each select="terms:assignedTerms/terms:term">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="@domain='GCL'">
|
||||||
|
<meta name="eGMS.subject.category" content="{@name}" scheme="GCL" href="http://www.esd.org.uk/standards/gcl/gcl.xml" />
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="@domain='LGCL'">
|
||||||
|
<meta name="eGMS.subject.category" content="{@name}" scheme="LGCL" href="http://www.esd.org.uk/standards/lgcl/lgcl.xml" />
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="@domain='LGSL'">
|
||||||
|
<meta name="eGMS.subject.service" content="{@id}" scheme="LGSL" href="http://www.esd.org.uk/standards/lgsl/lgsl.xml" />
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="@domain='LGIL'">
|
||||||
|
<meta name="eGMS.subject.interaction" content="{@name}" scheme="LGIL" href="http://www.esd.org.uk/standards/lgil/lgil.xml" />
|
||||||
|
</xsl:when>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:for-each>
|
||||||
|
|
||||||
|
<meta name="DC.title">
|
||||||
|
<xsl:attribute name="content">APLAWS+: <xsl:call-template name="Title" /></xsl:attribute>
|
||||||
|
</meta>
|
||||||
|
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="metaTranslate">
|
||||||
|
<xsl:param name="toTranslate" />
|
||||||
|
<xsl:value-of select="translate($toTranslate,',' , ';')" />
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="metaDate"><xsl:param name="date" />20<xsl:value-of select="substring($date, 8, 2)" />
|
||||||
|
<xsl:text>-</xsl:text>
|
||||||
|
<xsl:variable name="month"
|
||||||
|
select="substring($date, 4, 3)"/>
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="$month='Jan'">01</xsl:when>
|
||||||
|
<xsl:when test="$month='Feb'">02</xsl:when>
|
||||||
|
<xsl:when test="$month='Mar'">03</xsl:when>
|
||||||
|
<xsl:when test="$month='Apr'">04</xsl:when>
|
||||||
|
<xsl:when test="$month='May'">05</xsl:when>
|
||||||
|
<xsl:when test="$month='Jun'">06</xsl:when>
|
||||||
|
<xsl:when test="$month='Jul'">07</xsl:when>
|
||||||
|
<xsl:when test="$month='Aug'">08</xsl:when>
|
||||||
|
<xsl:when test="$month='Sep'">09</xsl:when>
|
||||||
|
<xsl:when test="$month='Oct'">10</xsl:when>
|
||||||
|
<xsl:when test="$month='Nov'">11</xsl:when>
|
||||||
|
<xsl:when test="$month='Dec'">12</xsl:when>
|
||||||
|
</xsl:choose>
|
||||||
|
<xsl:text>-</xsl:text>
|
||||||
|
<!-- Day -->
|
||||||
|
<xsl:value-of select="number(substring($date, 1, 2))" />
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="aplaws:bodyDebug">
|
||||||
|
<div class="bodyDebug">
|
||||||
|
<xsl:apply-templates select="ui:debugPanel"/>
|
||||||
|
<xsl:apply-templates select="bebop:structure"/>
|
||||||
|
</div>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
|
||||||
|
</xsl:stylesheet>
|
||||||