Bucherscheinung: Alfresco & Liferay – ECM- und Portallösungen von Sebastian Wenzky jetzt verfügbar!

04 Sep
September 4, 2013
 

Bildschirmfoto 2013-09-04 um 19.23.24Beginnt man an einem solchen großen Projekt wie einem „Buch“ zu schreiben, stellt man sich unwiderruflich die Frage, wie das schlussendliche Ergebnis bei den Lesern ankommen wird bzw, soll. Entspricht es den Erwartungen der Leserschaft? Sollte man noch mehr Praxis-Wissen einbauen? Fragen um Fragen. Doch am Ende dieser Reise ist man schlauer und es wird einen auf einmal etwas mulmig zu Mute. Als ich vor über einen Jahr begonnen habe, dieses Buch mit Leben zu füllen, konnte ich nur erahnen, wie zeitintensiv das werden würde.

Es mag seltsam klingen, aber man identifiziert mit diesem Buch mehr als nur ein loses Papierwerk. Dieses Buch hat einen ein Stück des eigenen Lebens begleitet; hat die Emotionen, Ereignisse, die positiven und negativen Ereignisse mit eingefangen. Und wahrscheinlich schreibt man mit dem individuellen Gefühl der jeweiligen Stunde Satz um Satz nieder. Aber dieses Buch spiegelt auch die Vergangenheit der letzten Jahre und Jahrzehnte wieder – sowohl geschäftlich als auch privat. Denn sehr oft im Leben Stande ich vor der Aufgabe, komplett neue und noch nicht gelöste Herausforderungen zu lösen. Dieser Reiz, neue Herausforderungen, mit absoluter Passion und Glauben an sich selbst zu bestreiten und zu meistern – ich glaube das ist eine meiner wichtigen Attitüde. Probleme, Stolpersteine, Fehler – das sind Konsequenzen mit welchem man dann leben muss, wenn man ständig neue Wege gehen will.

Nur so, das glaube ich aus tiefster Überzeugung, kommt man weiter. Nur so hat man die Möglichkeit, Dinge von anderen Perspektiven anzusehen und vor allem: man lernt sich selbst und seine Stärken als auch Schwächen besser kennen. Dieses Buch stellt eines der Ergebnisse dar – neue Ideen, Konzepte sowie Erfahrungen wurden in diesem Buch, soweit es dem Buch dienlich ist, eingearbeitet. Dabei geht es nicht nur um die kleinen Tipps am Rande des Buches sondern um die Art und Weise wie das Buch strukturiert ist.

Das geht sogar so weit, dass ich in Zusammenarbeit mit den Hanser Verlag eine Buchreihe zu dem Thema „Enterprise Open Source“ konzipiert und auf dem Weg gebracht habe. Das nächste Buch – „Business Intelligence mit Pentaho und Jedox“ wird dem prinzipiellen Weg dieses Buches folgen und ihnen in einem gänzlich anderen Bereich ebenfalls ein guter Wegbegleiter sein. Dieses Buch spiegelt vor allem meine persönliche Einschätzung wieder und soll Sie, werter Leser, helfen, in der nächsten Zeit unterstützen, neue unbekannte Wege zu gehen – doch auf diesem Weg sind Sie nicht allein!

Dieses Buch mit den ganzen Erkenntnissen, Konzepten und Ratschlägen begleitet Sie und hilft ihnen, wie mir diese Erfahrungen auch noch in Zukunft bei neuen Herausforderungen helfen werden.

Ich wünsche ihnen jetzt viel Spaß beim Stöbern und eine schöne Zeit!

Liferay & Alfresco – The CMIS way

05 Nov
November 5, 2012
 

As ive promised a week ago, i´d like to inform you about “merging” Alfresco & Liferay together.

Well, ive not to describe that much at this point because Liferay has blogged already a realy clear way on how we can achieve it.

At http://www.liferay.com/de/web/alexander.chow/blog/-/blogs/7670631  you can see how it will work.

My intention is, that the solution is very comfortable as in Liferay 6.0. The content is stored more in the right way so we can use both – Alfresco and Liferay or both together. Metadata is applied sucessfully

Have a look!

Edit Online With Firefox And Other Non-MS Browsers In Alfresco 3.4.X

23 May
May 23, 2012
 

As you propably know, you can not use non-IE Browser using Online-Edit functionality on Alfresco 3.4.
Unfortunatly customers are not able to migrate to newer versions of Alfresco (4.X) as soon they appears on the screen.

With Alfresco 4 you gain the chance to use non-ie browsers to edit documents by simply clicking the “Edit Online” Button in the Browser. All details of checkin/checkout/download/upload/open will be handled by the Sharepoint-Protocoll or Office itself. Thats fantastic.

But as for all things in Alfresco theres an easy way available to make available this functionality with Office 2010 on Alfresco 3.4.

What things we have to do? Well to backport some stuff from Alfresco 4:

1) At first you have to remove the check for IE-Browser in your document-details.js file located at share/components to display the “Edit Online” action on the document details screen
2) The same thing as in point 1 described we have to do for the document library itself – just edit document-list.js
3) edit share/js/alfresco.js to check for Office-Plugins for supported browsers like Firefox (plugin are delivered by Office 2010 Installation Package)
4) edit documentlibrary-actions.js to add functions that comes from Alfresco 4 (same file): swap the function launchOnlineEditor to the newer Version of Alfresco 4 AND to copy launchOnlineEditorIE, launchOnlineEditorPlugin as well into our custom documentlibrary-actions.js file.

Point 1)

/*

 * Configure the Online Edit URL and permission if correct conditions are met

 * Browser == MSIE; vtiServer details retrieved; vti module installed; mimetype matches whitelist

 */

 // ITN DK remove check for IE

 //  if (YAHOO.env.ua.ie > 0 &&

 //      this.options.vtiServer && typeof this.options.vtiServer.port == "number" &&

 //      this.doclistMetadata.onlineEditing &&

 //      assetData.mimetype in this.onlineEditMimetypes)

 if (

 this.options.vtiServer && typeof this.options.vtiServer.port == "number" &&

 this.doclistMetadata.onlineEditing &&

  assetData.mimetype in this.onlineEditMimetypes)

Point 2)

// Reset onlineEdit flag if correct conditions not met

            //ITN DK remove check for IE

            //if ((YAHOO.env.ua.ie === 0) || (me.options.vtiServer && typeof me.options.vtiServer.port != "number"))

            if (me.options.vtiServer && typeof me.options.vtiServer.port != "number")

            {

               me.doclistMetadata.onlineEditing = false;

            }

Point 3)

/**

 * ITN DK Backport from Alfresco 4.0.1 to enable online edit in firefox

 *

 * Checks whether particular plugin for associated mimetype is installed

 *

 * @method Alfresco.util.isBrowserPluginInstalled

 */

Alfresco.util.isBrowserPluginInstalled = function(mimeType)

{

   return navigator.mimeTypes && navigator.mimeTypes[mimeType] && navigator.mimeTypes[mimeType].enabledPlugin;

};

/**

 *  ITN DK Backport from Alfresco 4.0.1 to enable online edit in firefox

 * Checks whether Mac browser plugin for SharePoint is installed

 *

 * @method Alfresco.util.appendArrayToObject

 */

Alfresco.util.isSharePointPluginInstalled = function()

{

   var webkitPluginInstalled = Alfresco.util.isBrowserPluginInstalled("application/x-sharepoint-webkit");

   var npapiPluginInstalled = Alfresco.util.isBrowserPluginInstalled("application/x-sharepoint");

   if (YAHOO.env.ua.webkit && webkitPluginInstalled)

      return true;

   return npapiPluginInstalled != undefined;

};

/**

 * Check a value is neither undefined nor null (returns false).

 * An empty string also returns false unless the allowEmptyString flag is set.

 * @method Alfresco.util.isValueSet

 * @param value {object} Parameter to check

 * @param allowEmptyString {boolean} Optional flag to indicate that empty strings are valid inputs.

 * @static

 * @return {boolean} Flag indicating whether the value is set or not.

 */

Alfresco.util.isValueSet = function(value, allowEmptyString)

{

   if (YAHOO.lang.isUndefined(value) || YAHOO.lang.isNull(value))

   {

      return false;

   }

   if (YAHOO.lang.isString(value) && value.length === 0 && !!allowEmptyString === false)

   {

      return false;

   }

   return true;

};

Point 4)

var $html = Alfresco.util.encodeHTML,

      $combine = Alfresco.util.combinePaths,

      $siteURL = Alfresco.util.siteURL,

        //ITN DK Backport Alfresco v. 4.0.1 edit online for firefox

        $isValueSet = Alfresco.util.isValueSet; 

   _launchOnlineEditor: function dlA__launchOnlineEditor(asset)

      {

         var controlProgID = "SharePoint.OpenDocuments",

            mimetype = asset.mimetype,

                  loc = asset.location

            appProgID = null,

            activeXControl = null,

            extensionMap =

            {

               xls: "application/vnd.ms-excel",

               ppt: "application/vnd.ms-powerpoint",

               doc: "application/msword",

               xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",

               pptx: "application/vnd.openxmlformats-officedocument.presentationml.presentation",

               docx: "application/vnd.openxmlformats-officedocument.wordprocessingml.document"

            };

         // Try to resolve the asset to an application ProgID; by mimetype first, then file extension.

         if (this.onlineEditMimetypes.hasOwnProperty(mimetype))

         {

            appProgID = this.onlineEditMimetypes[mimetype];

         }

         else

         {

            var extn = Alfresco.util.getFileExtension(asset.location.file);

            if (extn !== null)

            {

               extn = extn.toLowerCase();

               if (extensionMap.hasOwnProperty(extn))

               {

                  mimetype = extensionMap[extn];

                  if (this.onlineEditMimetypes.hasOwnProperty(mimetype))

                  {

                     appProgID = this.onlineEditMimetypes[mimetype];

                  }

               }

            }

         }

         // ITN DK replace code

         // Alfresco 4.0.1 Code

             if (appProgID !== null)

         {

            // Ensure we have the record's onlineEditUrl populated

            if (!$isValueSet(asset.onlineEditUrl))

            {

               var onlineEditUrl = this.doclistMetadata.custom.vtiServer.host + ":" +

                     this.doclistMetadata.custom.vtiServer.port + "/" +

                     $combine("alfresco", loc.site.name, loc.container.name, loc.path, loc.file);

               if (!(/^(http|https):///).test(onlineEditUrl))

               {

                  // Did they specify the protocol on the vti server bean?

                  var protocol = this.doclistMetadata.custom.vtiServer.protocol;

                  if (protocol == null)

                  {

                      // If it's not set, assume it's the same as Share

                      protocol = window.location.protocol;

                      // Get it without the trailing colon, to match the vti property form

                      protocol = protocol.substring(0, protocol.length-1);

                  }

                  // Build up the full HTTP / HTTPS URL

                  onlineEditUrl = protocol + "://" + onlineEditUrl;

               }

               asset.onlineEditUrl = onlineEditUrl;

            }

            if (YAHOO.env.ua.ie > 0)

            {

               return this._launchOnlineEditorIE(controlProgID, asset, appProgID);

            }

            if (Alfresco.util.isSharePointPluginInstalled())

            {

               return this._launchOnlineEditorPlugin(asset, appProgID);

            }

            else

            {

               Alfresco.util.PopupManager.displayPrompt(

               {

                  text: this.msg("actions.editOnline.failure", loc.file)

               });

               return false;

            }

         }

         // No success in launching application via ActiveX control; launch the WebDAV URL anyway

         return window.open(asset.onlineEditUrl, "_blank");

      },

         /**

       * Opens the appropriate Microsoft Office application for online editing.

       * Supports: Microsoft Office 2003, 2007 & 2010.

       *

       * @method Alfresco.util.sharePointOpenDocument

       * @param record {object} Object literal representing file or folder to be actioned

       * @return {boolean} True if the action was completed successfully, false otherwise.

       */

      _launchOnlineEditorIE: function dlA__launchOnlineEditorIE(controlProgID, record, appProgID)

      {

         // Try each version of the SharePoint control in turn, newest first

         try

         {

            activeXControl = new ActiveXObject(controlProgID + ".3");

            return activeXControl.EditDocument3(window, record.onlineEditUrl, true, appProgID);

         }

         catch(e)

         {

            try

            {

               activeXControl = new ActiveXObject(controlProgID + ".2");

               return activeXControl.EditDocument2(window, record.onlineEditUrl, appProgID);

            }

            catch(e1)

            {

               try

               {

                  activeXControl = new ActiveXObject(controlProgID + ".1");

                  return activeXControl.EditDocument(record.onlineEditUrl, appProgID);

               }

               catch(e2)

               {

                  // Do nothing

               }

            }

         }

         return false;

      },

      /**

       * Opens the appropriate Microsoft Office application for online editing.

       * Supports: Microsoft Office 2010 & 2011 for Mac.

       *

       * @method Alfresco.util.sharePointOpenDocument

       * @param record {object} Object literal representing file or folder to be actioned

       * @return {boolean} True if the action was completed successfully, false otherwise.

       */

      _launchOnlineEditorPlugin: function dlA__launchOnlineEditorPlugin(record, appProgID)

      {

         var plugin = document.getElementById("SharePointPlugin");

         if (plugin == null && Alfresco.util.isSharePointPluginInstalled())

         {

            var pluginMimeType = null;

            if (YAHOO.env.ua.webkit && Alfresco.util.isBrowserPluginInstalled("application/x-sharepoint-webkit"))

               pluginMimeType = "application/x-sharepoint-webkit";

            else

               pluginMimeType = "application/x-sharepoint";

            var pluginNode = document.createElement("object");

            pluginNode.id = "SharePointPlugin";

            pluginNode.type = pluginMimeType;

            pluginNode.width = 0;

            pluginNode.height = 0;

            pluginNode.style.setProperty("visibility", "hidden", "");

            document.body.appendChild(pluginNode);

            plugin = document.getElementById("SharePointPlugin");

            if (!plugin)

            {

               return false;

            }

         }

         try

         {

            return plugin.EditDocument3(window, record.onlineEditUrl, true, appProgID);

         }

         catch(e)

         {

            try

            {

               return plugin.EditDocument2(window, record.onlineEditUrl, appProgID);

            }

            catch(e1)

            {

               try

               {

                  return plugin.EditDocument(record.onlineEditUrl, appProgID);

               }

               catch(e2)

               {

                  return false;

               }

            }

         }

      },

Swapping function _

Video of the Content Model Editor

11 Apr
April 11, 2012
 

Hello again,

ive created a small video which shows in short time how the content model editor works.

In this video i present following doing:

- create a new property costCenter and assign this property to an existing document type (it-novum)
- save & deploy it on the live system without restart
- add content and change the type to the responsible document type (it-novum)

Voila! :)

Important tip: You should click on the lower right button in the video to maximize the video

Unable to display content. Adobe Flash is required.

Content Model Editor for Alfresco Share

05 Apr
April 5, 2012
 

Daily business changes our workflow rapidly – intern as well as for customers and enterprise-partners. All depended systems which will be affected on those changes must apply very fast on it. Furthermore to transform such changes into a DMS, the model-data must often be extended and must be able to handle those changes very quickly. Also the possibility for workshops to create more similarity between a a (potential) customer and Alfresco should be established through this editor. To point out this, it should be understandable for the middle- and high-level manager how to solve problems with Alfresco to engage those persons better for Alfresco.

The Model Editor is well integrated in Alfresco Share and can be accessed through the admin-console. The editor makes you comfortable to create very easily your datatypes and aspects. Through separated panels, properties and associations can be created and defined based on customers real requirements – live. Secondly you can assign those elements on datatypes and aspects. After all you can decide if you want to change the whole way on how the metadate should be visible to the user in Alfresco Share. Alfresco-Explorer config is also being created as well. After saving your model you are able to deploy it directly in Alfresco without any restart. After deploying you can take use of your new model. For instance, you are able to create a new document based on your datatype or to search for it using extend search which is configured for your datatypes as well. Also it is even possible to create you workflow-model as it is based on the “standard-model” as like others.

Based on the Alfresco 3.0 feature “Dynamic Models” the editor is able to handle just-in-time deployments. All data that can be modified in the Editor is stored by XStream so we can easily handle this complex-data format. It was a big struggling to get the best UI-Concept which can be used with Alfresco Share. We extended some Drag & Drop functionality based on Alfresco Share to create a unique UI-Expierience.