summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWiktor Walc2008-09-22 18:51:50 (GMT)
committer Wiktor Walc2008-09-22 18:51:50 (GMT)
commit09dce55214f754296bf31d31d612bca9a7ab42ef (patch)
tree3f12825ffa721daf6a3f4718705e704f20373577
parentaf8e9eebdbf695377f54a01774d03f7aa35fe47d (diff)
Improved Image Assist 6.x-1.x support
-rw-r--r--CHANGELOG.txt1
-rw-r--r--fckeditor.config.js13
-rw-r--r--fckeditor.css7
-rw-r--r--fckeditor.install5
-rw-r--r--fckeditor.popup.html6
-rw-r--r--fckeditor.utils.js3
-rw-r--r--img_assist_fckeditor.js45
-rw-r--r--plugins/imgassist/fck_imgassist.html164
-rw-r--r--plugins/imgassist/fckplugin.js164
9 files changed, 290 insertions, 118 deletions
diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 24437dd..a2e023a 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -3,6 +3,7 @@ $Id$
-- 2008-09-22 version 6.x-2.x-dev
* #311181 translatable strings overhaul
* Improved source code according to Coder module instructions
+* Improved Image Assist 6.x-1.x support
-- 2008-09-16 version 6.x-2.x-dev
* #308360 added field IDs from google_analytics and piwik modules to the default exclusion list
diff --git a/fckeditor.config.js b/fckeditor.config.js
index 6c3b997..f44d119 100644
--- a/fckeditor.config.js
+++ b/fckeditor.config.js
@@ -58,6 +58,19 @@ FCKConfig.ToolbarSets['DrupalFiltered'] = [
['JustifyLeft','JustifyCenter','JustifyRight','DrupalBreak','ShowBlocks'],
] ;
+//helper function to add button at the end of the toolbar
+function addToolbarElement(element, toolbar, pos){
+ var ts = FCKConfig.ToolbarSets ;
+ if (ts[toolbar]) {
+ var len=ts[toolbar].length;
+ if (pos>=len) pos=len-1;
+ if (ts[toolbar][(len -pos -1)] == '/') pos++;
+ if (pos>=len) pos=len-1;
+ if (!ts[toolbar][(len -pos -1)]) pos++;
+ FCKConfig.ToolbarSets[toolbar][(len -pos -1)].push(element);
+ }
+}
+
// Protect PHP code tags (<?...?>) so FCKeditor will not break them when
// switching from Source to WYSIWYG.
// Uncommenting this line doesn't mean the user will not be able to type PHP
diff --git a/fckeditor.css b/fckeditor.css
index 1f65cb3..40c3c66 100644
--- a/fckeditor.css
+++ b/fckeditor.css
@@ -21,4 +21,11 @@
}
.rtejustify {
text-align: justify;
+}
+.image_assist{
+ background-color: #eeeeee;
+ background-repeat: no-repeat;
+ background-image: url(plugins/imgassist/imgassist.gif);
+ background-position: 50% 50%;
+ border: 1px dashed #dddddd;
} \ No newline at end of file
diff --git a/fckeditor.install b/fckeditor.install
index 81b3abd..7038a31 100644
--- a/fckeditor.install
+++ b/fckeditor.install
@@ -1,11 +1,6 @@
<?php
// $Id$
-/**
-=======
-// $Id$
-
/*
->>>>>>> 1.2.2.10.2.13
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
* Copyright (C) 2003-2008 Frederico Caldeira Knabben
*
diff --git a/fckeditor.popup.html b/fckeditor.popup.html
index c6305a9..0e9aa90 100644
--- a/fckeditor.popup.html
+++ b/fckeditor.popup.html
@@ -85,6 +85,12 @@ function Cancel()
<td height="100%">
<script type="text/javascript">
+//image_assist integration
+IaObj = window.opener.document.getElementById( 'img_assist-link-' + FCKURLParams[ 'el' ] );
+if(IaObj){
+ IaObj.href = IaObj.href.replace("/load/textarea", "/load/fckeditor");
+ document.write( '<a className="img_assist-link" href='+ IaObj.href +' id="img_assist-link-' + FCKURLParams[ 'el' ] +'" style="display:none" /></a>' ) ;
+}
// For now, it is not possible to retrieve the output HTML, so we must do it by
// hand. Future implementations of FCKeditor could bring a
// oFCKeditor.CreateHtml() function.
diff --git a/fckeditor.utils.js b/fckeditor.utils.js
index ae75538..f899ddf 100644
--- a/fckeditor.utils.js
+++ b/fckeditor.utils.js
@@ -17,6 +17,7 @@ Drupal.behaviors.fckeditor = function(context) {
if(editorInstance.defaultState == 1) {
editorInstance.ReplaceTextarea();
+ $('#img_assist-link-' + taid).hide();
}
}
});
@@ -83,6 +84,7 @@ function Toggle(textareaID, TextTextarea, TextRTE)
textArea.show();
textAreaContainer.show();
editorFrame.hide();
+ $('#img_assist-link-' + textareaID).show();
// fix the grippie
if(textAreaContainer.length > 0) { // if we're in a container, textarea resizing is enabled
@@ -117,6 +119,7 @@ function Toggle(textareaID, TextTextarea, TextRTE)
textArea.hide();
textAreaContainer.hide();
editorFrame.show();
+ $('#img_assist-link-' + textareaID).hide();
}
}
diff --git a/img_assist_fckeditor.js b/img_assist_fckeditor.js
index 6d9270b..87c7667 100644
--- a/img_assist_fckeditor.js
+++ b/img_assist_fckeditor.js
@@ -18,21 +18,48 @@ function InitFCKeditorImgAssist() {
insertToEditor = function(content) {
+ //handle FCKeditor in popup mode
+ if ((myTextarea == '') && (window.opener)) {
+ var myDoc = window.opener;
+ if (myDoc.oFCKeditor) {
+ var inst= myDoc.oFCKeditor.InstanceName;
+ var oEditor = myDoc.FCKeditorAPI.GetInstance( inst );
+ if (oEditor.EditMode == myDoc.FCK_EDITMODE_WYSIWYG) {
+ oEditor.InsertHtml(content) ;
+ }
+ else {
+ alert(Drupal.t('Inserting image into FCKeditor is allowed only in WYSIWYG mode'));
+ }
+ cancelAction();
+ return false;
+ }
+ }
+
//FCKeditor enabled and running == textarea not displayed
if ( myTextarea.style.display == 'none' ) {
var opener = window.opener;
- if (opener.fckLaunchedJsId)
- for( var i = 0 ; i < opener.fckLaunchedJsId.length ; i++ ) {
- if ( opener.fckLaunchedTextareaId[i] == myTextarea.id ) {
- var oEditor = opener.FCKeditorAPI.GetInstance( opener.fckLaunchedJsId[i] );
- if (oEditor.EditMode == opener.FCK_EDITMODE_WYSIWYG) {
- oEditor.InsertHtml(content) ;
- }
- else {
- alert(Drupal.t('Inserting image into FCKeditor is allowed only in WYSIWYG mode.'));
+ if (opener.fckLaunchedJsId) {
+ for( var i = 0 ; i < opener.fckLaunchedJsId.length ; i++ ) {
+ if ( opener.fckLaunchedTextareaId[i] == myTextarea.id ) {
+ var oEditor = opener.FCKeditorAPI.GetInstance( opener.fckLaunchedJsId[i] );
+ if (oEditor.EditMode == opener.FCK_EDITMODE_WYSIWYG) {
+ oEditor.InsertHtml(content) ;
+ }
+ else {
+ alert(Drupal.t('Inserting image into FCKeditor is allowed only in WYSIWYG mode'));
+ }
}
}
}
+ else {
+ var oEditor = opener.FCKeditorAPI.GetInstance(myTextarea.id);
+ if (oEditor.EditMode == opener.FCK_EDITMODE_WYSIWYG) {
+ oEditor.InsertHtml(content) ;
+ }
+ else {
+ alert(Drupal.t('Inserting image into FCKeditor is allowed only in WYSIWYG mode'));
+ }
+ }
cancelAction();
return false;
}
diff --git a/plugins/imgassist/fck_imgassist.html b/plugins/imgassist/fck_imgassist.html
index 427d088..3582671 100644
--- a/plugins/imgassist/fck_imgassist.html
+++ b/plugins/imgassist/fck_imgassist.html
@@ -23,101 +23,107 @@
-->
<html>
<head>
- <title>Image Properties</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta name="robots" content="noindex, nofollow" />
- <script type="text/javascript">
+ <title>Image Properties</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <meta name="robots" content="noindex, nofollow" />
+ <script type="text/javascript">
-var oEditor = window.parent.InnerDialogLoaded() ;
-var FCK = oEditor.FCK ;
-var FCKLang = oEditor.FCKLang ;
-var FCKConfig = oEditor.FCKConfig ;
-var FCKRegexLib = oEditor.FCKRegexLib ;
-var FCKTools = oEditor.FCKTools ;
+ var oEditor = window.parent.InnerDialogLoaded() ;
+ var FCK = oEditor.FCK ;
+ var FCKLang = oEditor.FCKLang ;
+ var FCKConfig = oEditor.FCKConfig ;
+ var FCKRegexLib = oEditor.FCKRegexLib ;
+ var FCKTools = oEditor.FCKTools ;
-document.write( '<script src="' + FCKConfig.BasePath + 'dialog/common/fck_dialog_common.js" type="text/javascript"><\/script>' ) ;
+ document.write( '<script src="' + FCKConfig.BasePath + 'dialog/common/fck_dialog_common.js" type="text/javascript"><\/script>' ) ;
- </script>
- <script type="text/javascript">
+ </script>
+ <script type="text/javascript">
-// Get the selected flash embed (if available).
-var oFakeImage = FCK.Selection.GetSelectedElement() ;
-var oImgAssistText ;
+ // Get the selected flash embed (if available).
+ var oFakeImage = FCK.Selection.GetSelectedElement() ;
+ var oImgAssistNode ;
-if ( oFakeImage )
-{
- if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckimgassist') )
- oImgAssistText = FCK.GetRealElement( oFakeImage ) ;
- else
- oFakeImage = null ;
-}
+ if ( oFakeImage )
+ {
+ if ( oFakeImage.tagName == 'IMG' && GetAttribute(oFakeImage, '_fckimgassist', false) )
+ if ( GetAttribute(oFakeImage, 'nid', false) ) oImgAssistNode = oFakeImage ;
+ else
+ oFakeImage = null ;
+ }
-window.onload = function()
-{
- // Translate the dialog box texts.
- oEditor.FCKLanguageManager.TranslatePage(document) ;
+ window.onload = function()
+ {
+ // Translate the dialog box texts.
+ oEditor.FCKLanguageManager.TranslatePage(document) ;
- // Load the selected link information (if any).
- LoadSelection() ;
+ // Load the selected link information (if any).
+ LoadSelection() ;
- // Activate the "OK" button.
- window.parent.SetOkButton( true ) ;
- window.parent.SetAutoSize( true ) ;
-}
+ // Activate the "OK" button.
+ window.parent.SetOkButton( true ) ;
+ window.parent.SetAutoSize( true ) ;
+ }
-function LoadSelection()
-{
- if ( !oImgAssistText ) return ;
+ function LoadSelection()
+ {
+ if ( !oImgAssistNode ) return ;
+ if ( oImgAssistNode.getAttribute('nid') ) {
+ var NodeContent = FCKTools.ImageAssistCode( oImgAssistNode );
+ if( NodeContent ) GetE('xTemplateRaw').value = NodeContent;
+ }
+ }
- GetE('xTemplateRaw').value = FCKTools.HTMLDecode( oImgAssistText.nodeValue ).replace( /&quot;/g, '"' ) ;
-}
-
-//#### The OK button was hit.
-function Ok()
-{
+ //#### The OK button was hit.
+ function Ok()
+ {
+ oEditor.FCKUndo.SaveUndoStep() ;
var templateData = FCKTools.HTMLEncode( GetE('xTemplateRaw').value ).Trim().replace( /"/g, '&quot;' ) ;
-
- if ( !( /^\[img_assist[^\[\]]+\]$/.test( templateData ) ) )
- {
- alert( 'Image tag must start with [img_assist and end with ]. Please check it.' ) ;
- return false ;
- }
-
- if ( !oImgAssistText )
- oImgAssistText = FCK.EditorDocument.createTextNode( '' ) ;
-
- oImgAssistText.nodeValue = templateData;
-
- if ( !oFakeImage )
- {
- oFakeImage = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__ImgAssist', oImgAssistText ) ;
+ if ( !( /^\[img_assist[^\[\]]+\]$/.test( templateData ) ) )
+ {
+ alert( 'Image tag must start with [img_assist and end with ]. Please check it.' ) ;
+ return false ;
+ }
+
+ //if ( !oImgAssistNode )
+ var oImgAssistNode1 = FCKTools.ImageAssistDecode( templateData );
+ oImgAssistNode.parentNode.insertBefore(oImgAssistNode1, oImgAssistNode);
+ oImgAssistNode.parentNode.removeChild(oImgAssistNode);
+ oEditor.FCKSelection.SelectNode( oImgAssistNode1 ) ;
+ //alert(a)
+ // oImgAssistNode.appendNode(oImgAssistNode1);
+/*
+ FCKDragTableHandler
+
+ if ( !oFakeImage )
+ {
+ oFakeImage = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__ImgAssist', oImgAssistNode ) ;
oFakeImage.setAttribute( "_fckimgassist", "true" ) ;
oFakeImage.style.background="url(" + FCKConfig.PluginsPath + "imgassist/imgassist.gif);";
oFakeImage.style.width=72;
oFakeImage.style.height=50;
- oFakeImage = FCK.InsertElement( oFakeImage ) ;
- }
-
- return true ;
-}
-
- </script>
+ oFakeImage = FCK.InsertElement( oFakeImage ) ;
+ }
+*/
+ return true ;
+ }
+ </script>
</head>
<body style="overflow: hidden">
- <div id="divInfo">
- <table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">
- <tr>
- <td>
- <span>Image Assist raw definition (from <code>[img_assist</code> to <code>]</code>)</span><br />
- </td>
- </tr>
- <tr>
- <td height="100%">
- <textarea id="xTemplateRaw" style="width: 100%; height: 100%; font-family: Monospace"
- cols="50" rows="10"></textarea>
- </td>
- </tr>
- </table>
- </div>
+ <div id="divInfo">
+ <table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">
+ <tr>
+ <td>
+ <span>Image Assist raw definition (from <code>[img_assist</code> to <code>]</code>)</span><br />
+ </td>
+ </tr>
+ <tr>
+ <td height="100%">
+ <textarea id="xTemplateRaw" style="width: 100%; height: 100%; font-family: Monospace"
+ cols="50" rows="10"></textarea>
+ </td>
+ </tr>
+ </table>
+ </div>
</body>
</html>
diff --git a/plugins/imgassist/fckplugin.js b/plugins/imgassist/fckplugin.js
index 5e13045..3106e25 100644
--- a/plugins/imgassist/fckplugin.js
+++ b/plugins/imgassist/fckplugin.js
@@ -39,38 +39,49 @@ FCKImageAssistProcessor.ProcessDocument = function( document )
var j = 0;
while (node = nodes[j++]) {
if (node.nodeName == '#text') {
-
- var aPlaholders = node.nodeValue.match( /\[img_assist[^\[\]]+\]/g ) ;
-
- if (aPlaholders) {
var index = 0;
- for ( var k = 0 ; k < aPlaholders.length ; k++ )
- {
- index = node.nodeValue.indexOf(aPlaholders[k]);
+ while (aPlaholders = node.nodeValue.match( /\[img_assist[^\[\]]+\]/g )) {
+ index = node.nodeValue.indexOf(aPlaholders[0]);
if (index != -1) {
- var e = FCK.EditorDocument.createTextNode( aPlaholders[k] ) ;
- var oFakeImage = FCKDocumentProcessor_CreateFakeImage( 'FCK__ImgAssist', e ) ;
- oFakeImage.setAttribute( "_fckimgassist", "true" ) ;
- oFakeImage.setAttribute("src", FCKConfig.PluginsPath + "imgassist/imgassist.gif");
- oFakeImage.style.width=72;
- oFakeImage.style.height=50;
+ var oImgAs = FCKTools.ImageAssistDecode ( aPlaholders[0] );
- var substr1 = FCK.EditorDocument.createTextNode( node.nodeValue.substring(0, index) ) ;
- var substr2 = FCK.EditorDocument.createTextNode( node.nodeValue.substring(index + aPlaholders[k].length) ) ;
+ var substr1 = FCK.EditorDocument.createTextNode( node.nodeValue.substring(0, index) );
+ var substr2 = FCK.EditorDocument.createTextNode( node.nodeValue.substring(index + aPlaholders[0].length) );
node.parentNode.insertBefore( substr1, node ) ;
- node.parentNode.insertBefore( oFakeImage, node ) ;
+ node.parentNode.insertBefore( oImgAs, node ) ;
node.parentNode.insertBefore( substr2, node ) ;
node.parentNode.removeChild( node ) ;
+ if (node) node.nodeValue='';
}
}
- }
}
}
}
}
+// Open the image_assis dialog on double click.
+FCKImageAssistProcessor.OnDoubleClick = function( span ) {
+ if ( span.tagName == 'IMG' && span._fckimgassist_fckimgassist ) {
+ FCKCommands.GetCommand( 'Img_Assist' ).Execute() ;
+ }
+}
+
+// We must process the IMG tags, change <img...> to [img_assist...]
+FCKXHtml.TagProcessors['img'] = function( node, htmlNode )
+{
+ if ( htmlNode.getAttribute('nid') ) {
+ var IAString = FCKTools.ImageAssistCode ( htmlNode );
+ if( IAString )
+ node = FCKXHtml.XML.createTextNode(IAString) ;
+ }
+ else{
+ FCKXHtml._AppendChildNodes( node, htmlNode, false ) ;
+ }
+ return node ;
+}
+
FCKImageAssistProcessor.Redraw = function( document )
{
FCKImageAssistProcessor.ProcessDocument(FCK.EditorDocument);
@@ -80,17 +91,120 @@ FCKImageAssistProcessor.Redraw = function( document )
FCK.ContextMenu.RegisterListener({
AddItems : function( contextMenu, tag, tagName )
{
- if ( tagName == 'IMG' )
- {
- if ( tag.getAttribute( '_fckimgassist' ) )
- {
- contextMenu.AddSeparator() ;
- contextMenu.AddItem( 'Img_Assist', 'Image Assist' ) ;
+ if ( tagName == 'IMG' || tagName == 'img') {
+ if ( tag.getAttribute( '_fckimgassist' ) ) {
+ contextMenu.RemoveAllItems();
+ contextMenu.AddItem( 'Img_Assist', 'Image Assist' , FCKConfig.PluginsPath + 'imgassist/imgassist_small.gif') ;
}
}
}
});
-FCKCommands.RegisterCommand( 'Img_Assist', new FCKDialogCommand( 'Img_Assist', 'Image Assist Object', FCKConfig.PluginsPath + 'imgassist/fck_imgassist.html', 400, 330 ) ) ;
+FCKTools.ImageAssistDecode = function( IAString )
+{
+ var IAObj = FCK.EditorDocument.createElement( 'img' ) ;
+ var IAarg = IAString.match( /\[img_assist\s*([^\]]*?)\]/ );
+ IAarg=IAarg[1].toString().split("|");
+ var order = new Array();
+ for (var k=0;k<IAarg.length;k++) {
+ index2 = IAarg[k].indexOf('=');
+ if (index2 != -1) {
+ var temp_name = IAarg[k].split("=",1)[0];
+ var temp_val = IAarg[k].slice(index2+1);
+ order[k] = temp_name;
+ if (temp_name == 'width') {
+ if (parseInt(temp_val) == 'NaN') temp_val=72;
+ IAObj.style.width = parseInt(temp_val);
+ }
+ else if (temp_name == 'height') {
+ if (parseInt(temp_val) == 'NaN') temp_val=50;
+ IAObj.style.height = parseInt(temp_val);
+ }
+ else {
+ IAObj.setAttribute(temp_name, temp_val);
+ }
+ }
+ }
+ if (!IAObj.style.width) IAObj.setAttribute('width', 72);
+ if (!IAObj.style.height) IAObj.setAttribute('height', 50);
+ IAObj.setAttribute ('order', order.join("|"));
+ IAObj.setAttribute ('src', FCKConfig.BasePath +'images/spacer.gif');
+ IAObj.setAttribute ('_fckimgassist', 'true');
+ IAObj._fckimgassist = true ;
+ IAObj.className = 'image_assist';
-FCK.Events.AttachEvent( 'OnSelectionChange', FCKImageAssistProcessor.Redraw ) ; \ No newline at end of file
+ return IAObj;
+}
+
+FCKTools.ImageAssistCode = function( IAObj )
+{
+ var IAString;
+ if ( IAObj.getAttribute('nid') ) {
+ var IAString = '[img_assist';
+ var orderStr = IAObj.getAttribute('order').toString();
+ var order = orderStr.split("|");
+ for(var i=1;i<order.length;i++) {
+ IAString += '|'+ order[i] +'=';
+ if (IAObj.getAttribute(order[i])) {
+ IAString += IAObj.getAttribute(order[i]);
+ }
+ else if (order[i] == 'width') {
+ IAString += parseInt(IAObj.style.width);
+ }
+ else if (order[i] == 'height') {
+ IAString += parseInt(IAObj.style.height);
+ }
+ }
+ if ((orderStr.indexOf('width') == -1) && (IAObj.style.width)) {
+ IAString += '|width='+ parseInt(IAObj.style.width);
+ }
+ if ((orderStr.indexOf('height') == -1) && (IAObj.style.height)) {
+ IAString += '|height='+ parseInt(IAObj.style.height);
+ }
+ IAString += ']' ;
+ }
+ else {
+ return false;
+ }
+ return IAString;
+}
+
+FCKCommands.RegisterCommand( 'Img_Assist', new FCKDialogCommand( 'Img_Assist', 'Image Assist Object', FCKConfig.PluginsPath + 'imgassist/fck_imgassist.html', 500, 330 ) ) ;
+
+FCK.Events.AttachEvent( 'OnSelectionChange', FCKImageAssistProcessor.Redraw ) ;
+
+/*
+ * Plugin: add image_assist button
+ */
+var FCKimageAssist = function(){
+ this.EditMode = FCK.EditMode;
+}
+
+var imgAssistIcon= top.document.getElementById('img_assist-link-' + FCK.Config['TextareaID']);
+if (imgAssistIcon){
+
+ FCKimageAssist.prototype.Execute = function(){
+ if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG ) {
+ return ;
+ }
+ ia_icon = top.document.getElementById('img_assist-link-' + FCK.Config['TextareaID']);
+ ia_href = ia_icon.getAttribute("href");
+ top.window.open(ia_href, 'img_assist_link', 'width=600,height=350,scrollbars=yes,status=yes,resizable=yes,toolbar=no,menubar=no');
+ }
+ // Define the command.
+ FCKimageAssist.prototype.GetState = function(){
+ return ( FCK.EditMode == FCK_EDITMODE_WYSIWYG ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ) ;
+ }
+ FCKCommands.RegisterCommand( 'ImageAssist', new FCKimageAssist() ) ;
+
+ var oIAItem = new FCKToolbarButton( 'ImageAssist', 'Image Assist', null, FCK_TOOLBARITEM_ICONTEXT, true, true ) ;
+ oIAItem.IconPath = FCKConfig.PluginsPath + 'imgassist/imgassist_small.gif';
+ // Create the ImageAssist buttons.
+ FCKToolbarItems.RegisterItem( 'ImageAssist', oIAItem ) ;
+
+ addToolbarElement('ImageAssist', 'Basic', 0);
+ addToolbarElement('ImageAssist', 'DrupalBasic', 0);
+ addToolbarElement('ImageAssist', 'Default', 4);
+ addToolbarElement('ImageAssist', 'DrupalFiltered', 0);
+ addToolbarElement('ImageAssist', 'DrupalFull', 0);
+}