<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Loftux AB &#187; share</title>
	<atom:link href="http://loftux.se/tag/share/feed/" rel="self" type="application/rss+xml" />
	<link>http://loftux.se</link>
	<description>Dokumenthantering och informationshantering med öppen källkod</description>
	<lastBuildDate>Wed, 11 Jan 2012 12:04:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Ersätta Alfresco standard flash viewer med pdf.js</title>
		<link>http://loftux.se/2012/01/08/ersatta-alfresco-standard-flash-viewer-med-pdf-js/</link>
		<comments>http://loftux.se/2012/01/08/ersatta-alfresco-standard-flash-viewer-med-pdf-js/#comments</comments>
		<pubDate>Sun, 08 Jan 2012 17:08:40 +0000</pubDate>
		<dc:creator>Peter Löfgren</dc:creator>
				<category><![CDATA[Alfresco]]></category>
		<category><![CDATA[dokumentvisare]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[share]]></category>
		<category><![CDATA[viewer]]></category>

		<guid isPermaLink="false">http://loftux.se/?p=830</guid>
		<description><![CDATA[<p>Har du noterat att den flash-baserade förhandsgranskningen ser lite suddig ut i Alfresco 4.0? Då har du rätt, det är inte din syn som det är fel på. Det beror på en ändring för inställningarna i programmet pdf2swf (som skapar flash filerna) för att göra den mer robust vid konvertering av stora filer. Och för [...]]]></description>
			<content:encoded><![CDATA[<p>Har du noterat att den flash-baserade förhandsgranskningen ser lite suddig ut i Alfresco 4.0? Då har du rätt, det är inte din syn som det är fel på. Det beror på en ändring för inställningarna i programmet pdf2swf (som skapar flash filerna) för att göra den mer robust vid konvertering av stora filer. Och för en del pdf-filer kunde den till och med krascha jvm. Så det finns en god anledning till ändringen. <a href="http://loftux.se/wp-content/uploads/2012/01/Blurry-flash-preview1.png"><img src="http://loftux.se/wp-content/uploads/2012/01/Blurry-flash-preview1-300x182.png" alt="" title="Blurry flash preview" width="300" height="182" class="aligncenter size-medium wp-image-835" /></a></a>Bilden ovan visar skillnaden vid de olika inställningarna. Detaljer för detta ärende finns på <a href="https://issues.alfresco.com/jira/browse/ALF-10870" target="_blank">ALF-10870</a>. Ärendet är stängt med status &#8216;won&#8217;t fix&#8217;, något som jag inte håller med om. Det hade varit bättre att senarelägga en fix till 4.0.x (eller valfri senare version) om det inte finns en omedelbar fix, för en fix behövs, ingen vill ha förhandsgranskning som gör att Alfresco ser åt som en lågkvalitetsprodukt (vilket det absolut inte är) som första intryck.</p>
<p>Men min avsikt är inte att gnälla, Alfresco har att se helheten och sätta prioriteringen. Och eftersom det är en öppen-källkodsprodukt så kan du om du inte är nöjd med hur något fungerar, fixa eller förbättra det. Så det har jag gjort. Jag har tagit fram en alternativ dokumentvisare baserad på Mozilla projektet <a href="https://github.com/mozilla/pdf.js" target="_blank">pdf.js</a>.</p>
<p>Alla dokument som visas i den flashbaserade dokumentvisaren måste transformeras i kedjan <code>&lt;source format&gt; - &lt;pdf&gt; - &lt;flash&gt;</code>. Om vi kan skippa det sista steget så kan vi undvika pdf2swf och risken för en jvm krash. Och vi kommer stödja samma format som nu. Men då måste det finnas ett sätt att visa pdf-filer direkt i webbläsaren. Chrome och Safari kommer med en pdf-visare inbyggd, så den kan vi använda. Och många andra har en extern plugin såsom Acrobat reader installerad. Vilket kommer att täcka väldigt många användare, men det bästa vore om det gick att visa pdf-filer direkt i webbläsaren. Och det är vad <a href="https://github.com/mozilla/pdf.js" target="_blank">pdf.js</a> gör, allt implementerat i Javascript med hjälp av html5.</p>
<p>Så dokumentvisaren jag tagit fram försöker</p>
<ul>
<li>Använda pdf.js visare för webbläsare som stödjer html5</li>
<li>Om pdf.js inte kan användas, försök och se om en pdf plugin är installerad och visa pdf-filen med den.</li>
<li>Som sista alternativ, använd standard Alfresco flash based dokumentvisare.</li>
</ul>
<p>Det enklaste sättet att göra detta var att använda &lt;iframe&gt;, där pdf.js visaren laddas via en Alfresco surf sida som implementerar pdf.js standard visare i stort sett &#8216;out of the box&#8217;. Du kan testa standard visaren här <a href="http://mozilla.github.com/pdf.js/web/viewer.html" target="_blank">here</a>. Den är väldigt funktionell, och de flesta pdf-filer jag testat visas utan problem.</p>
<p>Samma metod med att använda iframe används för att visa pdf med en extern pdf-tillägg. Genom att sätta src i iframe så starts tillägget.</p>
<p>Så här ser det ut</p>
<p><a href="http://www.youtube.com/watch?v=V1R08Ba3uo4&#038;fmt=18">www.youtube.com/watch?v=V1R08Ba3uo4</a></p>
<p>Jag tänker släppa källkoden inom kort, den måste bara justeras lite. Jag uppdaterar inlägget när jag är klar med det.</p>
<p><strong>Uppdatering</strong><br />
Källkoden är incheckad Share Extras projektet. Du kan se koden <a href="http://code.google.com/p/share-extras/source/browse/#svn%2Ftrunk%2FViewer%20Extension">här</a>.<br />
Det finns ingen kompilerad version ännu, vilket är med avsikt, Det är fortfarande otestad, men om du vet hur du checkar ut och komplilerar så antar jag att du inte rusar iväg och använder det på en produktionsserver.</p>
]]></content:encoded>
			<wfw:commentRss>http://loftux.se/2012/01/08/ersatta-alfresco-standard-flash-viewer-med-pdf-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alfresco flerspråkiga properties &#8211; feature eller bug</title>
		<link>http://loftux.se/2011/10/30/alfresco-flersprakiga-properties-feature-eller-bug/</link>
		<comments>http://loftux.se/2011/10/30/alfresco-flersprakiga-properties-feature-eller-bug/#comments</comments>
		<pubDate>Sun, 30 Oct 2011 13:02:16 +0000</pubDate>
		<dc:creator>Peter Löfgren</dc:creator>
				<category><![CDATA[Alfresco]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[I18N]]></category>
		<category><![CDATA[share]]></category>

		<guid isPermaLink="false">http://loftux.se/?p=794</guid>
		<description><![CDATA[<p>Många av er som använder Alfresco förmodligen inte medvetna om att Alfresco har inbyggt stöd för flerspråkiga egenskaper. Out of the box använder Alfresco det för titel och beskrivning, men bara för dessa två. Vad detta innebär för dokument är att om du är inloggad på Share som en användare med sv_SE locale preferenser och [...]]]></description>
			<content:encoded><![CDATA[<p>Många av er som använder Alfresco förmodligen inte medvetna om att Alfresco har inbyggt stöd för flerspråkiga egenskaper. Out of the box använder Alfresco det för titel och beskrivning, men bara för dessa två. Vad detta innebär för dokument är att om du är inloggad på Share som en användare med sv_SE locale preferenser och skapar ett dokument med titeln &#8221;Min svenska Titel&#8221; och beskrivningen &#8221;Min svenska beskrivning&#8221;, sedan en användare med en_US (för en engelsk användare) uppdaterar egenskaper för titel med &#8221;Min engelska Titel&#8221; och beskrivningen &#8221;Min engelska beskrivning&#8221;, så kommer alla användare med sv_SE fortfarande se den ursprungliga svenska texten, och en_US användare kommer se den &#8221;översätta&#8221; engelska texten. För att detta ska hända behöver du inte ha det aktuella språkpaket installerat. Vill ni snabbt testa detta rekommenderar jag Firefox med plugin Quick Locale Switcher.</p>
<p>Detta är en mycket trevlig funktion, som bara fungerar. Men det finns några problem med detta. För det första så finns det ingen indikation i Share formulär att detta sker, det bör åtminstone vara en visuell indikation på att det sker. Andra problemet är att titel och egenskaper beskrivning inte bara används för dokument, det används för många andra komponenter i Alfresco. Jag har gjort några tester, och jag har funnit att webbplatsens namn och beskrivning, Blogginlägg titel, diskussion ämnesrubrik, Data List namn och beskrivning, och Data List rad namn och beskrivning kommer att visa olika texter beroende på språk om den har redigerats med olika språkpreferenser i webbläsaren. Återigen detta händer bara om egenskaperna redigeras med ett annat språk, förmodligen inte händer så många gånger att en diskussion redigeras med olika språkinställningar, men att Webbplatsansvariga från olika länder ändrar webbplatsens rubrik och beskrivning är inte osannolikt.</p>
<p>Det var en kund till mig som först upptäckte detta beteende, och jag registrerade en bugg <a href="https://issues.alfresco.com/jira/browse/ALF-3756" target="_blank"> ALF-3756 </a> i juli 2010. Min första reaktion var att användarna inte ska se olika saker, och att det var på grund av att användare använde olika webbläsare, och att detta skulle fixas. Som det visar sig, är det inte på grund av olika webbläsare, utan det är det på grund av olika språkinställningar i olika webbläsare. Det har nyligen fixats i HEAD källkoden, så jag testar med förhoppningen att det är fixat, men ingenting hade förändrats och beteendet är detsamma. Så jag anmälde en <a regression bugg href="https://issues.alfresco.com/jira/browse/ALF-11166" target="_blank"> ALF-11166 </a>, men efter att funderat lite på flerspråkiga beteende, så harjag kommit fram till att det inte är en bugg trots allt, och det är därför jag skriver det här inlägget.</p>
<p>Jag har tänkt på olika sätt att fixa detta, kunde vara att du ändrar egenskapen definitionen av cm:title och cm:description i datamodellen från d:mltext till d:text. Vissa begränsade tester visar att denna fix kommer en egenskap fortsätta vara flerspråkig (d: mltext) till nästa redigering, då det sparas som d:text, och alla användare kommer se samma sak oberoende av språk. Ändra i standardmodellen är inget jag rekommenderar, och jag gjorde bara en mycket begränsad test för att se vad som hände. Och det är nog inte rätt sätt att fixa detta, eftersom det tar bort en mycket bra funktion. Alfresco hanterar flerspråkighet (I18N) mycket bra, och nästan allt är lokaliserat, och från 4.0 egenskapslistor (constraints)  möjliga att ha på flera språk. Så det faktum att man kan ha webbplatsens titel och beskrivning på olika språk är en bra sak.</p>
<p>Så rätt fix för detta är att visuellt visa vad som händer i alla formulär och dialogrutor. Det kan genomföras i steg om inte den fullständiga metoden kan tas på en gång</p>
<ol>
<li>
Skapa en kontroll med flagga som motsvarar de som visar vilket soråk som används, så att du visuellt se vad språket som för närvarande redigeras.
</li>
<li>
Ändra i kontrollen så att du kan lista andra värden för att se basspråket och de aktuella värdena för övriga språk. Så att du kan hålla reda på översättningar och hålla dem i synk.
</li>
</ol>
<p>Jag skapade (eller egentligen uppdaterade befintliga textkontroller) och då ser det ut så här för flerspråkig egenskaper<br />
<a href="http://loftux.se/wp-content/uploads/2011/10/Multilingual-Properties.png"><img src="http://loftux.se/wp-content/uploads/2011/10/Multilingual-Properties-300x161.png" alt="" title="Multilingual Properties" width="300" height="161" class="alignleft size-medium wp-image-800" /></a><br />
Fullständig information om hur jag gjorde detta är frågan <a href="https://issues.alfresco.com/jira/browse/ALF-11166" target="_blank"> ALF-11166</a>. Det är ett litet första steg fixat genom att redigera freemarker mallen för textkontrollen, en mer komplett lösning som jag beskrev är möjligheten att lista alla värden för olika språk. Låt mig veta vad du tycker.</p>
]]></content:encoded>
			<wfw:commentRss>http://loftux.se/2011/10/30/alfresco-flersprakiga-properties-feature-eller-bug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Använda Alfresco som portal för webbapplikationer</title>
		<link>http://loftux.se/2011/10/26/anvanda-alfresco-som-portal-for-webbapplikationer/</link>
		<comments>http://loftux.se/2011/10/26/anvanda-alfresco-som-portal-for-webbapplikationer/#comments</comments>
		<pubDate>Wed, 26 Oct 2011 12:53:11 +0000</pubDate>
		<dc:creator>Peter Löfgren</dc:creator>
				<category><![CDATA[Alfresco]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Portal]]></category>
		<category><![CDATA[share]]></category>
		<category><![CDATA[surf]]></category>

		<guid isPermaLink="false">http://loftux.se/?p=761</guid>
		<description><![CDATA[<p>Många av mina kunder har frågat efter ett enkelt sätt att integrera existerande webbaserade applikationer med Alfresco, så att Alfresco är den främsta vägen till alla applikationer. Jag har gjort det genom att anpassa verktygsraden <a href="http://wiki.alfresco.com/wiki/Share_Header" target="_blank">Share Header</a> för att lägga till länkar i en meny, och sedan visa dem i en iframe. Genom [...]]]></description>
			<content:encoded><![CDATA[<p>Många av mina kunder har frågat efter ett enkelt sätt att integrera existerande webbaserade applikationer med Alfresco, så att Alfresco är den främsta vägen till alla applikationer. Jag har gjort det genom att anpassa verktygsraden <a href="http://wiki.alfresco.com/wiki/Share_Header" target="_blank">Share Header</a> för att lägga till länkar i en meny, och sedan visa dem i en iframe. Genom att använda en iframe så har du fortsatt tillgång till alla Alfresco menyerna för enkel navigering. Inte alla ppalikationer är iframe vänliga, så för dem så kan du lägga till länkar som öppnar den i separata fönster. Och ja, att lägga applikationer i en iframe är inte integration på riktigt, eller gör en äkta portalapplikation av Alfresco, men till nästan ingen kostnad alls så skapar det mervärde.</p>
<p>Det här inlägget visar hur du kan göra det, och också hur du kan använda de inbyggda mallarna (tillgängliga från 4.0.b), och den nya Surf extension mekanismen.<br />
<a href="http://loftux.se/wp-content/uploads/2011/10/AppIntegrator.png"><img src="http://loftux.se/wp-content/uploads/2011/10/AppIntegrator-300x119.png" alt="" title="AppIntegrator" width="300" height="119" class="alignnone size-medium wp-image-764" /></a><br />
<span id="more-761"></span><br />
Alla sökvägar som anges nedan är class path relativa, om du redigerar direkt kan du använda tomcat/shared/classes/alfresco.<br />
Starta genom att skapa en nu sida i site-data/pages kallad appintegrator.xml med innehåll</p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version='1.0' encoding='UTF-8'?&gt;
&lt;page&gt;
	&lt;title&gt;Application&lt;/title&gt;
	&lt;description&gt;Application&lt;/description&gt;
	&lt;template-instance&gt;1-column&lt;/template-instance&gt;
	&lt;authentication&gt;user&lt;/authentication&gt;
	&lt;components&gt;

		&lt;!-- Top --&gt;
		&lt;component&gt;
			&lt;region-id&gt;title&lt;/region-id&gt;
			&lt;sub-components&gt;
				&lt;sub-component id=&quot;appintegratortitle&quot;&gt;
					&lt;url&gt;/components/title/simple-title&lt;/url&gt;
					&lt;properties&gt;
						&lt;title&gt;Application&lt;/title&gt;
					&lt;/properties&gt;
				&lt;/sub-component&gt;
			&lt;/sub-components&gt;
		&lt;/component&gt;

		&lt;!-- Column --&gt;
		&lt;component&gt;
			&lt;region-id&gt;column&lt;/region-id&gt;
			&lt;sub-components&gt;
				&lt;sub-component id=&quot;appintegratoriframe&quot;&gt;
					&lt;url&gt;/components/appintegrator/iframe&lt;/url&gt;
				&lt;/sub-component&gt;
			&lt;/sub-components&gt;
		&lt;/component&gt;
	&lt;/components&gt;
&lt;/page&gt;
</pre>
<p>Som du kan se använder den sig av en template instance som heter 1-column, en av de out of the box mallarna som finns från 4.0.b så att vi inte behöver skapa egna mallar för vår nya sida. Erik Winlöf har skrivit mer <a href="http://blogs.alfresco.com/wp/ewinlof/2011/10/12/create-pages-in-alfresco-share-using-new-out-of-the-box-templates/" target="_blank">hur du använder out-of-the-box mallar</a> om du vill lära dig mer.<br />
Den första komponenten i våran nya sida är en out of the box komponent i Alfresco som vi använder för att skapa en titelrad. Nästa komponent är ny och som vi skapar för att rendera vår iframe. Börja med att skapa filer i site-webscripts/org/alfresco/components/appintegrator<br />
iframe.get.desc.xml</p>
<pre class="brush: xml; title: ; notranslate">
&lt;webscript&gt;
  &lt;shortname&gt;appintegratoriframe&lt;/shortname&gt;
  &lt;description&gt;Application Integrator iFrame&lt;/description&gt;
  &lt;url&gt;/components/appintegrator/iframe&lt;/url&gt;
&lt;/webscript&gt;
</pre>
<p>iframe.get.html.ftl</p>
<pre class="brush: xml; title: ; notranslate">
&lt;iframe id=&quot;${args.htmlid}-appintegrator&quot; src=&quot;${protocol}${iurl}&quot; scrolling=&quot;no&quot;
marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot; vspace=&quot;0&quot; hspace=&quot;0&quot;
style=&quot;overflow:visible; width:100%; height:5000px&quot;&gt;&lt;/iframe&gt;
</pre>
<p>iframe.get.js</p>
<pre class="brush: jscript; title: ; notranslate">
//The url argument is called iurl because there is a built in url object in Surf
var iurl = page.url.args.iurl !== null ? decodeURIComponent(page.url.args.iurl)
		: &quot;loftux.se&quot;;
var ssl = page.url.args.ssl !== null ? decodeURIComponent(page.url.args.ssl)
		: &quot;false&quot;;

if (ssl===&quot;true&quot;) {
	model.protocol=&quot;https://&quot;;
}else{
	model.protocol=&quot;http://&quot;;
}
model.iurl=iurl;
</pre>
<p>Starta om Share, och nu skall du kunna navigera till <a href="http://localhost:8080/share/page/appintegrator?iurl=loftux.com&#038;ssl=false" target="_blank">http://localhost:8080/share/page/appintegrator?iurl=loftux.se&#038;ssl=false</a>. Som du kan se är det två argument, iurl är den url som du vill iframe skall ladda, och ssl true/false sätter protokollet till respektive https/http (du skall alltså inte ha med det i iurl).<br />
Bara att sätta igång att lägga till länkar i Share Header, och du har alla dina webbapplikationer bekvämt samlade på ett ställe.</p>
<p>Men titelraden kunde gott ge lite mer information än bara &#8216;Application&#8217;, till exempel namnet och en beskrivning av den applikationen som för närvarande är laddad i iframe. Eftersom vi vill länka från Share Header, så vill vi skicka den informationen som argument i url:en. För det skapar vi en ny title component, skapa den i site-webscripts/org/alfresco/components/appintegrator. Den är väldigt lik originalet, bara ändrad så att den kan ladda argument från url:en.<br />
appintegrator-title.get.desc.xml</p>
<pre class="brush: xml; title: ; notranslate">
&lt;webscript&gt;
  &lt;shortname&gt;Simple Title&lt;/shortname&gt;
  &lt;description&gt;Simple generic title component that displays the title using the message keys passed in as url arguments&lt;/description&gt;
  &lt;url&gt;/components/appintegrator/appintegrator-title&lt;/url&gt;
&lt;/webscript&gt;
</pre>
<p>appintegrator-title.get.html.ftl</p>
<pre class="brush: xml; title: ; notranslate">
&lt;div class=&quot;page-title theme-bg-color-1 theme-border-1&quot;&gt;
   &lt;h1 class=&quot;theme-color-3&quot;&gt;&lt;span&gt;&lt;#if page.url.args.title??&gt;${page.url.args.title}&lt;/#if&gt;&lt;/span&gt;
   &lt;#if page.url.args.subtitle??&gt;${page.url.args.subtitle}&lt;/#if&gt;&lt;/h1&gt;
&lt;/div&gt;
</pre>
<p>För att ladda denna komponent, det &#8221;gamla&#8221; sättet att göra detta vore att redigera mallen. Men eftersom vi använder out of the box mallar, så kan vi inte ändra dem. Men för 4.0 så finns en ny extension mekanism, som vi kan använda för att enkelt ersätta den existerande komponentet med vår egen utan att ändra mallen. För detaljer kring detta läs, read <a href="http://blogs.alfresco.com/wp/ddraper/2011/07/22/how-to-add-content-to-an-alfresco-share-page/" target="_blank">David Drapers blogg</a> (första inlägget i en serie).</p>
<p>Så i site-data/extension lägger vi till filen<br />
appintegrator.xml</p>
<pre class="brush: xml; title: ; notranslate">
&lt;extension&gt;
  &lt;modules&gt;
   &lt;module&gt;
   &lt;id&gt;Loftux AppIntegrator&lt;/id&gt;
   &lt;components&gt;
     &lt;component&gt;
	&lt;region-id&gt;title&lt;/region-id&gt;
	&lt;source-id&gt;appintegrator&lt;/source-id&gt;
	&lt;scope&gt;page&lt;/scope&gt;
	&lt;sub-components&gt;
	  &lt;!-- Remove default title --&gt;
	  &lt;sub-component id=&quot;appintegratortitle&quot;&gt;
	    &lt;evaluations&gt;
	      &lt;evaluation id=&quot;hidedefaulttitle&quot;&gt;
	        &lt;render&gt;false&lt;/render&gt;
	      &lt;/evaluation&gt;
	    &lt;/evaluations&gt;
	  &lt;/sub-component&gt;
	  &lt;!-- Add our new title --&gt;
	  &lt;sub-component id=&quot;appintegratortitlenew&quot;&gt;
	    &lt;url&gt;/components/appintegrator/appintegrator-title&lt;/url&gt;
	  &lt;/sub-component&gt;
	&lt;/sub-components&gt;
      &lt;/component&gt;
     &lt;/components&gt;
    &lt;/module&gt;
  &lt;/modules&gt;
&lt;/extension&gt;
</pre>
<p>Jag kommer inte gå in på detaljer för hur du hittar region-id, source-id och component id, för det rekommenderar jag Davids inlägg. Vad vi gör är att säga till Share att inte rendera &#8216;simple-title&#8217; komponententen, här med namnet appintegratortitle, och iställer rendera vår egen title component. För att detta skall ta effekt, gå till <a href="http://localhost:8080/share/page/modules/deploy" target="_blank">http://localhost:8080/share/page/modules/deploy</a> och gör aktivera (deploy) på Loftux Appintegrator modulen.<br />
<a href="http://loftux.se/wp-content/uploads/2011/10/Deploy-Modules.png"><img src="http://loftux.se/wp-content/uploads/2011/10/Deploy-Modules-300x142.png" alt="" title="Deploy Modules" width="300" height="142" class="alignleft size-medium wp-image-775" /></a><br />
När vår tilläggsmodul är aktiverad, så kan vi lägga till två nya argument till url:en, title och subtitle som kommer visas i titelraden. Ingen av dem är obligatoriska, bara att använda dem du har behov av.<br />
Din slutliga konfiguration för Share Header kan se ut ungefär så här (utdrag)</p>
<pre class="brush: xml; title: ; notranslate">
&lt;item type=&quot;container&quot; id=&quot;application&quot; icon=&quot;appintegrator.png&quot;&gt;
   &lt;container-group id=&quot;my&quot; label=&quot;Internal Applications&quot;&gt;
      &lt;item type=&quot;link&quot; id=&quot;loftuxse&quot; icon=&quot;appintegratorwindow.png&quot; label=&quot;Loftux.se&quot; description=&quot;Dokument och informationshantering&quot;&gt;&lt;![CDATA[/appintegrator?title=Loftux.se&amp;subtitle=Dokumenthantering&amp;iurl=loftux.se]]&gt;&lt;/item&gt;
      &lt;item type=&quot;link&quot; id=&quot;loftuxcom&quot; icon=&quot;appintegratorwindow.png&quot; label=&quot;Loftux.com&quot; description=&quot;Document and Information management&quot;&gt;&lt;![CDATA[/appintegrator?title=Loftux.com&amp;subtitle=Document%20management&amp;iurl=loftux.com]]&gt;&lt;/item&gt;
      &lt;item type=&quot;external-link&quot; id=&quot;devcona&quot; icon=&quot;appintegratorsplash.png&quot; label=&quot;DevCon Americas&quot; description=&quot;Alfresco DevCon Americas&quot;&gt;&lt;![CDATA[/appintegrator?title=Alfresco DevCon&amp;subtitle=Americas&amp;iurl=www.amiando.com/alfresco-devcon-san-diego-2011.html]]&gt;&lt;/item&gt;
      &lt;item type=&quot;external-link&quot; id=&quot;devcone&quot; icon=&quot;appintegratorstar.png&quot; label=&quot;DevCon EMEA APAC&quot; description=&quot;Alfresco DevCon EMEA APAC&quot;&gt;&lt;![CDATA[/appintegrator?title=Alfresco DevCon&amp;subtitle=EMEA%20APAC&amp;iurl=www.amiando.com/alfresco-devcon-london-2011.html]]&gt;&lt;/item&gt;
   &lt;/container-group&gt;
&lt;/item&gt;
</pre>
<p>Detta renderar meny som visas i första bilden. Notera att du kan skapa länkar som visas i aktuellt fönster eller i nytt fönster/flik. Eftersom applikationerna ligger i en iframe så måste användare kunna surfa direkt till dem, så det lämpar sig inte när Share klienten ligger utanför brandväggen.</p>
<p>För det här Share tillägget kanske det hade varit enklare att skapa en egen template till vår iframe page. Då hade vi inte behövt använda Surf Extensions, men jag tror det kan vara ett bra exempel på hur du kan använda de nya funktionerna för tillägg i Share<br />
Du kan ladda ner färdig kompilerad jar, konfiguration och all källkod här <a href='http://loftux.se/wp-content/uploads/2011/10/AppIntegrator.zip'>AppIntegrator</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://loftux.se/2011/10/26/anvanda-alfresco-som-portal-for-webbapplikationer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inaktivera en sida i Alfresco Share</title>
		<link>http://loftux.se/2011/06/23/inaktivera-en-sida-i-alfresco-share/</link>
		<comments>http://loftux.se/2011/06/23/inaktivera-en-sida-i-alfresco-share/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 11:20:17 +0000</pubDate>
		<dc:creator>Peter Löfgren</dc:creator>
				<category><![CDATA[Alfresco]]></category>
		<category><![CDATA[disable]]></category>
		<category><![CDATA[share]]></category>
		<category><![CDATA[surf]]></category>

		<guid isPermaLink="false">http://loftux.se/?p=737</guid>
		<description><![CDATA[<p>Du har nu lyckats med att installera Alfresco Share och vill nu göra Share tillgänglig över internet så att du kan samarbeta med extern användare. Men du vill av olika anledningar inte att de skall komma åt vissa sidor, som till exempel Arkiv (Repository). Det första du gör är att ta bort den från verktygsfältet, [...]]]></description>
			<content:encoded><![CDATA[<p>Du har nu lyckats med att installera Alfresco Share och vill nu göra Share tillgänglig över internet så att du kan samarbeta med extern användare. Men du vill av olika anledningar inte att de skall komma åt vissa sidor, som till exempel Arkiv (Repository). Det första du gör är att ta bort den från verktygsfältet, genom att följa instruktionerna på Alfresco wiki sida <a href="http://wiki.alfresco.com/wiki/Share_Header">Share Header</a>.</p>
<p>Det tar bort alla länkar till sidan, men som den erfarna Alfresco användaren du är så vet du att du fortfarande kan komma åt sidan genom att skriva den kompletta url:en till sidan, för repository är den <servernamn>/share/page/repository. Och det här är något du vill inaktivera.</p>
<p>Det är faktiskt enkelt att göra, url:en kommer fortfarande vara tillgänglig, men sidan visar inget annat än verktygsraden och ett meddelande.<br />
<a href="http://loftux.se/wp-content/uploads/2011/06/ShareDisabledPage.png"><img src="http://loftux.se/wp-content/uploads/2011/06/ShareDisabledPage.png" alt="" title="ShareDisabledPage" width="492" class="alignnone size-full wp-image-740" /></a><br />
Börja med att lägga till i<br />
<code>tomcat/shared/classes/alfresco/web-extension/</code><br />
de här mapparna och undermappar<br />
<code>site-data/pages<br />
site-data/template-instances<br />
templates</code><br />
Vad du vill göra är att hitta definitionsfilen för den sida som du vill inaktivera och kopiera till site-data/pages. För sidan som används i det här exemplet, repository, är det <code>tomcat/webapps/share/WEB-INF/classes/alfresco/site-data/pages/repository.xml</code><br />
Efter kopiering, redigera sidan så att den ser ut så här</p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version='1.0' encoding='UTF-8'?&gt;
&lt;page&gt;
   &lt;title&gt;Repository Browser&lt;/title&gt;
   &lt;title-id&gt;page.repository.title&lt;/title-id&gt;
   &lt;description&gt;Browse content across the whole Repository&lt;/description&gt;
   &lt;description-id&gt;page.repository.description&lt;/description-id&gt;
   &lt;template-instance&gt;disabled&lt;/template-instance&gt;
   &lt;authentication&gt;user&lt;/authentication&gt;
&lt;/page&gt;
</pre>
<p>Den viktiga ändringen här är <code>&lt;template-instance&gt;disabled&lt;/template-instance&gt;</code>, vi säger till sidan att använda en ny mall, som vi nu måste skapa.<br />
Skapa filen <code>site-data/template-instances/disabled.xml</code> med innehåll</p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version='1.0' encoding='UTF-8'?&gt;
&lt;?xml version='1.0' encoding='UTF-8'?&gt;
&lt;template-instance&gt;
   &lt;template-type&gt;disabled&lt;/template-type&gt;
&lt;/template-instance&gt;
</pre>
<p>och den faktiska mallfilen <code>site-data/templates/disabled.ftl</code> med innehåll</p>
<pre class="brush: xml; title: ; notranslate">
&lt;#include &quot;/org/alfresco/include/alfresco-template.ftl&quot; /&gt;
&lt;@templateHeader /&gt;

&lt;@templateBody&gt;
   &lt;div id=&quot;alf-hd&quot;&gt;
      &lt;@region id=&quot;header&quot; scope=&quot;global&quot; protected=true /&gt;
   &lt;/div&gt;
&lt;hr/&gt;
This page is not available.
&lt;/@&gt;

&lt;@templateFooter&gt;
   &lt;div id=&quot;alf-ft&quot;&gt;
      &lt;@region id=&quot;footer&quot; scope=&quot;global&quot; protected=true /&gt;
   &lt;/div&gt;
&lt;/@&gt;
</pre>
<p>Du kan naturligtvis lämna vilket meddelande du vill.<br />
Ladd om webscripten eller start om din server, och sidan är inaktiverad.<br />
För varje ytterligare sida som du vill inaktivera så kan du återanvända mallen. Allt du behöver göra är första steget att kopiera definitionsfilen för sida, och ändra referensen till den nya sida. För att vet vilken fil det är, navigera till den sidan som du vill inaktivera, det som står efter /page/ är oftast lika med deinitionsfilen med filändelsen xml.</p>
<p>Och naturligtvis går detta att göra mer avancerat så som att lägga till response status 404, lägga till I18N stöd, eller inludera component webscripts. Men det här är en bit på vägen.</p>
]]></content:encoded>
			<wfw:commentRss>http://loftux.se/2011/06/23/inaktivera-en-sida-i-alfresco-share/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CKEditor plugin för Alfresco Share</title>
		<link>http://loftux.se/2011/05/11/ckeditor-plugin-for-alfresco-share/</link>
		<comments>http://loftux.se/2011/05/11/ckeditor-plugin-for-alfresco-share/#comments</comments>
		<pubDate>Wed, 11 May 2011 07:34:32 +0000</pubDate>
		<dc:creator>Peter Löfgren</dc:creator>
				<category><![CDATA[Alfresco]]></category>
		<category><![CDATA[ckeditor]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[extras]]></category>
		<category><![CDATA[formulär]]></category>
		<category><![CDATA[share]]></category>

		<guid isPermaLink="false">http://loftux.se/?p=694</guid>
		<description><![CDATA[<p><a href="http://loftux.se/wp-content/uploads/2011/05/ckeditor-edit.png"></a>Alfresco Share använder som standard TinyMCE för direktredigering av html filer. För ett projekt behövde jag kunna anpassa TinyMCE, men den version som Alfresco använder har en del Alfresco specifika anpassningar. Så istället använde jag mig av CKEditor, <a href="http://ckeditor.com" target="_blank">ckeditor.com</a>.</p> <p>Funktionalitet</p> All standardfunktionalitet i CKEditor. Anpassade konfigurationsfiler Infoga bildfiler direkt från Alfresco Share [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://loftux.se/wp-content/uploads/2011/05/ckeditor-edit.png"><img src="http://loftux.se/wp-content/uploads/2011/05/ckeditor-edit-300x220.png" alt="" title="ckeditor-edit" width="300" height="220" class="alignleft size-medium wp-image-695" /></a>Alfresco Share använder som standard TinyMCE för direktredigering av html filer. För ett projekt behövde jag kunna anpassa TinyMCE, men den version som Alfresco använder har en del Alfresco specifika anpassningar. Så istället använde jag mig av CKEditor, <a href="http://ckeditor.com" target="_blank">ckeditor.com</a>.</p>
<p>Funktionalitet</p>
<ul>
<li>All standardfunktionalitet i CKEditor. </li>
<li>Anpassade konfigurationsfiler</li>
<li>Infoga bildfiler direkt från Alfresco Share webbplats.</li>
</ul>
<p>För formulär i Alfresco är det enkelt att skapa nya kontroller. I detta fall så anger du bara att du vill använda den nya kontrollen enligt</p>
<pre class="brush: xml; title: ; notranslate">&lt;appearance&gt;
   &lt;field id=&quot;cm:content&quot;&gt;
      &lt;control template=&quot;/org/alfresco/components/form/controls/ckeditor.ftl&quot;&gt;
         &lt;control-param name=&quot;forceEditor&quot;&gt;true&lt;/control-param&gt;
      &lt;/control&gt;
   &lt;/field&gt;
&lt;/appearance&gt;</pre>
<p>Själva kontrollen inklusive källkod <a href="http://code.google.com/p/share-extras/downloads/detail?name=ckeditor-form-control-0.1.jar" target="_blank">ladda ner</a> från <a href="http://code.google.com/p/share-extras/wiki/CKEditorFormControl" target="_blank">Share Extras projektet</a>. Mer om hur du konfigurerar formulär på <a href="http://wiki.alfresco.com/wiki/Forms" target="_top">Alfresco Wiki</a><br />
För att installera, kopiera filen ckeditor-form-control-0.1.jar till tomcat/webapps/share/WEB-INF/lib. Sedan ändrar du dina formulärdefinitioner enligt ovan eller kopierar filen <a href="http://share-extras.googlecode.com/svn/trunk/CKEditor%20Form%20Control/ckeditor-config-custom.xml.sample" target="_blank">ckeditor-config-custom.xml</a> (ta bort filändelsen sample) till tomcat/shared/classes/alfresco/web-extension och startar om.</p>
<p>Vill du använda en anpassad konfigurationsfil för att ange vilka knappar som visas och styra utseende så kan du ange vilken med</p>
<pre class="brush: xml; title: ; notranslate">&lt;control-param name=&quot;settingsfile&quot;&gt;components/editors/ckeditor/my-config.js&lt;/control-param&gt;</pre>
<p>Sökvägen skall vara utan inledande / och sedan till den plats där du placerat filen. Om du skapar en bra config fil så inkluderar jag den gärna om du skickar den till mig. Kommer framöver lägga till några alternativa konfigurationsfiler.<br />
<a href="http://loftux.se/wp-content/uploads/2011/05/ckeditor-filebrowser.png"><img src="http://loftux.se/wp-content/uploads/2011/05/ckeditor-filebrowser-300x252.png" alt="" title="ckeditor-filebrowser" width="300" height="252" class="alignleft size-medium wp-image-704" /></a><br />
För att bläddra efter bilder så klickar du bara &#8221;bläddra på server&#8221; så listas miniatyrbilder. Jag baserade den på Image dashleten som finns i Share, så naturligtvis kan du klicka på bilden och få en full förhandsgrandskning. Välj en bild genom att klicka namnet.</p>
]]></content:encoded>
			<wfw:commentRss>http://loftux.se/2011/05/11/ckeditor-plugin-for-alfresco-share/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fixa epostmallen för inbjudan i Alfresco Share</title>
		<link>http://loftux.se/2011/04/05/fixa-epostmallen-for-inbjudan-i-alfresco-share/</link>
		<comments>http://loftux.se/2011/04/05/fixa-epostmallen-for-inbjudan-i-alfresco-share/#comments</comments>
		<pubDate>Tue, 05 Apr 2011 09:22:06 +0000</pubDate>
		<dc:creator>Peter Löfgren</dc:creator>
				<category><![CDATA[Alfresco]]></category>
		<category><![CDATA[Freemarker]]></category>
		<category><![CDATA[share]]></category>

		<guid isPermaLink="false">http://loftux.se/?p=674</guid>
		<description><![CDATA[<p>I Alfresco Share så kan du väldigt enkelt bjuda in interna men även externa användare till en webbplats. Alfresco skapar användarkontot för externa användara med tillhörande lösenord om inte redan finns. Inbjudan skickas ut som ett epostmeddelande till de inbjudna som innehåller en länk för att bekräfta eller avslå inbjudan, och därefter kan användare deltaga [...]]]></description>
			<content:encoded><![CDATA[<p>I Alfresco Share så kan du väldigt enkelt bjuda in interna men även externa användare till en webbplats. Alfresco skapar användarkontot för externa användara med tillhörande lösenord om inte redan finns. Inbjudan skickas ut som ett epostmeddelande till de inbjudna som innehåller en länk för att bekräfta eller avslå inbjudan, och därefter kan användare deltaga och hantera information i webbplatsen.</p>
<p>Mallen som används finns sparad i Arkiv> Data Dictionary> Email Templates> invite och heter invite-email.ftl. Du når den alltså genom att i Alfresco Share klicka på knappen Arkiv (Repository) i verktygsraden, och sedan bläddra dig fram till invite-email.ftl. Du kan redigera den direkt i webbläsaren om du vill. Enkla saker vi kan göra här är naturligtvis att översätta allt till svenska, och ändra avsändare.</p>
<p>Den bekräftelselänk som skapas sätter servernamnet till den server som den som bjuder in använder. Det är i det allra flesta fall alldeles tillräckligt, men av olika skäl så kanske du vill dirigera interna och externa användare till olika servers. Du kanske har satt upp olika autentiseringsmetoder för interna och externa användare, eller att du anpassat den externa Share instansen för just externa användare.<br />
<code>http://alfresco.example.com/share/page/accept-invite?inviteId=jbpm$156&#038;inviteeUserName=peter%40example.com&#038;siteShortName=mysite&#038;inviteTicket=610b4819-0153-4406-9d85-0357e5ee65d3</code><br />
Exemplet ovan visar hur länken för inbjudan kan se ut, i exemplet så kommer alfresco.example.com från den server som personen som bjudit in använt. Vi vill dock att alla externa användare skall slussas till <nobr>alfresco-external.example.com</nobr>. Det kan vi enkelt göra med lite <a href="http://freemarker.sourceforge.net/">freemarker</a> kod. Har du aldrig använt detta tidigare skall du inte se det som ett stor hinder, kan du lite html och/eller javascript går det lätt att förstå, och freemarker är väl dokumenterat.</p>
<p>Så här kan mallen se ut, jag har skrivit kommentarer inline för att förklara.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;#assign inviterPersonRef=args[&quot;inviterPersonRef&quot;]/&gt;
&lt;#assign inviterPerson=companyhome.nodeByReference[inviterPersonRef]/&gt;
&lt;#assign inviteePersonRef=args[&quot;inviteePersonRef&quot;]/&gt;
&lt;#assign inviteePerson=companyhome.nodeByReference[inviteePersonRef]/&gt;
&lt;#-- Ta bort servernamnet ur länken--&gt;
&lt;#assign jaLink=args[&quot;acceptLink&quot;]?substring(args[&quot;acceptLink&quot;]?index_of(&quot;/share&quot;)) /&gt;
&lt;#assign nejLink=args[&quot;rejectLink&quot;]?substring(args[&quot;rejectLink&quot;]?index_of(&quot;/share&quot;)) /&gt;
&lt;#assign userName=args[&quot;inviteeUserName&quot;]?string /&gt;
&lt;#-- Sätt servernamn beroende på om användare är extern eller intern --&gt;
&lt;#if userName?index_of(&quot;@&quot;) &amp;gt; 0 &gt;
&lt;#-- Alla externa användare har epostadress som användarnamn, kolla efter detta --&gt;
    &lt;#assign serverName=&quot;http://alfresco-external.example.com&quot; /&gt;
&lt;#else&gt;
    &lt;#assign serverName=&quot;https://alfresco.example.com&quot; /&gt;
&lt;/#if&gt;

Hej ${inviteePerson.properties[&quot;cm:firstName&quot;]},

Du har blivit inbjuden av ${inviterPerson.properties[&quot;cm:firstName&quot;]} ${inviterPerson.properties[&quot;cm:lastName&quot;]} att deltaga i webbplatsen '${args[&quot;siteName&quot;]}'.

Din roll i webbplatsen kommer vara ${args[&quot;inviteeSiteRole&quot;]}.

För att acceptera inbjudan klicka länken nedan
&lt;#-- Sätt ihop servernamnsom är olika beroende på om det är extern eller intern användare med ja-länk --&gt;
${serverName}${jaLink}

&lt;#if args[&quot;inviteeGenPassword&quot;]?exists&gt;
och ange följande information:

Användarnamn: ${args[&quot;inviteeUserName&quot;]}
Lösenord: ${args[&quot;inviteeGenPassword&quot;]}

Det rekommenderas starkt att du byter lösenord direkt efter inloggning via 'Min profil'.

&lt;/#if&gt;
Om du inte vill bli medlem i webbplatsen klicka:
&lt;#-- Sätt ihop servernamn med nej-länk --&gt;
${serverName}${nejLink}

Sätt ett bokmärke till servern när du skall logga in nästa gång
${serverName} &lt;#-- Denna är viktig, många användare missar var de skall gå efter att de väl accepterat första gången --&gt;
Du kan även skapa bokmärken för andra platser i Alfresco Share om du vill nå en plats snabbt.

Med vänlig hälsning

${inviterPerson.properties[&quot;cm:firstName&quot;]} ${inviterPerson.properties[&quot;cm:lastName&quot;]}
Företaget AB
</pre>
<p>Notera att du nu kan lägga in en länk till själva servern. Jag har märkt att det ibland uppstår lite förvirring var användaren skall navigera efter att de accepterat en inbjudan. Ofta letar de upp epostmeddelandet igen, och klickar den enda länk de hittar, men får då ett felmeddelande eftersom de redan accepterat inbjudan. Tyvärr stöds inte html formaterade epostmeddelande av Alfresco än så det utgående meddelandet blir formaterat i ren text.<br />
Ett annat tips kan vara att lägga in en länk till en hjälpsida i wiki (om din hjälpasida heter Getting Started)<br />
<code>${serverName}/share/page/site/publicsitename/wiki-page?title=Getting_Started</code><br />
Det måste dock vara en länk till en site som är publik, så att alla har läsrättigheter. </p>
<p>Jag har konfigurerat om Alfresco så externa användarid skapas som epostadress. Det gör du genom att skapa en fil i tomcat/shared/classes/alfresco/extension som heter invite-context.xml med innehållet</p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version='1.0' encoding='UTF-8'?&gt;
&lt;!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'&gt;
&lt;beans&gt;
    &lt;bean id=&quot;nameBasedUserNameGenerator&quot; class=&quot;org.alfresco.repo.security.authentication.NameBasedUserNameGenerator&quot;&gt;
            &lt;!-- name patterns available:
       		%lastName%,  lower case last name
       		%firstName%, lower case first name
       		%emailAddress% email address
           	%i% lower case first name inital
     		--&gt;
        &lt;property name=&quot;namePattern&quot;&gt;
        	&lt;value&gt;%emailAddress%&lt;/value&gt;
        &lt;/property&gt;
        &lt;property name=&quot;userNameLength&quot;&gt;
            &lt;value&gt;10&lt;/value&gt;
        &lt;/property&gt;
    &lt;/bean&gt;
&lt;/beans&gt;
</pre>
<p>Det går även bra att lägga till fast text, till exempel om du vill att alla skall ha ett prefix ext så använder du <code><value>ext_%firstName%_%lastName%</value></code>.</p>
<p>Hoppas detta gett lite idéer om vad du kan göra. Det går naturligtvis göra mycket mer, exempel kan vara att lägga in länkar till support, länkar till sökningar, lägga in texten på flera språk med mera. Eftersom detta meddelande är det första många användare möter så är det värt att arbeta lite med mallen. Lyckat till.</p>
]]></content:encoded>
			<wfw:commentRss>http://loftux.se/2011/04/05/fixa-epostmallen-for-inbjudan-i-alfresco-share/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Site News med drag och släpp konfiguration</title>
		<link>http://loftux.se/2011/03/07/google-site-news-med-drag-och-slapp-konfiguration/</link>
		<comments>http://loftux.se/2011/03/07/google-site-news-med-drag-och-slapp-konfiguration/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 08:30:49 +0000</pubDate>
		<dc:creator>Peter Löfgren</dc:creator>
				<category><![CDATA[Alfresco]]></category>
		<category><![CDATA[dashlet]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[share]]></category>

		<guid isPermaLink="false">http://loftux.se/?p=636</guid>
		<description><![CDATA[<p><a href="http://loftux.se/wp-content/uploads/2011/03/GoogleSiteNewsDashlet.png"></a>Om du är ute efter att hitta plugins till Alfresco så har Will Abson (<a href="http://blogs.alfresco.com/wp/wabson/">personlig blogg</a>) skapat en utmärkt samling med dashlets, teman och dokumentaktiviteter tillgängliga på<a href="http://code.google.com/p/share-extras/"> Share Extras</a>. Till denna samling har jag bidragit med den dashlet, Google Site News, som jag skapade strax efter att första versionen av Alfresco Share [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://loftux.se/wp-content/uploads/2011/03/GoogleSiteNewsDashlet.png"><img src="http://loftux.se/wp-content/uploads/2011/03/GoogleSiteNewsDashlet-185x300.png" alt="" title="GoogleSiteNewsDashlet" width="185" height="300" class="alignleft size-medium wp-image-641" /></a>Om du är ute efter att hitta plugins till Alfresco så har Will Abson (<a href="http://blogs.alfresco.com/wp/wabson/">personlig blogg</a>) skapat en utmärkt samling med dashlets, teman och dokumentaktiviteter tillgängliga på<a href="http://code.google.com/p/share-extras/"> Share Extras</a>. Till denna samling har jag bidragit med den dashlet, Google Site News, som jag skapade strax efter att första versionen av Alfresco Share kom ut. Den har funnits tillgänglig för nedladdning via Alfresco Developer Toolbox på Alfresco&#8217;s webbplats.</p>
<p>Den första versionen är inte konfigurerbar, och tog bara namnet på webbplatsen (siten), och visar vad som indexerats av Google baserat på webbplatsens namn. Och därav kommer namnet på dashleten, det är nyheter kring din webbplats som visas. Det fungerade som exempel på hur du kan skapa en dashlet, men för att verkligen komma till nytta så behövs möjligheten att konfigurera dashleten med anpassade sökningar.</p>
<p><a href="http://loftux.se/wp-content/uploads/2011/03/ConfigureGoogleSiteNews.png"><img src="http://loftux.se/wp-content/uploads/2011/03/ConfigureGoogleSiteNews-300x177.png" alt="" title="ConfigureGoogleSiteNews" width="300" height="177" class="alignleft size-medium wp-image-638" /></a>Den version som nu finns att ladda ner från Share Extras har fått möjlighet till att anpassa sökfrågan (standard om du inte konfigurerar är fortfarande webbplatsens namn). Du kan använda alla de sökalternativ som du använder vid en normal google sökning för att få en bättre träffbild. Du kan även ange antal dagar bakåt i tiden som sökningen skall göras. Med hjälp av drag och släpp kan du även ange vilka sökningar (flikar) som kommer att visas, och i vilken ordning de visas.</p>
<p><a href="http://code.google.com/p/share-extras/downloads/detail?name=google-site-news-dashlet-0.2.jar&#038;can=2&#038;q=">Ladda ner</a>. <a href="http://code.google.com/p/share-extras/wiki/GoogleSiteNewsDashlet">Instruktioner</a>.</p>
<p>Ladda ner jar filen, färdigkompilerad för att läggas till i Share (se <a href="http://code.google.com/p/share-extras/wiki/GoogleSiteNewsDashlet">instruktioner</a>). Eller ladda ner källkoden för att skapa din egen variant. Om du vill får du gärna bidra med översättningar till andra språk (just nu finns den på engelska och svenska). Eller så kanske du har en helt egen Share komponent du vill del med dig av till Alfresco Comunityt?</p>
]]></content:encoded>
			<wfw:commentRss>http://loftux.se/2011/03/07/google-site-news-med-drag-och-slapp-konfiguration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pekplatteklient för Alfresco baserad på jQuery Mobile</title>
		<link>http://loftux.se/2011/01/27/pekplatteklient-for-alfresco-baserad-pa-jquery-mobile/</link>
		<comments>http://loftux.se/2011/01/27/pekplatteklient-for-alfresco-baserad-pa-jquery-mobile/#comments</comments>
		<pubDate>Thu, 27 Jan 2011 08:36:30 +0000</pubDate>
		<dc:creator>Peter Löfgren</dc:creator>
				<category><![CDATA[Alfresco]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[pekplatta]]></category>
		<category><![CDATA[share]]></category>

		<guid isPermaLink="false">http://loftux.se/?p=564</guid>
		<description><![CDATA[<p>Som många andra gjorde den här julen skaffade jag mig en IPAD. Och vad bättre användning skulle du ha av din pekplatta än bläddra i ditt dokumentarkiv med den?<br /> Alfresco Share är inte riktigt pekplatte vänlig, och beta Mobile-klienten Alfresco gjorde har inte uppdaterats för de senaste versionerna. Min gissning är Alfresco kommer släppa [...]]]></description>
			<content:encoded><![CDATA[<p>Som många andra gjorde den här julen skaffade jag mig en IPAD. Och vad bättre användning skulle du ha av din pekplatta än bläddra i ditt dokumentarkiv med den?<br />
Alfresco Share är inte riktigt pekplatte vänlig, och beta Mobile-klienten Alfresco gjorde har inte uppdaterats för de senaste versionerna. Min gissning är Alfresco kommer släppa en något mer pekplatta/mobilvänlig klient, men varför vänta? </p>
<p>Jag ville skapa något webbaserat, och fann <a href="http://jquerymobile.com/">jQuery Mobile</a> ramverket: </p>
<blockquote><p> Ett enhetligt system användargränssnitt för alla populära mobila plattformar, byggda på bergfast grund jQuery och jQuery UI. Dess lätta kod är byggt med gradvisa förbättringar, och har ett flexibelt och enkelt design med temastöd. (min översättning)</Blockquote><br />
Det är fortfarande Alpha, men med detta ramverk kunde jag enkelt och snabbt skapa en webbaserad klient. Och eftersom jQuere Mobile försöker stödja så många plattformar som möjligt, så borde det fungera inte bara med iPad, utan även med Android och Blackberry enheter.</p>
<p><object width="595" height="360"><param name="movie" value="http://www.youtube.com/e/MY7WUTfnFSU"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/e/MY7WUTfnFSU" type="application/x-shockwave-flash" width="595" height="360" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Jag gjorde detta inom den befintliga Share klienten stället för att skapa en fristående, så jag kunde återanvända det som redan finns, såsom inloggning och anslutning till repository. Nuvarande Share inloggningsrutan är inte optimal med pekskärm då den insisterar på centrera sig, men som skulle kunna fixas. Jag har återanvänt JavaScript-kod från Alfresco dashlets, och den gamla mobil klienten och skapat lite ny kod. Jag behövde inte skapa någon klient-side javascript kod än, då klienten bara har stöd för att bläddra i Share webbplatser. Det skulle förmodligen förändras när du börjar lägga till mer avancerade saker, men jag är verkligen positivt överraskad av vad man får ut som standard av jQuery Mobile. </p>
<p>Det finns några designbeslut som förmodligen skulle ändras. jQuery Mobile använder ajax baserat sidladdning med # i url, <server>/basefolder/basepage.html#undermapp/subpagetoload.html. I detta fall laddas <server>/basefolder/undermapp/subpagetoload.html. Jag var först inte säker på om absoluta sökvägar stöds och att det skulle fungera med Share pages, så jag skapade på startsidan, <server>/share/page/lxmobile som är sub-paged, <server>/share/page/lxmobile/{mpage}, med components i stället för att stödja relativa sökvägar. I slutändan blev det absoluta sökvägar i länkar ändå att få det att fungera bra, och skulle använda använda egna Share pages om jag startade på nytt. </p>
<p>Du kan ladda ner och testa det själv. Källkod är <a href='http://loftux.se/wp-content/uploads/2011/01/LoftuxMobile.zip'>bifogad (ladda ner här)</a> testad med Community 3.4.c, och för att testa detta kan du släppa lxmobile.jar i webapps/share/WEB-INF/lib och starta om. Det finns många funktioner i jQuery Mobile som kan vara användbara, såsom dialogrutor, knappar och formulär, om klienten ska tas till nästa nivå i användbarhet. </p>
]]></content:encoded>
			<wfw:commentRss>http://loftux.se/2011/01/27/pekplatteklient-for-alfresco-baserad-pa-jquery-mobile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alfresco Cifs Desktop action som öppnar Share</title>
		<link>http://loftux.se/2010/11/09/alfresco-cifs-desktop-action-som-oppnar-share/</link>
		<comments>http://loftux.se/2010/11/09/alfresco-cifs-desktop-action-som-oppnar-share/#comments</comments>
		<pubDate>Tue, 09 Nov 2010 07:17:32 +0000</pubDate>
		<dc:creator>Peter Löfgren</dc:creator>
				<category><![CDATA[Alfresco]]></category>
		<category><![CDATA[cifs]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[share]]></category>

		<guid isPermaLink="false">http://loftux.se/?p=497</guid>
		<description><![CDATA[<p>Alfresco kan göra information tillgänglig på flera sätt, ett av dem är CIFS, det vill säga att du mappar upp ditt dokumentlager i windows utforskaren som om det vore en vanlig filserver. Det är dock lite mer än en vanligt filserver, du har till exempel versionshantering och möjligheter att skapa regler.<br /> För att förenkla [...]]]></description>
			<content:encoded><![CDATA[<p>Alfresco kan göra information tillgänglig på flera sätt, ett av dem är CIFS, det vill säga att du mappar upp ditt dokumentlager i windows utforskaren som om det vore en vanlig filserver. Det är dock lite mer än en vanligt filserver, du har till exempel versionshantering och möjligheter att skapa regler.<br />
För att förenkla hantering av dokument så kan administratör konfigurera små virtuella applikationer, <a href="http://wiki.alfresco.com/wiki/Desktop_Actions">desktop actions</a>, dit användare kan dra och släppa dokument. Standard är en för Ut och Incheckning, och en för att visa detaljerad information genom att öppna webbgränssnittet till Alfresco.</p>
<p>Den senare i fortsatt länkad till Alfresco Explorer, om användare drar och släpper en fil på applikationen kommer Alfresco Explorer öppnas och visa just den filen. Men nu vill vi ju gärna att det istället är Alfresco Share som öppnas, den är klart bättre att jobba med. Så här kan du göra.<br />
<span id="more-497"></span><br />
När du gjort stegen neden kommer du ha en ny desktop action. Dubbelklickar du __VisaInformation.exe så visas aktuell katalog i Share, drar du och släpper en fil så visas dokumentöversikt inklusive förhandsgranskning för den filen. Funktionen känner av om filen är en del av sen site (webbplats), och visar den i aktuell Site. Om inte så visas den i Arkiv (Repository) läget.</p>
<p>I mappen tomcat/shared/classes/alfresco/extension så skapar du katalogstrukturen /subsystems/fileServers/default/default.<br />
Notera att det INTE är ett misstag, det skall vara dubbla default.<br />
I mappen &#8216;default&#8217; skapar du en fil, myfile-server-context.xml (kan vara vilket namn som helst som slutar på -context.xml) med innehållet:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;!DOCTYPE beans PUBLIC &quot;-//SPRING/DTD BEAN//EN&quot;
    &quot;http://www.springframework.org/dtd/spring-beans.dtd&quot;&gt;
&lt;beans&gt;
   &lt;bean id=&quot;filesystemContexts&quot; class=&quot;org.springframework.beans.factory.config.ListFactoryBean&quot;&gt;
      &lt;property name=&quot;sourceList&quot;&gt;
         &lt;list&gt;
            &lt;!-- Alfresco repository access shared filesystem --&gt;
            &lt;bean class=&quot;org.alfresco.filesys.repo.ContentContext&quot;&gt;
               &lt;property name=&quot;sysAdminParams&quot;&gt;
                  &lt;ref bean=&quot;sysAdminParams&quot; /&gt;
               &lt;/property&gt;
               &lt;property name=&quot;deviceName&quot;&gt;
                  &lt;value&gt;${filesystem.name}&lt;/value&gt;
               &lt;/property&gt;
               &lt;property name=&quot;storeName&quot;&gt;
                  &lt;value&gt;${spaces.store}&lt;/value&gt;
               &lt;/property&gt;
               &lt;property name=&quot;rootPath&quot;&gt;
                  &lt;value&gt;/${spaces.company_home.childname}&lt;/value&gt;
               &lt;/property&gt;
               &lt;!-- Mark locked files as offline --&gt;
               &lt;property name=&quot;offlineFiles&quot;&gt;
                  &lt;value&gt;true&lt;/value&gt;
               &lt;/property&gt;
	        &lt;!-- Enable the quota manager --&gt;
	        &lt;property name=&quot;quotaManager&quot;&gt;
		   &lt;ref bean=&quot;filesystemQuotaManager&quot; /&gt;
	        &lt;/property&gt;

               &lt;property name=&quot;globalDesktopActionConfig&quot;&gt;
                  &lt;bean class=&quot;org.alfresco.filesys.config.GlobalDesktopActionConfigBean&quot;&gt;
                     &lt;property name=&quot;path&quot;&gt;
                        &lt;value&gt;alfresco/desktop/Alfresco.exe&lt;/value&gt;
                     &lt;/property&gt;
                  &lt;/bean&gt;
               &lt;/property&gt;
               &lt;property name=&quot;desktopActionList&quot;&gt;
                  &lt;list&gt;
                      &lt;bean class=&quot;org.alfresco.filesys.repo.desk.CheckInOutDesktopAction&quot;&gt;
                        &lt;property name=&quot;name&quot;&gt;
                           &lt;value&gt;CheckInOut&lt;/value&gt;
                        &lt;/property&gt;
                        &lt;property name=&quot;filename&quot;&gt;
                           &lt;value&gt;__UtOchIncheckning.exe&lt;/value&gt;
                        &lt;/property&gt;
                     &lt;/bean&gt;
                      &lt;!-- This is the new config to support the custom action --&gt;
                     &lt;bean class=&quot;org.alfresco.filesys.repo.desk.JavaScriptDesktopAction&quot;&gt;
                        &lt;property name=&quot;name&quot;&gt;
                           &lt;value&gt;JavaScript&lt;/value&gt;
                        &lt;/property&gt;
                        &lt;property name=&quot;filename&quot;&gt;
                           &lt;value&gt;__VisaInformation.exe&lt;/value&gt;
                        &lt;/property&gt;
                        &lt;property name=&quot;scriptName&quot;&gt;
                           &lt;value&gt;alfresco/extension/desktopActionShowDetails.js&lt;/value&gt;
                        &lt;/property&gt;
                        &lt;property name=&quot;attributeList&quot;&gt;
                            &lt;!-- multiplePaths must be present to support allowNoParams --&gt;
                           &lt;value&gt;anyFiles, multiplePaths, allowNoParams&lt;/value&gt;
                        &lt;/property&gt;
                        &lt;property name=&quot;preprocess&quot;&gt;
                           &lt;value&gt;copyToTarget&lt;/value&gt;
                        &lt;/property&gt;
                     &lt;/bean&gt;
                  &lt;/list&gt;
               &lt;/property&gt;
            &lt;/bean&gt;
         &lt;/list&gt;
      &lt;/property&gt;
   &lt;/bean&gt;
&lt;/beans&gt;
</pre>
<p>Skapa filen desktopActionShowDetails.js i tomcat/shared/classes/alfresco/extension med innehållet</p>
<pre class="brush: jscript; title: ; notranslate">
/*
Alfresco Desktop Action to Open Share
Created by Peter Löfgren, Loftux AB, http://loftux.se
*/
function getSiteName(nodeRef){
	var sitename = &quot;&quot;;
	//First Check if we are in a site root folder.
	if(nodeRef.name==&quot;documentLibrary&quot;){
		sitename = nodeRef.parent.properties.name;
	}else{
		var parentNode = nodeRef.parent;
		while(parentNode!=null){
			if(parentNode.isContainer){
				if(parentNode.hasPermission(&quot;Read&quot;)){
					if(parentNode.properties.name==&quot;documentLibrary&quot;){
						sitename = parentNode.parent.properties.name;
						break;
					}
				}
			}
			parentNode = parentNode.parent;
		}
	}
	return sitename;
}

//Main action
function runAction()
{
	//Get the share url. Companhome object is not available to us, so we need to do a search
	var companyhome = search.findNode(&quot;path&quot;, ['workspace','SpacesStore','app:company_home']);
        //Prior 3.4, use this variant
        //var companyhome = search.findNode(&quot;path&quot;, ['workspace','SpacesStore','/']);
        //ShareUrl is a content object that needs to be created
	var shareurlsetting = companyhome.childByNamePath('/Data Dictionary/Loftux/ShareUrl');
	if(shareurlsetting!=null){
		var servercontext = shareurlsetting.properties[&quot;title&quot;];
	}else {
		var servercontext = &quot;http://localhost:8080/share&quot;
	}

	if(deskParams.numberOfTargetNodes()==0){
		//No parameters, do a folder listing
		var nodeRef = utils.getNodeFromString(deskParams.getFolderNode());
		var siteName = getSiteName(nodeRef);
		var displayPath = nodeRef.displayPath + &quot;/&quot;+nodeRef.name;

		if(siteName!=&quot;&quot;){
			var replace = &quot;Company Home/Sites/&quot;+siteName+&quot;/documentLibrary&quot;
			displayPath = displayPath.replace(replace,&quot;&quot;);
			displayPath = displayPath.replace(&quot;//&quot;,&quot;/&quot;);
			var urlStr = servercontext + &quot;/page/site/&quot;+siteName+&quot;/documentlibrary?path=&quot;+displayPath
		}else{
			//In this case, Share is set to display Repository from root
			//Company Home, if not remove that part as well.
			displayPath = displayPath.replace(&quot;Company Home&quot;,&quot;&quot;);
			//displayPath = displayPath.replace(&quot;Company Home/MyStartSpace&quot;,&quot;&quot;);
			displayPath = displayPath.replace(&quot;//&quot;,&quot;/&quot;);
			var urlStr = servercontext + &quot;/page/repository?path=&quot;+displayPath
		}
	}else{
		//Drag &amp; drop of a file, display details of that file
		var nodeRef = utils.getNodeFromString(deskParams.getTarget(0).getNode());
		var siteName = getSiteName(nodeRef);
		if(siteName!=&quot;&quot;){
			//File is in a site
			var urlStr = servercontext +&quot;/page/site/&quot;+siteName+&quot;/document-details?nodeRef=workspace://SpacesStore/&quot;+nodeRef.getId();
		}else{
			var urlStr = servercontext +&quot;/page/document-details?nodeRef=workspace://SpacesStore/&quot;+nodeRef.getId();
		}
	}
	return urlStr;
}

var response = &quot;7,&quot; + runAction();
response;
</pre>
<p>Du måste lägga till en fil i Alfresco för att sätta vilken Share server url som skall användas. Det gör du enligt koden ovan genom att i Data Dictionary skapa ett Space med namn Loftux, och sedan en fil (kan vara utan innehåll) med namnet ShareUrl. Vill du ha ett annat namn, ändra i till motsvarande i koden. I propertien title skriver du in adressen till Share servern, till exempel http://myalfresco.com/share. Det var det enklaste sättet för att skapa dynamisk inställning för url utan att hårdkoda, om någon har andra förslag se <a href="http://forums.alfresco.com/en/viewtopic.php?f=48&#038;t=35690">denna</a> diskussion i Alfresco forum.</p>
<p>De root objekt såsom companyhome som finns tillgängliga när du använder javascript i till exempel webscript finns inte tillgängliga i desktop action scripts. Därför måste du söka efter companyhome. Syntaxen ändrades något för detta i version 3.4 som används ovan. Om inte det fungerar, så pröva den version som är bortkommenterad. I javascript koden måste du också ändra så att sökvägen stämmer överens för dokument som ligger i Arkiv (Repository) delen av Share. Har du ändrat så att Share visar en annan startkatalog, så använd full sökväg enligt bortkommenterat exempel.</p>
<p>Tyvärr fungerar det inte den ticket som finns att använda för automatisk inloggning (såsom standard ShowDetails fungerar i Alfresco Explorer) i Share. Men det är ju bättre att man kommer till rätt klient iallafall. Om du undrar varför det är två understreck i börja av namnet på den virtuella applikationen så är det för att de skall sorteras först i fillistningen. Du kan ändra det om du vill. Eller lägga till en ny konfiguration som pekar på samma javascript fil, men som har namnet <code>&lt;value&gt;ÖÖÖ__ShowInformation.exe&lt;/value&gt;</code> så kommer det en virtuell applikation sist i din lista, bra om du har många filer.</p>
]]></content:encoded>
			<wfw:commentRss>http://loftux.se/2010/11/09/alfresco-cifs-desktop-action-som-oppnar-share/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ange dokumenttyp när du laddar upp nytt dokument</title>
		<link>http://loftux.se/2010/03/22/ange-dokumenttyp-nar-du-laddar-upp-nytt-dokument/</link>
		<comments>http://loftux.se/2010/03/22/ange-dokumenttyp-nar-du-laddar-upp-nytt-dokument/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 10:11:09 +0000</pubDate>
		<dc:creator>Peter Löfgren</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[metadata]]></category>
		<category><![CDATA[Programmering]]></category>
		<category><![CDATA[share]]></category>

		<guid isPermaLink="false">http://loftux.se/?p=331</guid>
		<description><![CDATA[<p>I Alfresco Share så vill man gärna kunna sätta dokumenttypen redan när du laddar upp ett dokument. Annars blir det en 2-stegsprocess där du först måste ladda upp dokumentet, och sedan ändra typ.<br /> Det är full möjligt, men det kräver lite kodändring. Det mesta är dock redan gjort av Alfresco&#8217;s utvecklare, så du skall [...]]]></description>
			<content:encoded><![CDATA[<p>I Alfresco Share så vill man gärna kunna sätta dokumenttypen redan när du laddar upp ett dokument. Annars blir det en 2-stegsprocess där du först måste ladda upp dokumentet, och sedan ändra typ.<br />
Det är full möjligt, men det kräver lite kodändring. Det mesta är dock redan gjort av Alfresco&#8217;s utvecklare, så du skall snabbt kunna göra dessa ändringar själv.<br />
Leta reda på filen */site-webscripts/org/alfresco/components/upload/flash-upload.get.js. Den används både för flash upload och html upload, så dina ändringar gäller för båda sätten att ladda upp filer.<br />
I den, så lägg till dina dokumenttyper i arrayen.</p>
<pre class="brush: jscript; title: ; notranslate">
/**
 * Custom content types
 */
function getContentTypes()
{
   // TODO: Data webscript call to return list of available types
   var contentTypes = [
   {
      id: &quot;cm:content&quot;,
      value: &quot;cm_content&quot;
   },
   {
      id: &quot;my:customtype&quot;,
      value: &quot;my_customtype&quot;
   }
   ];

   return contentTypes;
}

model.contentTypes = getContentTypes();
</pre>
<p>TODO är Alfresco-utvecklarnas egen, så det kanske kommer ett konfigurationsalternativ senare, men nu är det så här du måste göra.<br />
Du måste också lägga till properties i filen flash-upload.get.properties, och i detta fall även html-upload.get.properties. Har du språkpaket, lägg till även i de properties filerna.<br />
Lägg till värdet för &#8221;value&#8221; i javascript-koden för var och en av dina anpassade dokumenttyper</p>
<pre class="brush: plain; title: ; notranslate">my_customtype=Min egen typ</pre>
<p>Det fungerar bra, och du får sätta dokumenttyp för varje fil individuellt. Har noterat en bugg, och det är att du får ange dokumenttyp även när du laddar upp ny version, men det ändrar trots det inte dokumenttyp.<br />
Så här kan det se ut.<br />
<a href="http://loftux.se/wp-content/uploads/2010/03/FileUpload.png"><img src="http://loftux.se/wp-content/uploads/2010/03/FileUpload-300x183.png" alt="" title="FileUpload" width="300" height="183" class="aligncenter size-medium wp-image-335" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://loftux.se/2010/03/22/ange-dokumenttyp-nar-du-laddar-upp-nytt-dokument/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

