+1 (with the option 2). Guillaume
2014-06-30 11:59 GMT+02:00 Eduard Moraru <[email protected]>: > +1, but hopefully without duplicating the doc.content field in a new > xproperty. > > Thanks, > Eduard > > > On Mon, Jun 30, 2014 at 10:54 AM, [email protected] <[email protected]> > wrote: > > > > > > > > > > > On 30 Jun 2014 at 09:45:58, Marius Dumitru Florea ( > > [email protected](mailto:[email protected])) > > wrote: > > > > > On Mon, Jun 30, 2014 at 9:50 AM, [email protected] wrote: > > > > > > > > Hi devs, > > > > > > > > Problem > > > > ======= > > > > > > > > This week end I’ve had an idea that solves the following issue: > > > > > > > > - Make it easy for the user to be able to change his wiki's home page > > > > - Make it understandable when clicking “edit” on the home page > > > > > > > > Solution > > > > ========= > > > > > > > > At some point in the past, I moved the dashboard which was on the > home > > page to the Dashboard space. My rationale at the time was: > > > > - if the user removes the home page then the user will still be able > > to navigate to the Dashboard by clicking on the “Dashboard” link in the > > Applications Panel > > > > - when editing the home page it’s “just” an Include > > > > > > > > Said differently, I considered that the home page can be configured > to > > point to any app. > > > > > > > > This is what I’d like to push for and make it easy for the user to > > configure the home page so that it can point to any app. > > > > > > > > Implementation > > > > =============== > > > > > > > > - A HomePage.HomePageClass XClass with one “reference” field which is > > the reference to the document to include from the home page (the app to > > point to if you prefer) > > > > - A HomePage.HomePageSheet which is bound to the > HomePage.HomePageClass > > > > - One instance of the HomePage.HomePageClass put in Main.WebHome so > > that when you click “edit” on the home page, HomePage.HomePageSheet is > > called and displays some instructions about changing the home page. > Here’s > > an example: > > > > > > > > > > > > > > https://www.evernote.com/shard/s119/sh/b682040d-6a09-4cfc-b6aa-1eab4b4d8d5e/f970d4cd4c0e2e73742e9f6e6fb3793c > > > > > > I'd also add a link to "use a blank page" which would take the user to > > > the wiki/wysiwyg edit mode for the home page and let him type any > > > content there, considering that the sheet will display this content > > > when present, as you say below. > > > > Yes. > > > > > > Here’s the content of HomePageSheet (not finished, I still need to > > code the part that changes the “reference” property): > > > > > > > > {{velocity}} > > > > #if ($xcontext.action == 'edit') > > > > #set ($previewenabled = 'false') > > > > The content of this home page can be the content of any page you > wish. > > > > > > > > Right now it is displaying the content of the > > [[$doc.getValue('reference')>>$doc.getValue('reference')]] page. > > > > > > > > In order to change it, click the "Use as Home Page" link in the table > > below for the page you wish to use as your new home page. > > > > > > > > #set($collist = ['doc.name', 'doc.space', 'doc.date', 'doc.author', > > '_actions']) > > > > #set($colprops = { > > > > 'doc.title' : { 'type' : 'text' , 'size' : 30, 'link' : 'view' }, > > > > 'doc.fullName' : { 'type' : 'text' , 'size' : 30, 'link' : 'view' }, > > > > 'doc.name' : { 'type' : 'text' , 'size' : 30, 'link' : 'view' }, > > > > 'doc.space' : { 'type' : 'text', 'link' : 'space' }, > > > > 'doc.date' : { 'type' : 'date' }, > > > > 'doc.author' : { 'type' : 'text', 'link' : 'author' }, > > > > '_actions': { 'html': true, 'sortable': false, 'actions': ['Use'] } > > > > }) > > > > #set($options = { > > > > 'translationPrefix' : 'platform.index.' > > > > }) > > > > #livetable('documents' $collist $colprops $options) > > > > #else > > > > ## If there's content don't use the default app > > > > #if ($doc.content.trim().length() > 0) > > > > $doc.content > > > > #else > > > > {{include reference="$doc.getValue('reference')" context="new"/}} > > > > #end > > > > #end > > > > {{/velocity}} > > > > > > > > - Note that if the user forces the edition in wiki mode or WYSIWYG > > mode of the home page he gets an empty page and he can put content and > when > > he saves his content is displayed! (this is achieved through the > following > > portion of the script in HomePageSheet: > > > > > > > > > > > ## If there's content don't use the default app > > > > #if ($doc.content.trim().length() > 0) > > > > $doc.content > > > > #else > > > > {{include reference="$doc.getValue('reference')" context="new"/}} > > > > #end > > > > > > What about the edit mode when content is present? Should the sheet > > > redirect to wiki/wysiwyg edit mode when the content is not empty? But > > > then the user needs a way to 'reset' the initial/factory behaviour, as > > > otherwise he might not know that he needs to empty the content. > > > > Indeed redirecting is a good idea. > > > > Two solutions for the problem you raise: > > - option 1: Have an Admin screen for the HomePage application > > (ConfigurableClass) so that the admin user can always configure the page > to > > point to > > - option 2: Add a “content” field of type TextArea in HomePageClass and > > display it in HomePageSheet when editing in inline mode, saying that the > > user can either choose to display the content of any existing page or if > he > > wants write his own content below. Remark: It would be nice to not have > to > > create a new xproperty and instead point directly to the doc’s content in > > edit mode, maybe we could modify our code to support this ;) If we do > this, > > then it’ll work too even if the user forces the wiki or WYSIWYG edit > mode, > > which is nice. > > > > Option 2 seems to be a more “integrated” solution which also has the > > advantage of not requiring any redirect. > > > > Thanks > > -Vincent > > > > > > - Also note that I’d like to propose to add the ability to configure > > the buttons to display in edit mode. ATM I think only the preview one can > > be hidden but we could do the same for all. In our case here we could > > decide to only leave the “Cancel” one active since clicking on “use” in > the > > Livetable could set the page to include immediately. The other option is > to > > use a different picker than the livetable and keep the save buttons. Any > > suggestion for this? > > > > > > > > The idea would be to package this as an HomePage Application in > > xwiki-platform and would be bundled by default in XE. > > > > > > > > > > > WDYT? > > > > > > +1 > > > > > > Thanks, > > > Marius > > > > > > > > > > > Thanks > > > > -Vincent > > _______________________________________________ > > devs mailing list > > [email protected] > > http://lists.xwiki.org/mailman/listinfo/devs > > > _______________________________________________ > devs mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/devs > _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

