@ -49,7 +49,7 @@
/ *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Reading some passed by PHP - scripts options .
* Initialization .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* /
@ -73,6 +73,36 @@ else
FCKConfig . InDocument = false ;
}
// Absolute URL to document repository root.
if ( ! FCKConfig . CreateDocumentWebDir )
{
FCKConfig . CreateDocumentWebDir = '' ;
}
// Relative path from the document to the repository root.
if ( ! FCKConfig . CreateDocumentDir )
{
FCKConfig . CreateDocumentDir = '' ;
}
// This is the base of the reltive URLs that are used by the dialog system.
if ( ! FCKConfig . BaseHref || FCKConfig . BaseHref . toString ( ) . length == 0 )
{
if ( FCKConfig . BaseHref . toString ( ) . length == 0 )
{
FCKConfig . BaseHref = FCKConfig . CreateDocumentWebDir ;
}
}
FCKConfig . BaseHref = FCKConfig . BaseHref . toString ( ) ;
if ( FCKConfig . BaseHref . length > 0 )
{
if ( FCKConfig . BaseHref . substr ( FCKConfig . BaseHref . length - 1 ) != '/' )
{
FCKConfig . BaseHref = FCKConfig . BaseHref + '/' ;
}
}
/ *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
@ -998,7 +1028,7 @@ FCK.RegisterDoubleClickHandler(
/ *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Common utilities
* Routines for testing the type of a selected visual object .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* /
@ -1173,6 +1203,395 @@ FCK.GetVideoType = function ( img )
return false ;
} ;
/ *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Routines to deal with conversions of absolute and relative URLs .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* /
// Constants for fundamental URL conversions.
var RELATIVE _URL = 'relative' ;
var ABSOLUTE _URL = 'absolute' ;
var SEMI _ABSOLUTE _URL = 'semi-absolute' ;
FCK . RELATIVE _URL = RELATIVE _URL ;
FCK . ABSOLUTE _URL = ABSOLUTE _URL ;
FCK . SEMI _ABSOLUTE _URL = SEMI _ABSOLUTE _URL ;
// Constants used for conversions of special relative URLs.
var REPOSITORY _RELATIVE _URL = 'repository-relative' ;
var DOCUMENT _RELATIVE _URL = 'document-relative' ;
FCK . REPOSITORY _RELATIVE _URL = REPOSITORY _RELATIVE _URL ;
FCK . DOCUMENT _RELATIVE _URL = DOCUMENT _RELATIVE _URL ;
// Conversion of selected by the file managers URLs.
FCK . GetSelectedUrl = function ( url )
{
url = FCK . GetUrl ( url , DOCUMENT _RELATIVE _URL ) ;
if ( FCK . GetUrlType ( url ) != RELATIVE _URL )
{
url = FCK . GetUrl ( url , SEMI _ABSOLUTE _URL ) ;
}
return url ;
}
// Conversion of a URL into desired type.
FCK . GetUrl = function ( url , type )
{
if ( ! url )
{
return url ;
}
if ( ! type )
{
return url ;
}
url = url . toString ( ) . Trim ( ) ;
if ( url . indexOf ( './' ) == 0 )
{
url = url . substr ( 2 ) ;
}
switch ( type )
{
case RELATIVE _URL :
switch ( FCK . GetUrlType ( url ) )
{
case RELATIVE _URL :
break ;
case ABSOLUTE _URL :
case SEMI _ABSOLUTE _URL :
url = FCK . ConvertUrl ( url , RELATIVE _URL , FCKConfig . CreateDocumentWebDir ) ;
if ( FCK . GetUrlType ( url ) == RELATIVE _URL )
{
url = FCK . GetUrl ( url , DOCUMENT _RELATIVE _URL ) ;
}
break ;
default :
break ;
}
break ;
case REPOSITORY _RELATIVE _URL :
switch ( FCK . GetUrlType ( url ) )
{
case RELATIVE _URL :
if ( url . indexOf ( FCKConfig . CreateDocumentDir ) == 0 )
{
url = url . substr ( FCKConfig . CreateDocumentDir . length ) ;
}
break ;
case ABSOLUTE _URL :
url = FCK . ConvertUrl ( url , RELATIVE _URL , FCKConfig . CreateDocumentWebDir ) ;
break ;
case SEMI _ABSOLUTE _URL :
url = FCK . ConvertUrl ( url , RELATIVE _URL , FCKConfig . CreateDocumentWebDir ) ;
break ;
default :
break ;
}
break ;
case DOCUMENT _RELATIVE _URL :
switch ( FCK . GetUrlType ( url ) )
{
case RELATIVE _URL :
if ( FCKConfig . CreateDocumentDir != '/' )
{
url = FCKConfig . CreateDocumentDir + url ;
}
break ;
case ABSOLUTE _URL :
case SEMI _ABSOLUTE _URL :
url = FCK . ConvertUrl ( url , RELATIVE _URL , FCKConfig . CreateDocumentWebDir ) ;
if ( FCK . GetUrlType ( url ) == RELATIVE _URL )
{
url = FCK . GetUrl ( url , DOCUMENT _RELATIVE _URL ) ;
}
break ;
default :
break ;
}
break ;
case ABSOLUTE _URL :
switch ( FCK . GetUrlType ( url ) )
{
case RELATIVE _URL :
url = FCK . GetUrl ( url , REPOSITORY _RELATIVE _URL ) ;
url = FCK . ConvertUrl ( url , ABSOLUTE _URL , FCKConfig . CreateDocumentWebDir ) ;
break ;
case ABSOLUTE _URL :
break ;
case SEMI _ABSOLUTE _URL :
url = FCK . ConvertUrl ( url , ABSOLUTE _URL , FCKConfig . CreateDocumentWebDir ) ;
break ;
default :
break ;
}
break ;
case SEMI _ABSOLUTE _URL :
switch ( FCK . GetUrlType ( url ) )
{
case RELATIVE _URL :
url = FCK . GetUrl ( url , REPOSITORY _RELATIVE _URL ) ;
url = FCK . ConvertUrl ( url , SEMI _ABSOLUTE _URL , FCKConfig . CreateDocumentWebDir ) ;
break ;
case ABSOLUTE _URL :
url = FCK . ConvertUrl ( url , SEMI _ABSOLUTE _URL , FCKConfig . CreateDocumentWebDir ) ;
break ;
case SEMI _ABSOLUTE _URL :
break ;
default :
break ;
}
break ;
default :
break ;
}
return url ;
}
// Common URL conversion routine.
FCK . ConvertUrl = function ( url , type , base )
{
if ( ! url )
{
return '' ;
}
if ( ! type )
{
return '' ;
}
url = url . toString ( ) . Trim ( ) ;
if ( url . indexOf ( './' ) == 0 )
{
url = url . substr ( 2 ) ;
}
type = type . toString ( ) . Trim ( ) ;
if ( ! base )
{
base = '' ;
}
base = base . toString ( ) . Trim ( ) ;
if ( base == '/' )
{
base = '' ;
}
switch ( type )
{
case RELATIVE _URL :
switch ( FCK . GetUrlType ( url ) )
{
case ABSOLUTE _URL :
base = FCK . ConvertUrl ( base , ABSOLUTE _URL ) ;
if ( url . indexOf ( base ) == 0 )
{
url = url . substr ( base . length ) ;
}
break ;
case SEMI _ABSOLUTE _URL :
base = FCK . ConvertUrl ( base , SEMI _ABSOLUTE _URL ) ;
if ( url . indexOf ( base ) == 0 )
{
url = url . substr ( base . length ) ;
}
break ;
default :
break ;
}
break ;
case ABSOLUTE _URL :
switch ( FCK . GetUrlType ( url ) )
{
case RELATIVE _URL :
base = FCK . ConvertUrl ( base , ABSOLUTE _URL ) ;
url = base + url ;
break ;
case SEMI _ABSOLUTE _URL :
url = FCK . GetServerBase ( ) + url . substr ( 1 ) ;
break ;
default :
break ;
}
break ;
case SEMI _ABSOLUTE _URL :
switch ( FCK . GetUrlType ( url ) )
{
case RELATIVE _URL :
base = FCK . ConvertUrl ( base , SEMI _ABSOLUTE _URL ) ;
url = base + url ;
break ;
case ABSOLUTE _URL :
var serverBase = FCK . GetServerBase ( ) ;
if ( serverBase == FCK . GetServerBase ( url ) )
{
url = '/' + url . substr ( serverBase . length ) ;
}
break ;
default :
break ;
}
break ;
default :
break ;
}
return url ;
}
// Returns type of a given URL.
// Returned values:
// RELATIVE_URL ( returned for example for images/image.png )
// SEMI_ABSOLUTE_URL ( /dokeos/courses/TEST/document/images/image.png )
// ABSOLUTE_URL ( http://localhost/dokeos/courses/TEST/document/images/image.png )
// '' - in case of error
FCK . GetUrlType = function ( url )
{
if ( ! url )
{
return '' ;
}
url = url . toString ( ) . Trim ( ) ;
if ( url . indexOf ( '/' ) == 0 )
{
return SEMI _ABSOLUTE _URL ;
}
if ( url . match ( /^([^:]+\:)?\/\// ) )
{
return ABSOLUTE _URL ;
}
return RELATIVE _URL ;
} ;
// Extracts the server base from a given URL.
// If the URL is omited, the function returns the base of the server where LMS runs.
// Example:
// Your site is http://www.mysite.org/dokeos
// The server base is http://www.mysite.org/
FCK . GetServerBase = function ( url )
{
if ( ! url )
{
if ( FCKConfig . CreateDocumentWebDir )
{
url = FCKConfig . CreateDocumentWebDir ;
}
else
{
url = location . href ;
}
}
url = url . toString ( ) . replace ( /(https?:\/\/[^\/]*)\/.*/ , '$1' ) + '/' ;
return url ;
} ;
/ *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Deprecated routines , to be removed after full adopting the new URL - related routines .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* /
// Makes a URL relative.
FCK . RemoveBasePath = function ( url )
{