Here's what I did:
(1) In the sheet (you probably customized
AppWithinMinutes.LiveTableViewSheet) I added another hidden input
besides the one holding the URL template
{{html}}
<input type="hidden" value="$xwiki.getURL($entryDoc, 'edit',
"editor=inline&template=$!templateName&parent=WebHome")" />
<input type="hidden" name="entryName" value="put here what you
want"
#if($condition)readonly="readonly"#end />
{{/html}}
(2) In the JSX I replaced
this.input = new Element('input', {type: 'text'});
with
this.input = trigger.up().next('input[name=entryName]');
this.input.type = 'text';
this.input.defaultValue = this.input.value;
and then
this.input.clear().focus();
with
this.input.value = this.input.defaultValue;
this.input.focus();
This way you control the entry name text input from the Velocity.
Hope this helps,
Marius
On Mon, Jun 11, 2012 at 3:28 PM, Gerritjan Koekkoek
<gerritjankoekkoek(a)gmail.com> wrote:
App Within Minutes creates a nice "Add
record" button.
After clicking the button a dialog is presented asking for input that is
used to create a new documentname.
This is (more or less, since i modified it slightly) the Java script that
is added to the sheet by the app-within-minutes generator.
My question is due to fact that i'm not a javascript expert, so solution
might be very simple:
I would like to generate the documentname based on user that is clicking
the button
If user in group X then input will be pre populated with 'Full Name" of
that user and popup will not allow user to change this value;
Confirmation would be like "New Question will be made for: [[Gerritjan
Koekkoek]] and user can only proceed or cancel
If user in group y the same behaviour; but now the inputbox would need to
be open for change
Confirmation would be like "New Question will be made for: [[Gerritjan
Koekkoek]] but now user can change the input to 'Andree Benz' meaning that
new question is posted by
Gerritjan Koekkoek on behalf of Andree Benz.
How would you suggest to change below script to get the desired effect?
(see lineindicator ==> of what I thought would be a solution?
var XWiki = (function (XWiki) {
XWiki.EntryNamePopup = Class.create(XWiki.widgets.ModalPopup, {
initialize : function($super, trigger) {
trigger.observe('click', this.showDialog.bindAsEventListener(this));
this.urlTemplate = trigger.up().next('input[type=hidden]').value;
this.input = new Element('input', {type: 'text'});
this.addButton = new Element('input', {type: 'image', src:
'$xwiki.getSkinFile('icons/silk/add.png')', alt:
'$escapetool.javascript($msg.get('cdlsateprivat.CreateNewQuestionAltText'))'});
var container = new Element('div', {id: 'entryNamePopup'});
container.insert(this.input);
container.insert(this.addButton);
$super(container, {
show: {method: this.showDialog, keys: []},
add: {method: this._onAdd, keys: ['Enter']}
}, {
title:
'$escapetool.javascript($msg.get('cdlsateprivat.CreateNewQuestionTitle'))',
verticalPosition: 'top'
});
},
createDialog : function($super, event) {
this.input.observe
this.addButton.observe('click', this._onAdd.bind(this));
$super(event);
},
showDialog : function($super, event) {
$super(event);
==> $this.input.val() == 'Gerritjan Koekkoek' //this line did not work,
how can I get it prepopulated (or suggested) with preferably XWiki variable
this.input.clear().focus();
},
_onAdd : function() {
if (this.input.value != '') {
window.self.location = this.urlTemplate.replace('__entryName__',
encodeURIComponent(this.input.value));
} else {
this.input.focus();
}
}
});
function init() {
var actionBox = $('actionBox');
if(actionBox) {
new XWiki.EntryNamePopup(actionBox.down('.add'));
return true;
}
return false;
}
(XWiki.domIsLoaded && init()) || document.observe('xwiki:dom:loaded',
init);
return XWiki;
}(XWiki || {}));
_______________________________________________
users mailing list
users(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/users