Mark, I was kind of trying to do this.  I started by creating an ItemViewerNew 
( transformer ) using the esiting ItemViewer that was already there but 
modifying as necessary to have the reason for withdraw show up on the short 
display.  According to what you are saying I should be able to create this new 
ItemViewerNew transformer without ( hopefully ) impacting the theme, but I’m 
not seeing it.  Don’t I need a new theme to put the reason code just above 
where the bitstreams are listed, and how do I eliminate the capability to click 
on the link that lets you go to  the bitstream.  Just like here:

http://deepblue.lib.umich.edu/handle/2027.42/34788


From: Mark Diggory [mailto:[email protected]]
Sent: Friday, July 22, 2011 11:32 AM
To: Blanco, Jose
Cc: [email protected]; Mark H. Wood
Subject: Re: [Dspace-tech] from aspect to theme

Jose,

Storing the reason for the withdraw in the metadata is sensible for the moment.

I'm not so sure you would need to create the second view/DSpaceObject type to 
attain rendering the output of a tombstone page.


           <xsl:when test="@LABEL='DSpace Item 2'">
               <xsl:call-template name="itemSummaryList-DIM-2"/>
           </xsl:when>


If a tombstone is put into place when the item is in a withdrawn state.  
AuthorizationManager and the XMLUI are going to try to block access to render 
the item for users without READ permissions on the Item, forcing them to view a 
password login or 403/401 error page that they do not have the correct 
permissions to view the item.

I would extend at this point of the XMLUI so that there is another option to 
only render the Tombstone when the XMLUI makes the decision to redirect to an 
error page or a login page.  The conditions would then be

a.) Withdrawn? forward to tombstone page
b.) Restricted? forward to restricted page with choice to login

You can just write this tombstone page as a JAVA Transformer and get the Item 
directly. This will allow you to avoid heavily altering the DSpaceObject type 
in the mets generation and the controller logic.

By using this approach, you avoid going deep into making rendering decisions 
and having to alter java code and most of the implementation should just be in 
cocoon site maps and xslts.

See this decision making in the ArtifactBrowser…
http://scm.dspace.org/svn/repo/dspace/trunk/dspace-xmlui/dspace-xmlui-api/src/main/resources/aspects/ArtifactBrowser/sitemap.xmap




            <!-- restricted resource -->

                        <map:match pattern="restricted-resource">

                                <map:transform type="RestrictedItem"/>

                                <map:serialize type="xml"/>

                        </map:match>





            <!-- Handle specific features -->

                        <map:match pattern="handle/*/**">



                                <!-- Inform the user that the item they are 
viewing is a restricted resource -->

                                <map:match 
pattern="handle/*/*/restricted-resource">

                                        <map:transform type="RestrictedItem"/>

                                        <map:serialize type="xml"/>

                                </map:match>



and further down the behavior that renders the restricted-resource view.



<map:match type="HandleAuthorizedMatcher" pattern="!READ">

                                                <map:select 
type="AuthenticatedSelector">

                                                        <map:when 
test="eperson">

                                                                <map:transform 
type="RestrictedItem"/>

                                                                <map:serialize/>

                                                        </map:when>

                                                        <map:otherwise>

                                                                <map:act 
type="StartAuthentication">

                                                                        
<map:parameter name="header" 
value="xmlui.ArtifactBrowser.RestrictedItem.auth_header"/>

                                                                        
<map:parameter name="message" 
value="xmlui.ArtifactBrowser.RestrictedItem.auth_message"/>

                                                                </map:act>

                                                                <map:serialize/>

                                                        </map:otherwise>

                                                </map:select>

                                        </map:match>


Augmenting these with further conditional logic to handle that case where the 
item is withdrawn would be to create another selector in java that tested if 
the item was withdrawn and using it to render a transformer that got that 
detail from the DSpace Item directly and rendered it as DRI elements without 
actually retrieving the METS representation.  This would be something that 
could be added into the site maps and codebase of the ArtifactBrowser aspect 
without it impacting the theming tier much at all, thus other institutions can 
immediately get the feature on the next upgrade without altering their theming.

Best,
Mark

On Fri, Jul 22, 2011 at 7:05 AM, Blanco, Jose 
<[email protected]<mailto:[email protected]>> wrote:
Mark,

I'm working on trying to get tombstone behavior to work in the xmlui 
environment.  I have it working on in the jspui webapp.

So, I have successfully changed an aspect so that when an item is withdrawn a 
pick list of 3 options ( reasons ) for withdrawing the items is presented to 
the user.  I have also changed the code so that the "reason" is stored in a 
newly created dc element ( description.withdrawalreason ).  Now what I want is 
for when the user goes to the item, instead of getting an authentication 
request, he/she gets an item view page that looks just like the short display 
but shows the reason just above the where the bitstreams are listed and disable 
the ability to view the bitstream.  Here is an example from the jspui area:


http://deepblue.lib.umich.edu/handle/2027.42/34788

So I created a new aspect which is  a copy of ItemViewer.pm and have it called 
from the sitemap when there is no READ permission on an Item ( this will have 
to fine tuned to be more specific - like the item has a dc element with a 
withdrawalreason, but for now I can work with this ), so I'm trying to change 
my new ItemViewer file to create a DRI object that will render such a page.

Does this help better understand where I'm at?  This change was fairly straight 
forward in the JSPUI world.

-Jose

-----Original Message-----
From: Mark H. Wood [mailto:[email protected]<mailto:[email protected]>]
Sent: Friday, July 22, 2011 9:15 AM
To: [email protected]<mailto:[email protected]>
Subject: Re: [Dspace-tech] from aspect to theme

Part of the point of XMLUI's design is that Aspects and Themes aren't directly 
connected.  Aspects put stuff into the DRI for any Theme to use (or not) as it 
sees fit.

A Theme is selected by the URI path to the page to be composed.  An Aspect can 
leave hints upon which a Theme can base decisions, but that's about all it can 
do in that direction.

I agree that it would help if we heard more about the behavior you want the 
user to see, not in terms of DSpace components but rather of content, 
composition, and action.

--
Mark H. Wood, Lead System Programmer   [email protected]
Asking whether markets are efficient is like asking whether people are smart.
------------------------------------------------------------------------------
10 Tips for Better Web Security
Learn 10 ways to better secure your business today. Topics covered include:
Web security, SSL, hacker attacks & Denial of Service (DoS), private keys,
security Microsoft Exchange, secure Instant Messaging, and much more.
http://www.accelacomm.com/jaw/sfnl/114/51426210/
_______________________________________________
DSpace-tech mailing list
[email protected]<mailto:[email protected]>
https://lists.sourceforge.net/lists/listinfo/dspace-tech



--
Mark R. Diggory
@mire - www.atmire.com<http://www.atmire.com/>
2888 Loker Avenue East - Suite 305 - Carlsbad - CA - 92010
Esperantolaan 4 - Heverlee 3001 - Belgium
------------------------------------------------------------------------------
10 Tips for Better Web Security
Learn 10 ways to better secure your business today. Topics covered include:
Web security, SSL, hacker attacks & Denial of Service (DoS), private keys,
security Microsoft Exchange, secure Instant Messaging, and much more.
http://www.accelacomm.com/jaw/sfnl/114/51426210/
_______________________________________________
DSpace-tech mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/dspace-tech

Reply via email to