On 11/03/2009 01:34 PM, anamarias (SVN) wrote:
> Author: anamarias
> Date: 2009-11-03 13:34:40 +0100 (Tue, 03 Nov 2009)
> New Revision: 24799
>
> Log:
> advanced q&a app
>
> Added: sandbox/applications/xwiki-application-qa/pom.xml
> ===================================================================
> --- sandbox/applications/xwiki-application-qa/pom.xml
> (rev 0)
> +++ sandbox/applications/xwiki-application-qa/pom.xml 2009-11-03 12:34:40 UTC
> (rev 24799)
> @@ -0,0 +1,14 @@
> +<project xmlns="http://maven.apache.org/POM/4.0.0"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
> http://maven.apache.org/maven-v4_0_0.xsd">
> +<parent>
> +<artifactId>xwiki-applications</artifactId>
> +<groupId>com.xpn.xwiki.platform.applications</groupId>
> +<version>15</version>
> +</parent>
> +<modelVersion>4.0.0</modelVersion>
> +<groupId>com.xpn.xwiki.platform.applications</groupId>
> +<artifactId>xwiki-application-qa</artifactId>
> +<packaging>xar</packaging>
> +<name>XWiki Platform - Applications - Question&Answers</name>
> +<version>1.0-SNAPSHOT</version>
> +<description>Q&A Application</description>
Q&A is not valid XML. The XML parser used by Maven complains about it
and fails to build.
> +</project>
>
> Added:
> sandbox/applications/xwiki-application-qa/src/main/resources/QA/QASearch.xml
> ===================================================================
> ---
> sandbox/applications/xwiki-application-qa/src/main/resources/QA/QASearch.xml
> (rev 0)
> +++
> sandbox/applications/xwiki-application-qa/src/main/resources/QA/QASearch.xml
> 2009-11-03 12:34:40 UTC (rev 24799)
> @@ -0,0 +1,88 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +
> +<xwikidoc>
> +<web>QA</web>
> +<name>QASearch</name>
> [snip]
> +{{html clean="false" wiki="true"}}
> += $msg.get('qa.search.title') =
> +
> +<form action="">
Please don't use a table here. Tables are supposed to be used only for
data that semantically belongs in a table.
> +<table>
> +<tr>
> +<td>
> +<input type="text" name="text" value="$!request.text" size="40"/>
Use $xwiki.getXMLEncoded($!{requesttext}) to prevent cross-site
scripting and broken layout if the user enters some quotes.
> +</td>
> +<td>
> +<input type="submit"
> value="$msg.get('qa.search.submit.button.value')"/>
In general we wrapp all buttons with <span class="buttonwrapper">
> +</td>
> +</tr>
> +</table>
> +</form>
> +<p/>
> +#if($request.getParameter("text"))
> + #set($text = $request.getParameter("text"))
> +#else
> + #set($text = "")
> +#end
Shorter variant:
#set($text = "$!{request.getParameter('text')")
> +
This is strange, why are you doing it like this?
> +#set($space = "$doc.space")
> +{{include document="${space}Code.WebSearchCode"/}}
> +{{include document="XWiki.Results"/}}
> +{{/html}}
> +{{/velocity}}
> +</content></xwikidoc>
> \ No newline at end of file
>
>
> Added:
> sandbox/applications/xwiki-application-qa/src/main/resources/QA/WebHome.xml
> ===================================================================
> ---
> sandbox/applications/xwiki-application-qa/src/main/resources/QA/WebHome.xml
> (rev 0)
> +++
> sandbox/applications/xwiki-application-qa/src/main/resources/QA/WebHome.xml
> 2009-11-03 12:34:40 UTC (rev 24799)
> @@ -0,0 +1,252 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +
> +<xwikidoc>
> +<web>QA</web>
> +<name>WebHome</name>
> [snip]
You should use the current color theme for styling.
> +<code>.qaSearchContainer, .qaAddContainer {
> + background-color:#EFF6D7;
> + padding:10px;
> + margin-bottom:10px;
> +}
> +
> +.qaAddContainer {
> + background-color:#FFFACD;
> +}
> +
> +.qaSearch, .qaAdd {
> + font-size:1.5em;
> + font-weight:bold;
> + line-height:2.5em;
> +}
> +
> +.qaSearchName, .qaAddName {
> + display: inline;
> + color:#B5C742;
> +}
> +
> +.qaAddName {
> + color:#E78013;
> +}
> +
> +.qaSearchValue, .qaAddValue {
> + display: inline;
> + margin: 0;
> +}
> +
> +.qaSearchValue form, .qaAddValue form {
> + display: inline;
> +}
> +
> +.qaSearchValue form input[type="text"], .qaAddValue form input[type="text"] {
> + font-size:0.9em;
px heights are not good. They don't scale well if the user increases the
font size, or if his OS in general uses a different DPI.
> + height:20px;
> +}
> +
> +.qaSearchValue form input[type="submit"], .qaAddValue form
> input[type="submit"] {
> + color:#4D4D4D;
> + font-size:0.6em;
> + height:26px;
> +}
> +</code></property><property><name></name></property><property><parse>0</parse>
> +</property>
> +<property>
> [snip]
> +<content>{{include document="QACode.Macros" /}}
> +{{velocity filter="none"}}
> +## QA variables
> +#set($qaSpace = "$doc.space")
> +#set($qaWebHome = "${qaSpace}.WebHome")
> +#set($qaClassName = "${qaSpace}Code.${qaSpace}Class")
> +#set($qaSheet = "${qaSpace}Code.${qaSpace}Sheet")
> +#set($qaTemplate = "${qaSpace}Code.${qaSpace}Template")
> +#set($qaSearch = "${qaSpace}.${qaSpace}Search")
> +##
> +$xwiki.ssx.use("$qaWebHome")
> +##
> +{{html clean="false" wiki="true"}}
> += $msg.get('qa.webhome.title') =
> +## ---------------------------------------------------
> +## Let the user search for QAs
> +## ---------------------------------------------------
> +<div class='qaSearchContainer'>
> +<div class='qaSearch'>
> +<div class='qaSearchName'>Search:</div>
> +<div class='qaSearchValue'>
> +<form action="$xwiki.getURL("${qaSearch}")">
Not valid XHTML, since a form can contain only block level elements. You
must wrap the input elements in a <div> or <fieldset>.
> +<input type="text" name="text" value="$!request.text" size="40"/>
Again, use a buttonwrapper.
> +<input type="submit"
> value="$msg.get('qa.webhome.search.submit.button.value')"/>
> +</form>
> +</div>
> +</div>
> +</div>
> +## ---------------------------------------------------
> +## Let the user add QAs
> +## ---------------------------------------------------
> +<div class='qaAddContainer'>
> +<div class='qaAdd'>
> +<div class='qaAddName'>Submit:</div>
> +<div class='qaAddValue'>
> +<form action="" id="newqa">
Use a block wrapper for validity.
> +<input type="hidden" name="parent" value="${qaWebHome}" />
> +<input type="hidden" name="template" value="${qaTemplate}" />
> +<input type="hidden" name="sheet" value="1" />
> +<input type="hidden" name="webname" value="${qaSpace}"/>
> +<input type="hidden" name="name" value=""/>
> +<input type="text" name="qa" value="" size="40"/>
I know that the following code is copied from another XWiki document,
but it is not OK to use onclick.
> +<input type="submit"
> value="$msg.get('qa.webhome.add.submit.button.value')" onclick='if
> (updateName(this.form.qa,this.form.name)) { action="../../inline/" +
> this.form.webname.value + "/" + this.form.name.value; this.form.submit(); }'
> />
> +</form>
> +</div>
> +</div>
> +</div>
> +
> +## Display Question Class admin button only for users with admin rights on
> the current space
> +#if($xwiki.hasAdminRights())
> +Questions Class:<a href='${xwiki.getURL("$qaClassName", 'edit',
> 'editor=class')}'>Edit Question Class Properties (Metadata)</a>
> +#end
> +##
> +## ---------------------------------------------------
> +## Livetable for QA entries that have answers
> +## ---------------------------------------------------
> +== $msg.get('qa.answered.title') ==
> +#qaLiveGrid("ansqadiv" "$doc.space" true)
> +##
> +## ----------------------------------------------------
> +## Livetable for QA entries that have no answers yet
> +## ----------------------------------------------------
> +== $msg.get('qa.notanswered.title') ==
> +#qaLiveGrid("notansqadiv" "$doc.space" false)
> +
> +{{/html}}
> +{{/velocity}}</content>
> +</xwikidoc>
>
>
> Property changes on:
> sandbox/applications/xwiki-application-qa/src/main/resources/QA/WebHome.xml
> ___________________________________________________________________
> Name: svn:executable
> + *
Why executable?
> Name: svn:keywords
> + Author Id Revision HeadURL
> Name: svn:eol-style
> + native
>
> Added:
> sandbox/applications/xwiki-application-qa/src/main/resources/QACode/Install.xml
> ===================================================================
> ---
> sandbox/applications/xwiki-application-qa/src/main/resources/QACode/Install.xml
> (rev 0)
> +++
> sandbox/applications/xwiki-application-qa/src/main/resources/QACode/Install.xml
> 2009-11-03 12:34:40 UTC (rev 24799)
> @@ -0,0 +1,80 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +
> +<xwikidoc>
> +<web>QACode</web>
> +<name>Install</name>
> [snip]
> +<content>{{velocity}}
> +#if(!$xwiki.hasAdminRights())
> +You are running this script as a non admin. It will have no effect. Login as
> admin.
> +#end
> +
> +#set($transdoc = $xwiki.getDocument("XWiki.XWikiPreferences"))
> +#set($ok = $transdoc.use("XWiki.XWikiPreferences"))
> +#set($transprefs = $transdoc.getValue("documentBundles"))
RecruitmentCode.Translations?
> +#if($transprefs.indexOf("RecruitmentCode.Translations")==-1)
> +#if($request.confirm=="1")
> +#set($transprefs = "${transprefs},QACode.Translations")
> +#set($ok = $transdoc.set("documentBundles", $transprefs))
> +#set($ok = $transdoc.save())
> +#end
This message should be before the #end above.
> +* Added translation bundle to XWiki Preferences
Add an "everything OK" like message to let the user know that no work
needs to be done.
> +#end
> +
Put this on an #else branch with a link back with a confirm=1 query
paraeter (if the current user has admin rights).
> +1.1 Additional Install steps
> +The page "QACode.Translations" also needs to be added to the translations
> bundles in the XWiki Preferences / Programming section.
> +{{/velocity}}</content>
> +</xwikidoc>
>
>
> Added:
> sandbox/applications/xwiki-application-qa/src/main/resources/QACode/QAClass.xml
> ===================================================================
> ---
> sandbox/applications/xwiki-application-qa/src/main/resources/QACode/QAClass.xml
> (rev 0)
> +++
> sandbox/applications/xwiki-application-qa/src/main/resources/QACode/QAClass.xml
> 2009-11-03 12:34:40 UTC (rev 24799)
> @@ -0,0 +1,139 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +
> +<xwikidoc>
> +<web>QACode</web>
> +<name>QAClass</name>
> [snip]
> +<class>
> +<answer>
> +</answer>
> +<country>
Why does a QA application need a country?
> +</country>
> +<fabrication>
Strange word in this context...
> +</fabrication>
> +<pays>
Who's paying?
> +</pays>
> +<question>
A problem with the StringClass is that it can only hold 255 characters.
Do you think it's enough?
> +<classType>com.xpn.xwiki.objects.classes.StringClass</classType>
> +</question>
> +</class>
>
> Added:
> sandbox/applications/xwiki-application-qa/src/main/resources/QACode/QASheet.xml
> ===================================================================
> ---
> sandbox/applications/xwiki-application-qa/src/main/resources/QACode/QASheet.xml
> (rev 0)
> +++
> sandbox/applications/xwiki-application-qa/src/main/resources/QACode/QASheet.xml
> 2009-11-03 12:34:40 UTC (rev 24799)
> @@ -0,0 +1,261 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +
> +<xwikidoc>
> +<web>QACode</web>
> +<name>QASheet</name>
> [snip]
> +<property>
> +<cache></cache>
> +</property>
> +<property>
Again, use the color theme.
> +<code>.qaContainer {
> + background-color:#EFF6D7;
> + padding:10px;
> +}
> +
> +.qaQuestionContainer {
> + font-size:1.5em;
> + font-weight:bold;
> + line-height:2.5em;
> +}
> +
> +.qaQuestionName {
> + color:#B5C742;
> +}
> +
> +.qaQuestionValue { }
> +
> +.qaMetadataContainer {
> + margin-left:40px;
> +}
> +
> +.qaAnswerContainer {
> + border: 1px solid #D7D7D7;
> + padding:10px;
> + margin-top:10px;
> +}
> +
> +.qaAnswerName {
> + color:#003399;
> + font-size:1.5em;
> + font-weight:bold;
> +}
> +
> +.qaAnswerValue { }
> +
> +.qaUnansweredContainer {
> + padding: 20px 40px;
> +}
> +
> +.floatRight {
> + float: right;
> +}
> +
> +.qaQuestionValue pre {
> + display: inline
> +}
> +</code></property><property><name></name></property><property><parse>0</parse>
> +</property>
> +<property>
> +<use>onDemand</use>
> +</property>
> +</object>
> +<content>{{velocity filter="none"}}
> +#set($qaSpace = "$doc.space")
> +#set($qaClassName = "${qaSpace}Code.${qaSpace}Class")
> +#set($qaSheet = "${qaSpace}Code.${qaSpace}Sheet")
> +## CSS Stylesheet
> +$xwiki.ssx.use("$qaSheet")
> +##
> +{{html clean="false" wiki="true"}}
> +##
> +#set($qaObject = $doc.getObject("$qaClassName"))
> +#set($qaClass = $qaObject.xWikiClass)
> +##
> +## QA properties
.Value looks strange to me (C#). It's either .value or .getValue().
> +#set($qaQuestion = $qaObject.getProperty('question').Value)
> +#set($qaAnswer = $qaObject.getProperty('answer').Value)
> += $qaQuestion =
> +<div class='qaContainer'>
> +<div class='qaQuestionContainer'>
> +<span class='qaQuestionName'>Q:</span>
> +<span class='qaQuestionValue'>$doc.display('question')</span>
> +</div>
> +<div class='qaMetadataContainer'>
> + #foreach($prop in $qaClass.properties)
> + #set($propName = $prop.Name)
> + #if($propName != 'question'&& $propName != 'answer')
> + ; $prop.prettyName
> + : $doc.display($prop.getName())
> + #end
> + #end
> +</div>
> +</div>
> +#if($qaAnswer!='' || $context.action=='inline' )
> +<div class='qaAnswerContainer'>
> + #if($context.action=='view')
> +<div class='floatRight'><a
> href="$doc.getURL('inline')">[Improve]</a></div>
> + #end
Too much HTML.
> +<div class='qaAnswerName'>A:</div>
> +<div class='qaAnswerValue'>$doc.display('answer')</div>
> +</div>
> +#else
> +<div class='qaUnansweredContainer'>
> +<b>This question has not been answered yet.</b><br />
And what am I supposed to do with this button if I don't have JavaScript
enabled? What's wrong with a plain link?
> +<input type="button" value="A: Answer Question"
> onclick="window.location.href='$doc.getURL('inline')'" />
> +</div>
> +#end
> +{{/html}}
> +{{/velocity}}</content>
> +</xwikidoc>
>
>
> Added:
> sandbox/applications/xwiki-application-qa/src/main/resources/QACode/Translations.xml
> ===================================================================
> ---
> sandbox/applications/xwiki-application-qa/src/main/resources/QACode/Translations.xml
> (rev 0)
> +++
> sandbox/applications/xwiki-application-qa/src/main/resources/QACode/Translations.xml
> 2009-11-03 12:34:40 UTC (rev 24799)
> @@ -0,0 +1,82 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +
> +<xwikidoc>
> +<web>QACode</web>
> +<name>Translations</name>
> [snip]
> +<content>qa.webhome.title=Questions& Answers
> +qa.webhome.search.title=In order to find the information you're looking for,
> you can use the search feature of your browser to search for QA entries
> displayed on this page or use the search box below.
> +qa.webhome.search.submit.button.value=Go!
> +qa.webhome.add.title=If you don't find the QA you're looking for, create a
> new QA using the following form and fill the answer once you've found it!
> +qa.webhome.add.submit.button.value=Add this QA
> +qa.webhome.table.answered.title={0} Answered QAs (latest first)
> +qa.webhome.table.notanswered.title={0} Unanswered QAs (latest first)
> +
> +qa.search.title=QA Search
> +qa.search.submit.button.value=Search QAs
> +
Where are these used?
> +qa.class.property.qa.question=Question
> +qa.class.property.qa.answer=Answer
> +qa.class.property.qa.country=Country
> +qa.class.property.qa.doc.date=Last Edited
> +qa.class.property.qa.doc.author=Last Author
> +qa.class.property.qa.doc.name=Questions
> +qa.class.property.qa.emptyvalue=-
> +qa.class.property.qa._actions=Actions
> +
> +qa.answered.title=Answered QAs
> +qa.notanswered.title=Unanswered QAs</content>
> +</xwikidoc>
>
>
> Added:
> sandbox/applications/xwiki-application-qa/src/main/resources/QACode/WebHome.xml
> ===================================================================
> ---
> sandbox/applications/xwiki-application-qa/src/main/resources/QACode/WebHome.xml
> (rev 0)
> +++
> sandbox/applications/xwiki-application-qa/src/main/resources/QACode/WebHome.xml
> 2009-11-03 12:34:40 UTC (rev 24799)
> @@ -0,0 +1,61 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +
> +<xwikidoc>
> +<web>QACode</web>
> +<name>WebHome</name>
> [snip]
> +<content></content>
A document with no content at all is not nice. At least put a short
message explaining what the space is for.
> +</xwikidoc>
--
Sergiu Dumitriu
http://purl.org/net/sergiu/
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs