home *** CD-ROM | disk | FTP | other *** search
- /**
- * Dieser Konstruktor k├╝mmert sich um das Austauschen der Inhalte.
- *
- * @namespace IM
- * @class ContentLoader
- * @constructor
- */
- IM.ContentLoader = function () {
-
- /**
- * NodeJS: Setzt die fs-Lib aus der globalen Konfiguration
- * @property fs
- * @type Object
- * @private
- */
- var fs = IM.Config.fs,
-
- /**
- * NodeJS-Module: Lädt das erforderliche Objekt zum Laden von XML-Dokumenten.
- * @property xml2js
- * @type Object
- * @private
- */
- xml2js = IM.Config.xml;
-
- /**
- * Holt sich das angegebene XML-Dokument und gibt den Inhalt zur├╝ck.
- * @method getXML
- * @param {String} xml Der Pfad des zu ladenden XML-Dokuments
- */
- this.getXML = function ( xml ) {
- var parser = new xml2js.Parser({async: true}),
- sitemap = '';
-
- fs.readFile( xml, function( err, data ) {
- parser.parseString( data, function ( err, result ) {
- var smc = result['sitemapdata']['smc'];
- sitemap += '<div id="sitemap">';
-
- for( var i = 0, smcLength = smc.length; i < smcLength; i++ ) {
-
- if( result['sitemapdata']['smc'][i]['sms'] != undefined || result['sitemapdata']['smc'][i]['st'] != undefined ) {
- /* Hauptmen├╝ / Kategorien*/
- sitemap += '<h2>' + smc[i]['$'].title + '</h2>';
- }
-
- if( smc[i]['sms'] != undefined ) {
- for( var j = 0, smsLength = result['sitemapdata']['smc'][i]['sms'].length; j < smsLength; j++ ) {
-
- /* Untermen├╝ */
- sitemap += '<h3>' + smc[i]['sms'][j]['$'].title + '</h3>';
-
- if( result['sitemapdata']['smc'][i]['sms'][j]['st'] != undefined ) {
- for( var m = 0, smsStLength = result['sitemapdata']['smc'][i]['sms'][j]['st'].length; m < smsStLength; m++ ) {
- /* Software-Titel verlinken */
- sitemap += '<p><a href="' + smc[i]['sms'][j]['st'][m]['$'].href + '" class="menu-subitem">' + smc[i]['sms'][j]['st'][m]['t'][0] + '</a></p>';
- }
- } else if( result['sitemapdata']['smc'][i]['sms'][j]['sms'] ) {
- for( var n = 0, smcSmsLength = result['sitemapdata']['smc'][i]['sms'][j]['sms'].length; n < smcSmsLength; n++ ) {
-
- /* Tool-Pakete */
- sitemap += '<h4 class="package">' + smc[i]['sms'][j]['sms'][n]['$'].title + '</h4>';
-
- if( result['sitemapdata']['smc'][i]['sms'][j]['sms'][n]['st'] != undefined ) {
- for( var o = 0, toolStlength = result['sitemapdata']['smc'][i]['sms'][j]['sms'][n]['st'].length; o < toolStlength; o++ ) {
- /* Tool-Paket Software */
- sitemap += '<p><a href="' + smc[i]['sms'][j]['sms'][n]['st'][o]['$'].href + '" class="menu-subitem">' + smc[i]['sms'][j]['sms'][n]['st'][o]['t'][0] + '</a></p>';
- }
- }
- }
- }
- }
- } else {
- if( result['sitemapdata']['smc'][i]['st'] != undefined ) {
- for( var k = 0, stLength = result['sitemapdata']['smc'][i]['st'].length; k < stLength; k++ ) {
- /* Untermen├╝ / Wenn es sich um statische Seiten handelt ( z.B. Service ) */
- sitemap += '<p><a href="' + smc[i]['st'][k]['$'].href + '" class="menu-subitem">' + smc[i]['st'][k]['t'][0] + '</a></p>';
- }
- }
- }
-
- }
-
- sitemap += '</div>';
-
- var targetEl = document.getElementById( IM.Config.APP_BASE_SITEMAP_MENU );
- var currentContent = targetEl.innerHTML;
- targetEl.innerHTML = sitemap + currentContent;
-
- });
- });
-
- };
-
- /**
- * Holt sich das angegebene iframe(elId) und gibt den Inhalt zur├╝ck.
- * @method getIframe
- * @param {String} elId Die ID des iFrame
- */
- this.getIframe = function ( elId ) {
- var elId = elId || false;
- if( elId ) {
- return frames[ elId ].document;
- } else {
- IM.ErrorHandler.errorMsg( 'iFrame-ID is missing', 'ref' );
- }
- };
-
- /**
- * Diese Funktion gibt an ob es sich bei dem aufgerufenen Men├╝ um eine Unterseite handelt.
- * @method isSubPage
- * @param {String} elSel Die Klasse des Elements
- * @return {Boolean} true || false
- */
- this.isSubPage = function ( elSel ) {
- var elSel = document.getElementsByClassName( elSel ) || null,
- elStatus = '';
-
- if( elSel != null ) {
- for( var i = 0, elLength = elSel.length; i < elLength; i++ ) {
- elStatus = elSel[i].style.display;
- }
-
- switch( elStatus ) {
- case 'none':
- elStatus = true;
- break;
- case 'block':
- elStatus = false;
- break;
- default:
- elStatus = false;
- break;
- }
-
- return elStatus;
-
- } else {
- IM.ErrorHandler.errorMsg( 'isSubPage: Es wurde kein Element angegeben oder es existiert nicht', 'ref' );
- }
- };
-
- /**
- * Lädt den erforderlichen Inhalt einer Datei in das jeweilige iFrame
- * @method loadFrameContent
- * @param {String} elId Die ID des iFrames
- * @param {String} newPage Der zu ladende Inhalt
- * @param {String} cssPath Der Pfad zu dem jeweiligen Stylesheet
- */
- this.loadFrameContent = function ( elId, newPage, cssPath ) {
- var sFrame,
- sCssLink,
- ajaxLoader = document.getElementById('ajaxLoader');
-
- sFrame = document.getElementById( elId );
-
- ajaxLoader.style.display = 'block';
- sFrame.style.display = 'none';
-
- sFrame.src = newPage;
-
- sCssLink = document.createElement("link");
- sCssLink.href = cssPath;
- sCssLink.rel = 'stylesheet';
- sCssLink.type = 'text/css';
-
- sFrame.addEventListener('load', frameStyles, false);
-
- function frameStyles() {
- if( !sFrame.contentDocument.head.hasChildNodes() ) {
- sFrame.contentDocument.head.appendChild( sCssLink );
- }
-
- ajaxLoader.style.display = 'none';
- sFrame.style.display = 'block';
-
- sFrame.removeEventListener('load', frameStyles, false);
- }
- };
-
- };