Changeset 22683 in main

03/11/21 18:54:51 (5 weeks ago)

view - Implemented normal content path and published path with updated comments. Removed report requests as not currently implemented in v3 with no signs of ever being. css tweaks.

11 edited


  • trunk/ibisph-view/src/main/webapp/WEB-INF/config/

    r20915 r22683  
    2 # Site Specific Property Overrides for the IBIS-PH View app/system.  These values
    3 # are applied to the Spring context configuration bean definitions.  The form is:
    4 # beanID.propertyName = value
     2# Site Specific String Property Overrides for the IBIS-PH View app/system. 
     3# These values are Spring context configuration "string" bean definitions i.e.
     4# only string type bean values can be specified here.  See the ss.xml to override
     5# actual bean definitions.  The form is: beanID.propertyName = value
    6 # IMPORTANT: For these values to be used, they must be referenced.  This is
    7 # typically specified via the siteSpecificPropertyOverrides bean which is a
    8 # default core implementation that is contained in the config/srping/SiteSpecific.xml
    9 # file. 
     7# IMPORTANT: For these values to be used, this string property override must be
     8# referenced.  This is typically specified via the siteSpecificPropertyOverrides
     9# bean which is a default core implementation that is typically contained in the
     10# config/srping/SiteSpecific.xml file.  There is typically a more specific
     11# property override file specified that is used for local development properties
     12# to be specified.  This property file is typically in the user's home directory
     13# (see the siteSpecificPropertyOverrides bean for a complete list of files refd).
    1115# The use of this file is OPTIONAL.  These values can be specified in the ss.xml
    18 # All paths shall have a trailing "/".  Sub paths should never have a leading "/"
     22# Paths shall have a trailing "/".  Sub paths should never have a leading "/"
    1923# but will always have the trailing "/".  Base paths can have a leading "/" as
    2024# this represents the root of the file system.
    23 #--- IBISQ/QueryApplication URL address.  The addresses can include a proxy to
    24 #       the deployed IBIS View system which is allowed to communicate to the backend
    25 #       server, the address to SAS Intrnet, or the actual address of the webserver/
    26 #       IBIS-Q SAS CGI application.
     27#--- IBISQ/QueryApplication URL address.  For local, non sas development the
     28#       addresses can reference a proxy to the deployed IBIS View system which has
     29#       to be configured for the proxy request and is setup for the backend server
     30#       (the address to SAS Intrnet, or the actual address of the webserver/IBIS-Q
     31#       SAS CGI application).
     33#       Proxy request made to a view app that makes the actual ibisq request.
    2835#       HTTPS NOTE: things like can choke
    2936#       because cert is not verified!
    31 # Linux   Example: http://hlcbsas/cgi-bin/hi_iq_func
    32 # Windows Example: http://localhost/cgi-bin/hi_iq_func.exe
    33 # Proxy   Example: (request to another view app that makes the actual ibisq request)
     38# Linux Example:        http://hlcbsas/cgi-bin/hi_iq_func
     39# Windows Example:      http://localhost/cgi-bin/hi_iq_func.exe
     40# Proxy Example:
    3441queryIBISQRequestPath.string =http://localhost/cgi-bin/hi_iq_func.exe
    37 #--- Most adopters should be splitting their XML and JSON content out from the
    38 #        ibisph-view webapp.  This has several advantages like shared data and not
    39 #        having to put any content files in the deployment package.  The main content
    40 #        path is specified below.  The xml and json paths by default are subdirs
    41 #        below the main content path.  Below are examples of how to specify the base
    42 #        content file path used by all "Path" type bean configurations. 
    43 #    Again this simply provides a mechanism to easily locate files to a
    44 #    directory outside of the webapp.  The default location is the relative
    45 #    "" path within the webapp.   
     44#--- Content Paths.  Adopters should be splitting their content from the
     45#       ibisph-view webapp.  This allows the ibis webapp to be seperate from the
     46#       content which allows the content to be managed without having to touch the
     47#       deployed webapp.
     49#       There are two types of content published XML and static content.  Published
     50#       XML is the ibis-admin app's data that is published to XML files (org units,
     51#       topics, measures, published indicators etc.).  Static content include images,
     52#       json, pdfs, HTML_CONTENT XML files, query module XML files, SELECTION XML
     53#       files and any content that is maintained by hand.  Published and static files
     54#       can exist in different places although most adopters will likely keep them
     55#       together.  The exception is if the static content is on a different server
     56#       so that it is more easily managed while the published data is on a server
     57#       that has the ibis data admin app.
    4659#commonContentBasePath.string =../../ibisph-content/
    4760#commonContentBasePath.string =file:/d:/tomcat7/webapps/ibisph-content/
    4962commonContentBasePath.string =../../ibisph-content/
    51 #--- Special Content Path Uses
    52 #    For development users to access QA or production IP XMLs place a local, user
    53 #    property override file in the [user]/ file with an
    54 #    entry like:
    55 #indicatorXMLBasePath.string =
    56 #    This same can be applied to any other directory values like commonContentBasePath.string
    57 #    and ephtContentBasePath.string etc.
     64#--- Example of published XML on different server. 
     65#       The core code defaults to the published XML path being the same as the
     66#       content's XML path which in both cases is the base path with an "xml/" suffix.
     67#       If the published XML is in a different location then both paths should be
     68#       specified.
     69#commonPublishedXMLBasePath.string =
    6880indicatorPreviewFilePath.string =http://localhost/ibisph-admin/view/xml/preview/indicator/profile/
    70 #--- Explicit base server with app context request URL prefix.  If the value is
    71 #        blank then the app uses the first HTTP request's URL for protocol, server
    72 #        name and context path.  For most situations this is perfectly fine being
    73 #        left blank so that the working actual request URL is used.  However, in
    74 #        some deployments behind a proxy or if nervous about the first working request
    75 #        then this value can be specified.  See notes in the commonWebAppBasePathModelMap
     83#--- Explicit base server with app context request URL prefix.  This value is
     84#       the base of all view webapp page link requests.  If the value is blank then
     85#       the app creates a default value that is the first HTTP request's URL for
     86#       protocol, server name and context path.  For most situations this is default
     87#       value is preferred (fine being left blank so that the working actual request
     88#       URL is used).  However, in some deployments behind a proxy or if nervous
     89#       about the first working request not being correct (i.e. mixed HTTP HTTPS
     90#       deployments) then this value can be specified.  See notes in the
     91#       commonWebAppBasePathModelMap
    7692#        (common.xml).  Default value: "".  Below is an example:
    7793#commonWebAppBaseRequestPath.string =
  • trunk/ibisph-view/src/main/webapp/WEB-INF/config/spring/SiteSpecific.xml

    r22591 r22683  
    7272        <import resource="community.xml"/>
    7373        <import resource="topic.xml"/>
    74         <import resource="report.xml"/>
    7574        <import resource="secure.xml"/>
    7675        <import resource="user.xml"/>
    203202                                <entry key="/secure/query/definition/builder/*/*"       value-ref="secureQueryDefinitionBuilderController"/>
    206                                 <!-- R E P O R T -->
    207                                 <entry key="/report/*/*/*.html"                                 value-ref="reportIndicatorViewController"/>
    208                                 <entry key="/report/*/*.html"                                   value-ref="reportHTMLContentController"/>
    211204                                <!-- U S E R   P R O F I L E -->
    212205                                <entry key="/user/Login.html"                                   value-ref="userLoginController"/>
    340333                                <property name="publishedIndicatorsFilePathAndName" value="#{indicatorPublishedIndicatorsFilePathAndName.string}"/>
    341334                                <property name="indicatorProfileFilePath" value="#{indicatorProfileFilePath.string}"/>
    342                                 <property name="documentDAOService"             ref="commonDocumentDAOService"/>
     335                                <property name="documentDAOService"             ref="commonContentDocumentDAOService"/>
    343336                        </bean>
    344337                </property>
  • trunk/ibisph-view/src/main/webapp/WEB-INF/config/spring/common.xml

    r22165 r22683  
    3535        <!--  C O N T E X T S   A N D   P A T H S -->
    3636        <!-- NOTE: Spring 3.0 provides a default servlet context bean that can be
    37                 used to access ServletContext properties via EL: #{servletContext.servletContextName}.
     37                used to access ServletContext properties via EL:
     38                #{servletContext.servletContextName}.
    3839        -->
    3940        <bean id="commonContentBasePath" class="org.ibisph.model.StringHolder">
    4041                <description>
    41                         Base "Content" file path that points to the root of all content.
     42                        Base "Content" file path that points to the root of all static content.
    4243                        This root area includes docs, pdfs, xml, json etc.  This value can
    4344                        be in to form of a complete URL or relative to the webapp's context.
    44                         To be used this value is made into an explicit URL via the
    45                         commonContentBasePathURL bean which is the basis for all content
    46                         requests.
     45                        This string is the value that is passed into the commonContentBasePathURL.
    4746                </description>
    4847                <constructor-arg value=""/>
    5352                        string value, if not a URL, is processed based on the webapp's
    5453                        context path which is returned as a URL which is one of the accepted
    55                         values the XML/XSLT translation is able to process.
     54                        values the XML/XSLT translation is able to process.  This path is
     55                        the root of all static content - json, images, pdf, XML etc.
    5656                </description>
    5757                <property name="targetObject" ref="commonContextAndPathService"/>
    5959                <property name="arguments"><list><value>#{commonContentBasePath.string}</value></list></property>
    6060        </bean>
    61         <bean id="commonXMLBasePathURL" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
     61        <bean id="commonContentXMLBasePathURL" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    6262                <property name="targetObject" ref="commonContextAndPathService"/>
    6363                <property name="targetMethod" value="getPathURL"/>
    6969                <property name="arguments"><list><value>#{commonContentBasePath.string}WEB-INF/xml/</value></list></property>
    7070        </bean>
    7172        <bean id="commonXSLTBasePathURL" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    7273                <property name="targetObject" ref="commonContextAndPathService"/>
    7475                <property name="arguments"><list><value>xslt/</value></list></property>
    7576        </bean>
     79        <bean id="commonPublishedXMLBasePath" class="org.ibisph.model.StringHolder">
     80                <description>
     81                        Base "Published XML" file path that points to the root of all admin
     82                        app published XML.  This includes indicator profiles and validation
     83                        xmls.  This value can be in to form of a complete URL or relative to
     84                        the webapp's context.  This is a simple string value is used by the
     85                        commonPublishedXMLBasePathURL bean which is the actual base used.
     86                </description>
     87                <constructor-arg value="#{commonContentBasePathURL}xml/"/>
     88        </bean>
     89        <bean id="commonPublishedXMLBasePathURL" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
     90                <description>
     91                        Full/explicit base "Published XML" file path.  The commonPublishedXMLBasePath
     92                        string value, if not a URL, is processed based on the webapp's
     93                        context path which is returned as a URL which is one of the accepted
     94                        values the XML/XSLT translation is able to process.
     95                </description>
     96                <property name="targetObject" ref="commonContextAndPathService"/>
     97                <property name="targetMethod" value="getPathURL"/>
     98                <property name="arguments"><list><value>#{commonPublishedXMLBasePath.string}</value></list></property>
     99        </bean>
    77102        <bean id="commonWebAppBaseRequestPath" class="org.ibisph.model.StringHolder">
    111136                        used in the transformation. 
    112137                </description>
    113                 <property name="basePath" ref="commonXMLBasePathURL"/>
     138                <property name="basePath" ref="commonContentXMLBasePathURL"/>
    114139        </bean>
    115140        <bean id="commonVerifiedXMLFilePathModelService" class="org.ibisph.model.VerifiedURLPathGetModelService">
    116                 <property name="basePath" ref="commonXMLBasePathURL"/>
     141                <property name="basePath" ref="commonContentXMLBasePathURL"/>
    117142        </bean>
    118143        <bean id="commonXSLTFilePathModelService" class="org.ibisph.model.VerifiedURLPathGetModelService">
    120145        </bean>
    122         <bean id="commonDocumentDAOService" class="org.ibisph.xml.service.FileStoredDocumentDAO">
     148        <bean id="commonPublishedDocumentDAOService" class="org.ibisph.xml.service.FileStoredDocumentDAO">
     149                <description>
     150                        Provides a file based document get, save, delete service. 
     151                        This service also implements GetModelService so get(filename) works
     152                        and can be used in place of the commonXMLFilePathModelService
     153                        defined above when an actual XML document is wanted. 
     155                        SPEED NOTE: This results in an "DOM4j DOCUMENT".  As such it *MIGHT* 
     156                        be best to only use this for the a model when the XML needs to be
     157                        traversed etc.  Speed appears to be slower compared to having the
     158                        XSLT access a file via the "document()" call.
     159                </description>
     160                <property name="basePath"     ref="commonPublishedXMLBasePathURL"/>
     161                <property name="escapeTextWhenSaving" value="true"/>
     162                <property name="dateFormat"   ref="commonDateFormat"/>
     163                <property name="outputFormat" ref="commonXMLOutputFormat"/>
     164        </bean>
     165        <bean id="commonContentDocumentDAOService" class="org.ibisph.xml.service.FileStoredDocumentDAO">
    123166                <description>
    124167                        Provides a local disk based document get, save, delete service. 
    132175                        XSLT access a file via the "document()" call.
    133176                </description>
    134                 <property name="basePath"     ref="commonXMLBasePathURL"/>
     177                <property name="basePath"     ref="commonContentXMLBasePathURL"/>
    135178                <property name="escapeTextWhenSaving" value="true"/>
    136179                <property name="dateFormat"   ref="commonDateFormat"/>
    251294                <description>Document version of the published AncillaryValues XML.</description>
    252295                <property name="modelMapKey"     value="AncillaryValues"/>
    253                 <property name="getModelService" ref="commonDocumentDAOService"/>
     296                <property name="getModelService" ref="commonPublishedDocumentDAOService"/>
    254297                <property name="filePathAndName" value="ancillary_values.xml"/>
    255298        </bean>
    257300                <description>Document version of the published DataSources XML.</description>
    258301                <property name="modelMapKey"     value="DataSources"/>
    259                 <property name="getModelService" ref="commonDocumentDAOService"/>
     302                <property name="getModelService" ref="commonPublishedDocumentDAOService"/>
    260303                <property name="filePathAndName" value="data_sources.xml"/>
    261304        </bean>
    263306                <description>Document version of the published Dimensions XML.</description>
    264307                <property name="modelMapKey"     value="Dimensions"/>
    265                 <property name="getModelService" ref="commonDocumentDAOService"/>
     308                <property name="getModelService" ref="commonPublishedDocumentDAOService"/>
    266309                <property name="filePathAndName" value="dimensions.xml"/>
    267310        </bean>
    269312                <description>Document version of the published Measures XML.</description>
    270313                <property name="modelMapKey"     value="Measures"/>
    271                 <property name="getModelService" ref="commonDocumentDAOService"/>
     314                <property name="getModelService" ref="commonPublishedDocumentDAOService"/>
    272315                <property name="filePathAndName" value="measures.xml"/>
    273316        </bean>
    275318                <description>Document version of the published ValueTypes XML.</description>
    276319                <property name="modelMapKey"     value="ValueTypes"/>
    277                 <property name="getModelService" ref="commonDocumentDAOService"/>
     320                <property name="getModelService" ref="commonPublishedDocumentDAOService"/>
    278321                <property name="filePathAndName" value="value_types.xml"/>
    279322        </bean>
    281324                <description>Document version of the published ValueAttributes XML.</description>
    282325                <property name="modelMapKey"     value="ValueAttributes"/>
    283                 <property name="getModelService" ref="commonDocumentDAOService"/>
     326                <property name="getModelService" ref="commonPublishedDocumentDAOService"/>
    284327                <property name="filePathAndName" value="value_attributes.xml"/>
    285328        </bean>
    287330                <description>Document version of the published Charts XML.</description>
    288331                <property name="modelMapKey"     value="Charts"/>
    289                 <property name="getModelService" ref="commonDocumentDAOService"/>
     332                <property name="getModelService" ref="commonPublishedDocumentDAOService"/>
    290333                <property name="filePathAndName" value="charts.xml"/>
    291334        </bean>
    293336                <description>Document version of the published Maps XML.</description>
    294337                <property name="modelMapKey"     value="Maps"/>
    295                 <property name="getModelService" ref="commonDocumentDAOService"/>
     338                <property name="getModelService" ref="commonPublishedDocumentDAOService"/>
    296339                <property name="filePathAndName" value="maps.xml"/>
    297340        </bean>
    303346                </description>
    304347                <property name="modelMapKey"     value="OrgUnits"/>
    305                 <property name="getModelService" ref="commonDocumentDAOService"/>
     348                <property name="getModelService" ref="commonPublishedDocumentDAOService"/>
    306349                <property name="filePathAndName" value="org_units.xml"/>
    307350        </bean>
    382425                <property name="sourceModelDateXPathList">
    383426                        <list>
     427                                <value>PUBLISHED_DATE</value>
     428                                <value>MODIFIED_DATE</value>
    384429                                <value>LAST_MODIFIED</value>
    385                                 <value>MODIFIED_DATE</value>
     430                                <value>DATA_AS_OF_DATE</value>
    386431                        </list>
    387432                </property>
    410455        <bean id="commonHTTPResponseHeaders" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    411456                <description>
    412                         common security headers.  See:
    415                         Note: ajax json requests are typically blocked by most browsers (CORS).
    416                         e.g. file:, http:, https:, ftp: are not accepted if outside current
    417                         domain when making a XMLHttpRequest. 
    418                         see:
     457                        Common, standard headers that are included in a page request response. 
     458                        Currently these are mostly security headers for CORS and XSS. 
     460                        Same Origin Policies (SOP):
     461                        Modern broswers implement SOP which by default requires any ajax
     462                        type request to be to the SO.  Same origin is defined as a tuple
     463                        (protocol, server, port).  Note that SOP does not control accessing
     464                        outside img, script, css, iframe, object type resource requests.
     466                        Cross-origin resource sharing (CORS):
     467                        Server specified, browser implemented resource restriction mechanism
     468                        to set control of the SOP for ajax type requests.
     470                        IBIS Considerations:
     471                        To allow other outside sites the ability to allow AJAX access to IBIS
     472                        data and visulations CORS is used to open this up to the world.  As
     473                        long as secure requests are properly configured to use the app's
     474                        spring security (which is user session based (token)) an outside app
     475                        can not fake or forge itself
     477                        web.xml handles setting the http-only flag for the session id cookie.
     478                </description>
     479                <property name="properties">
     480                        <props>
     481                                <!--
     482                                        MOST browsers are SOP (same origin policy) e.g. resources MUST
     483                                        come from the same request tuple (protocol, server name, port).
     485                                        CORS header: * = allow page to access anything.  Otherwise
     486                                        is specified as a specific value the resources address must
     487                                        contain.  Best practice is trifecta domain (protocol, server,
     488                                        port) but supposedly can be any text value that causes a match.
     489                                        There can only be one value specified.  If needing multiples
     490                                        then have to implement dynamic headers Having
     492                                                                  Access-Control-Allow-Origin
     493                        header specifies what resources the page is allowed to access.  The
     494                        browser is responsible to check and control any resource loaded (e.g.
     495                        fonts, AJAX requests).  To be safe, the default now is for Web browsers to not
     496                        permit a web page to access resources who origin differ than that of
     497                        the current page.  Ie ajax json/XMLHttpRequest requests are typically
     498                        blocked if outside current domain.  See:
    421501                        Can also set header name="Access-Control-Allow-Origin" value="*"
    422                 </description>
    423                 <property name="properties">
    424                         <props>
     503                                -->
    425504                                <prop key="Access-Control-Allow-Origin">*</prop>
    467546                                                browser and system info, and send any of that data to
    468547                                                any server etc.
    469                                         - Google Analytics is done with script so no third party
    470                                                 stuff going on here.  GA does store the _gid and _ga
    471                                                 cookies but all of the work is done by including their
     548                                        - Google Analytics is done with script that a website
     549                                                intentionally embeds.  GA does store the _gid and _ga
     550                                                cookies but all of the work is done by embedding their
    472551                                                js to do tracking.
    473552                                        - Client storage for js should be done with local storage. 
  • trunk/ibisph-view/src/main/webapp/WEB-INF/config/spring/community.xml

    r20188 r22683  
    6666                                <ref bean="indicatorIndicatorSetsModelMap"/>
    67                                 <ref bean="indicatorIndicatorProfileFilePathModelMap"/>
    6867                                <ref bean="indicatorPublishedIndicatorsModelMap"/>
     68                                <ref bean="indicatorIndicatorProfileXMLFilePathModelMap"/>
    7070                                <ref bean="communityControlFilePathModelMap"/>
    9191                                <ref bean="indicatorIndicatorSetsModelMap"/>
    92                                 <ref bean="indicatorIndicatorProfileFilePathModelMap"/>
    9392                                <ref bean="indicatorPublishedIndicatorsModelMap"/>
     93                                <ref bean="indicatorIndicatorProfileXMLFilePathModelMap"/>
    9595                                <ref bean="communityControlFilePathModelMap"/>
  • trunk/ibisph-view/src/main/webapp/WEB-INF/config/spring/indicator.xml

    r22581 r22683  
    2121                        IP files from their enviro (so they don't have to copy or repub IPs).
    2222                </description>
    23                 <constructor-arg value="#{commonContentBasePath.string}xml/indicator/"/>
     23                <constructor-arg value="#{commonPublishedXMLBasePath.string}indicator/"/>
    2424        </bean>
    2525        <bean id="indicatorXMLBasePathURL" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    2626                <description>
    27                         Primary XML URL model for the XSLT processing.  Used for IP requests.
     27                        Primary "xml/indicator" path URL used for ip sets and published xml files.
    2828                </description>
    2929                <property name="targetObject" ref="commonContextAndPathService"/>
    3232        </bean>
    34         <bean id="indicatorProfileFilePath" class="org.ibisph.model.StringHolder">
    35                 <description>
    36                         Sub path that localizes the profiles portion of the IP path.  The xml
    37                         service uses this along with the base path to build/locate the actual
    38                         real file's path. 
     34        <bean id="indicatorProfileXMLFilePath" class="org.ibisph.model.StringHolder">
     35                <description>
     36                        This is NOT a base path - it is a sub directory path segment that
     37                        localizes the more specific indicator "profile"s sub directory. This
     38                        is the "filepath" that is passed into the get file from the last
     39                        segment of the request.  It works because the "indicator" xml file
     40                        service that the model map uses is set to use the indicatorXMLBasePathURL
     41                        as it's base path.  This value will likely never change but it put
     42                        here to localize as it's used in several places.
    3943                </description>
    4044                <constructor-arg value="profile/"/>
    4145        </bean>
    4247        <bean id="indicatorPublishedIndicatorsFilePathAndName" class="org.ibisph.model.StringHolder">
    43                 <constructor-arg value="published_indicators.xml"/>
     48                <constructor-arg value="#{indicatorXMLBasePath.string}published_indicators.xml"/>
    4449        </bean>
    4550        <bean id="indicatorIndicatorSetsFilePathAndName" class="org.ibisph.model.StringHolder">
    46                 <constructor-arg value="indicator_sets.xml"/>
     51                <constructor-arg value="#{indicatorXMLBasePath.string}indicator_sets.xml"/>
    4752        </bean>
    4853        <bean id="indicatorCategorziedIndexFilePathAndName" class="org.ibisph.model.StringHolder">
    49                 <constructor-arg value="CategorizedSelection.xml"/>
     54                <constructor-arg value="#{indicatorXMLBasePath.string}CategorizedSelection.xml"/>
    5055        </bean>
    5257        <bean id="indicatorPreviewFilePath" class="org.ibisph.model.StringHolder">
    5358                <description>
    54                         Base admin app XML preview Path that an xml service uses to build/
    55                         locate the complete file path. 
     59                        Base admin app XML preview path that an xml service uses to build/
     60                        locate the indicator XML file(s).  
    5661                </description>
    5762                <constructor-arg value="http://localhost/ibisph-admim/xml/preview/indicator/profile/"/>
    6267        <bean id="indicatorXMLFilePathModelService" class="org.ibisph.model.URLPathGetModelService">
    6368                <description>
    64                         Service that builds the actual, fully specified, explicit URL path.
    65                         The base path can be a string or URL which in this case is the IP
    66                         base path URL.  The model map then specifies an actual filename to
    67                         which is the appended to the base path to provide the full file path
    68                         URL.  Common was used but implemented an IP specific version so adopters
    69                         can have a local dev enviro access production IP XML files. 
     69                        Service that builds the fully specified, explicit URL path used by
     70                        the transformation engine (or set as a parameter) to access an 
     71                        indicator XML file.  The base path can be a string or URL (in this
     72                        case is the indicator XML base path URL).  The model map code that
     73                        use this service either grabs the last segment of the request to
     74                        determine the full indicator XML filename or uses an injected value.
     75                        This value is then passed to this service to build the actual full
     76                        path and filename used to reference the XML file.  The Common
     77                        "published" file service is very close to this service except it is
     78                        a document service.
    7079                </description>
    7180                <property name="basePath" ref="indicatorXMLBasePathURL"/>
    7281        </bean>
    73         <bean id="indicatorXMLServiceModelMapProperties" abstract="true">
    74                 <description>
    75                         XML model map properties used by the IP XML requests.
    76                 </description>
    77                 <property name="modelMapKey" value="#{commonXMLModelMapKey.string}"/>
    78                 <property name="getModelService" ref="indicatorXMLFilePathModelService"/>
    79         </bean>
     85<!-- TODO REMOVE:
    8186        <bean id="indicatorDocumentDAOService" class="org.ibisph.xml.service.FileStoredDocumentDAO">
    8287                <description>
    83                         Provides an IP specific base path XML document loader that is used
    84                         to load an XML document that is then put into model map.  This is
    85                         needed when an XML doc is needed but is not the primary XML e.g. is
    86                         a secondary XML passed as a parameter.  Typical use is the published
    87                         IPs for topic pages etc.
     88                        Indicator base path XML document loader used to load an XML document
     89                        that is then put into model map.  This is needed when an XML doc is
     90                        needed but is not the primary XML e.g. is a secondary XML passed as
     91                        a parameter.  Typical use is the published IPs for topic pages etc.
    8892                </description>
    8993                <property name="basePath"     ref="indicatorXMLBasePathURL"/>
    9296                <property name="outputFormat" ref="commonXMLOutputFormat"/>
    9397        </bean>
    96100        <!--  M O D E L   M A P S -->
    97         <bean id="indicatorProfileFilePathAndNameModelMap"
     101        <bean id="indicatorSelectedRelationNameModelMap" class="org.ibisph.indicatorprofile.modelmap.RelationNameFromHTTPRequest">
     102                <property name="modelMapKey" value="RelationName"/>
     103        </bean>
     106        <bean id="indicatorXMLServiceModelMapProperties" abstract="true">
     107                <description>
     108                        Indicator base path primary XML model map properties used for most 
     109                        indicator and IP modelmap based requests.
     110                </description>
     111                <property name="modelMapKey" value="#{commonXMLModelMapKey.string}"/>
     112                <property name="getModelService" ref="indicatorXMLFilePathModelService"/>
     113        </bean>
     115        <bean id="indicatorProfileXMLFilePathAndNameModelMap"
    98116                class="org.ibisph.web.modelmap.ModelFromHTTPRequestPathLastSegment"
    99117                parent="indicatorXMLServiceModelMapProperties"
    100118        >
    101119                <description>
    102                         Main IP path and filename URL model map used for all IP XML requests
    103                         that specifies the actual IP XML file as the last segment in the
     120                        Main IP path with filename URL model map used for all IP "file" XML
     121                        requests where the actual IP XML file as the last segment in the
    104122                        request path.  This model map uses the indicatorXMLFilePathModelService
    105                         which has it's base using the indicatorXMLBasePathURL.  The path value
    106                         is simply a sub path to the profiles" directory which is underneath
     123                        which has the base path set as indicatorXMLBasePathURL (xml/indicator).
     124                        The path value is simply a sub path to the profiles" directory which is underneath
    107125                        the IP XML dir.  This model map then uses the request's filename to
    108126                        finish determining which IP XML file to use as the primary XML file
    109127                        for XSLT/XML trans.
    110128                </description>
    111                 <property name="filePath" value="#{indicatorProfileFilePath.string}"/>
    112         </bean>
    114         <bean id="indicatorSelectedRelationNameModelMap" class="org.ibisph.indicatorprofile.modelmap.RelationNameFromHTTPRequest">
    115                 <property name="modelMapKey" value="RelationName"/>
     129                <property name="filePath" value="#{indicatorProfileXMLFilePath.string}"/>
    116130        </bean>
    118132        <bean id="indicatorPublishedIndicatorsModelMap" class="org.ibisph.modelmap.ModelFromFilePathAndNameService">
    119                 <description>Document version of the published IPs XML typically used for Topics.</description>
     133                <description>
     134                        Document version of the published IPs XML - used as a 2ndary XML
     135                        model for Community and Topic pages.
     136                </description>
    120137                <property name="modelMapKey"     value="PublishedIndicators"/>
    121                 <property name="getModelService" ref="indicatorDocumentDAOService"/>
    122                 <property name="filePathAndName" value="#{indicatorPublishedIndicatorsFilePathAndName.string}"/>
     138                <property name="getModelService" ref="commonPublishedDocumentDAOService"/>
     139                <property name="filePathAndName" value="#{indicatorPublishedIndicatorsFilePathAndName.string}"/>
    123140        </bean>
    124141        <bean id="indicatorPublishedIndicatorsXMLModelMap"
    127144        >
    128145                <description>
    129                         File version of the published IPs XML typically used for IP Indexes.
    130                         Published IPs path and filename URL model map with the main XML
    131                         modelmap key.  Used for all index type requests where the primary XML
    132                         is the published IPs file.  This model map uses the
    133                         indicatorXMLFilePathModelService which has it's base using the
    134                         indicatorXMLBasePathURL.  The path value is simply a the published
    135                         ips filename which is typically at the root of the IP XML dir. 
    136                         NOTE: the document version of the published IPs that is used
    137                         when published IPs are needed but where they are not the primary XML.
     146                        File based published IPs XML model map where the complete file path
     147                        and name are the primary XML model.  This model is typically used
     148                        for IP Indexes. 
    138149                </description>
    139150                <property name="filePathAndName" value="#{indicatorPublishedIndicatorsFilePathAndName.string}"/>
    140151        </bean>
    142         <bean id="indicatorIndicatorProfileFilePathModelMap" class="org.ibisph.modelmap.ModelFromFilePathAndNameService">
    143                 <description>
    144                         IP filepath that is passed as an XSLT param value that allows the XSLT
    145                         pages to dynamically access a bunch of IP XMLs.  Used for community
    146                         IPs and QFs demographic table.
     153        <bean id="indicatorIndicatorProfileXMLFilePathModelMap" class="org.ibisph.modelmap.ModelFromFilePathAndNameService">
     154                <description>
     155                        IP filepath that is passed as an XSLT param value that allows XSLT
     156                        code to loop/access a bunch of IP XMLs.  Used for community IPs
     157                        report and community Quick Facts demographic table etc.
    147158                </description>
    148159                <property name="getModelService" ref="indicatorXMLFilePathModelService"/>
    149160                <property name="modelMapKey"     value="IndicatorProfileXMLFilePath"/>
    150                 <property name="filePathAndName" value="#{indicatorProfileFilePath.string}"/>
     161                <property name="filePathAndName" value="#{indicatorProfileXMLFilePath.string}"/>
    151162        </bean>
    152163        <bean id="indicatorIndicatorSetsModelMap" class="org.ibisph.modelmap.ModelFromFilePathAndNameService">
    153164                <description>
    154165                        Document version of the indicator sets IPs XML which is a 2ndary
    155                         IP set XML.  This is typically used for all community controllers to
    156                         allow show/change alternative IP sets.
     166                        XML model passed as a param to the XSLT.  This is typically used for
     167                        all community controllers to allow show/change alternative IP sets.
    157168                </description>
    158169                <property name="modelMapKey"     value="IndicatorSets"/>
    159                 <property name="getModelService" ref="indicatorDocumentDAOService"/>
    160                 <property name="filePathAndName" value="#{indicatorIndicatorSetsFilePathAndName.string}"/>
     170                <property name="getModelService" ref="commonPublishedDocumentDAOService"/>
     171                <property name="filePathAndName" value="#{indicatorIndicatorSetsFilePathAndName.string}"/>
    161172        </bean>
    171182                <property name="view" ref="indicatorAlphabeticalIndexView"/>
    172183        </bean>
    173         <bean id="indicatorOrgUnitIndexController" parent="commonModelMapListController">
    174                 <property name="modelMapList">
    175                         <list>
    176                                 <ref bean="indicatorPublishedIndicatorsXMLModelMap"/>
    177                                 <ref bean="commonOrgUnitsModelMap"/>
    178                         </list>
    179                 </property>
    180                 <property name="view" ref="indicatorOrgUnitIndexView"/>
     184        <bean id="indicatorDemographicIndexController" parent="indicatorAlphabeticalIndexController">
     185                <property name="view" ref="indicatorDemographicIndexView"/>
    181186        </bean>
    182187        <bean id="indicatorDataSourceIndexController" parent="commonModelMapListController">
    189194                <property name="view" ref="indicatorDataSourceIndexView"/>
    190195        </bean>
    191         <bean id="indicatorDemographicIndexController" parent="indicatorAlphabeticalIndexController">
    192                 <property name="view" ref="indicatorDemographicIndexView"/>
     196        <bean id="indicatorOrgUnitIndexController" parent="commonModelMapListController">
     197                <property name="modelMapList">
     198                        <list>
     199                                <ref bean="indicatorPublishedIndicatorsXMLModelMap"/>
     200                                <ref bean="commonOrgUnitsModelMap"/>
     201                        </list>
     202                </property>
     203                <property name="view" ref="indicatorOrgUnitIndexView"/>
    193204        </bean>
    237248        </bean>
    239251        <!--
    240                 NOTE: For IP's that are on a remote machine/accessed via URL, the modelmap
    241                 is a file path not a document so the XML date can't be accessed.  For IPVs
    242                 the IPV XML is loaded in later model map processing because it needs to
    243                 determine the view XSLT to be used.  As such the XML date is returned for
    244                 view XMLs - even if the file is on a remote server.  If this is a problem
    245                 in the future then similar code can be applied to open the IP XML and put
    246                 into the map.
     252                MODIFIED DATE NOTE: For IP's that are on a remote machine/accessed via
     253                URL, the modelmap is a file path not a document so the XML date can't be
     254                accessed.  For IPVs the IPV XML is loaded in later model map processing
     255                because it needs to determine the view XSLT to be used.  As such the XML
     256                date is returned for view XMLs - even if the file is on a remote server. 
     257                If this is a problem in the future then similar code can be applied to
     258                open the IP XML and put into the map.
    247259        -->
    248260        <bean id="indicatorProfileControllerProperties" abstract="true" parent="commonModelMapListController">
    256268                                <ref bean="commonValueAttributesModelMap"/>
    257269                                <ref bean="commonValueTypesModelMap"/>
    258                                 <ref bean="indicatorProfileFilePathAndNameModelMap"/>
     270                                <ref bean="indicatorProfileXMLFilePathAndNameModelMap"/>
    259271                        </list>
    260272                </property>
    285         <!-- this controller loads the XML doc so that the view's view can be read
    286                 and injected.
    287         -->
    288297        <bean id="indicatorViewController" parent="commonModelMapListController">
     298                <description>
     299                        Loads the XML doc so view's view can be read from request.
     300                </description>
    289301                <property name="modelMapList">
    290302                        <list>
    296308                                <ref bean="commonValueAttributesModelMap"/>
    297309                                <ref bean="commonValueTypesModelMap"/>
    298                                 <ref bean="indicatorProfileFilePathAndNameModelMap"/>
     310                                <ref bean="indicatorProfileXMLFilePathAndNameModelMap"/>
    299311                                <bean class="org.ibisph.indicatorprofile.modelmap.IndicatorViewViewTemplate">
    300                                         <property name="documentDAOService"     ref="commonDocumentDAOService"/>
     312                                        <property name="documentDAOService"     ref="commonPublishedDocumentDAOService"/>
    301313                                        <property name="XSLTURLGetModelService" ref="commonXSLTFilePathModelService"/>
    302314                                </bean>
    310322                        <list>
    311323                                <ref bean="indicatorSelectedRelationNameModelMap"/>
    312                                 <ref bean="indicatorProfileFilePathAndNameModelMap"/>
     324                                <ref bean="indicatorProfileXMLFilePathAndNameModelMap"/>
    313325                                <ref bean="commonOrgUnitsModelMap"/>
    314326                        </list>
  • trunk/ibisph-view/src/main/webapp/WEB-INF/config/spring/query-definition.xml

    r21322 r22683  
    3131        <bean id="queryDefinitionXMLService" class="org.ibisph.querydefinition.service.QueryDefinitionXML">
    3232                <property name="filePath"           value="query/definition"/>
    33                 <property name="documentDAOService" ref="commonDocumentDAOService"/>
     33                <property name="documentDAOService" ref="commonContentDocumentDAOService"/>
    3434        </bean>
    3535        <bean id="queryDefinitionDefinitionToModuleService" class="org.ibisph.querydefinition.service.QueryDefinitionXMLToQueryModuleXML"/>
  • trunk/ibisph-view/src/main/webapp/css/MegaMenu.css

    r22639 r22683  
    245245nav .MegaMenu .Body .Block .Introduction
    247         color:                          #e8e8e8;
     247        background-color:       #5b7b9b; /*c2d7f840;*/
     248        color:                          #f0f0f0;        /*white  #e8e8e8;*/
    248249        font-size:                      0.9rem;
    249250        line-height:            1.4rem;
    250         padding:                        12px 0 12px 8px;
     251        padding:                        12px 8px 12px 8px;
    252253nav .MegaMenu .Body .Block ul li .Introduction a
  • trunk/ibisph-view/src/main/webapp/css/_general.css

    r22639 r22683  
     143        display:                        inline-block;
     144        vertical-align:         top;
    143145        color:                          inherit;
    209211        font-family:            "WebComponentsIcons";
    210212        background-color:       #FF3500;
     213        color:                          white;
    211214        speak:                          none;
  • trunk/ibisph-view/src/main/webapp/xslt/html/community/indicators/Page.xslt

    r22274 r22683  
    128128                                </ul>
    129129                        </footer>
    130                 </xsl:if>
     130<!-- The table's row span messes with things converting - throws jquery error.
     132Also, the background coloring of state and us cells does not work.
     133   <script>
     134        $(document).ready(function() {
     135            $(".Info.Comparison").kendoGrid({
     136                sortable: true
     137            });
     138        });
     139    </script>
     141        </xsl:if>
    132143        </xsl:template>
    148159        >
    149160                <xsl:param name="indicatorName"/>
     162                <xsl:param name="indicator" select="document(concat($Page.indicatorProfileXMLFilePath, $indicatorName, '.xml'), /)/INDICATOR"/>
     163                <xsl:param name="indicator" select="NULL"/>
    150165                <xsl:param name="indicator" select="document(concat($Page.indicatorProfileXMLFilePath, $indicatorName, '.xml'), /)/INDICATOR"/>
    188203                <tr>
    189204                        <td class="Indicator">
    190                                 <div class="Help Popup Info FontIcon Right">
     205                                <span class="Popup Help Info FontIcon Right">
    191206                                        <div class="Container">
    192207                                                <div class="Content">
    194209                                                </div>
    195210                                        </div>
    196                                 </div>
     211                                </span>
    197212                                <a href="{$indicatorBaseRequsetPath}summary/{$communityIndicator/NAME}.html"
    198213                                        title="Click here to see a more detailed comparison of {$communityIndicator/TITLE}" class="Block"
  • trunk/ibisph-view/src/main/webapp/xslt/html/indicator/profile/important_facts/Page.xslt

    r20308 r22683  
    4242                <xsl:call-template name="Indicator.denominator"/>
    44                 <xsl:call-template name="Indicator.viewDataIssues"/>
    4644                <xsl:call-template name="Indicator.whyImportant"/>
  • trunk/ibisph/src/main/java/org/ibisph/log/

    r17017 r22683  
    99import javax.servlet.ServletContextListener;
    11 import org.ibisph.util.StrLib;
    1211import org.slf4j.ILoggerFactory;
    1312import org.slf4j.LoggerFactory;
    2019import ch.qos.logback.core.util.StatusPrinter;
     21import org.ibisph.util.StrLib;
Note: See TracChangeset for help on using the changeset viewer.