Index: openacs-4/packages/xowiki/tcl/form-field-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/form-field-procs.tcl,v diff -u -r1.134 -r1.135 --- openacs-4/packages/xowiki/tcl/form-field-procs.tcl 17 Feb 2009 13:47:50 -0000 1.134 +++ openacs-4/packages/xowiki/tcl/form-field-procs.tcl 24 Mar 2009 14:15:39 -0000 1.135 @@ -1188,9 +1188,16 @@ set ::acs_blank_master(xinha.options) $xinha_options lappend ::acs_blank_master__htmlareas [my id] - if {[my inplace]} { + if {[my set inplace]} { ::html::div [my get_attributes id name {CSSclass class} disabled] { - ::html::t -disableOutputEscaping [my value] + set href \# + set onclick "xinha.inplace.openEditor('[my id]');return false;" + ::html::a -style "float: right;" -class edit-item-button -href $href -onclick $onclick { + ::html::t -disableOutputEscaping   + } + ::html::div -id "[my id]__CONTENT__" { + ::html::t -disableOutputEscaping [my value] + } } my set hiddenid [my id]__HIDDEN__ my set type hidden Index: openacs-4/packages/xowiki/tcl/package-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/package-procs.tcl,v diff -u -r1.166 -r1.167 --- openacs-4/packages/xowiki/tcl/package-procs.tcl 6 Mar 2009 09:03:58 -0000 1.166 +++ openacs-4/packages/xowiki/tcl/package-procs.tcl 24 Mar 2009 14:15:39 -0000 1.167 @@ -1438,7 +1438,7 @@ list {{package_id read}} } } - + Policy policy3 -contains { # # we require side wide admin rights for deletions Index: openacs-4/packages/xowiki/tcl/xowiki-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/xowiki-procs.tcl,v diff -u -r1.337 -r1.338 --- openacs-4/packages/xowiki/tcl/xowiki-procs.tcl 10 Mar 2009 17:52:26 -0000 1.337 +++ openacs-4/packages/xowiki/tcl/xowiki-procs.tcl 24 Mar 2009 14:15:40 -0000 1.338 @@ -1531,6 +1531,15 @@ # prepare references management # my set references [list] + if {[my exists __extra_references]} { + # + # xowiki content-flow uses extra references, e.g. to forms. + # TODO: provide a better interface for providing these kind of + # non-link references. + # + my set references [my set __extra_references] + my unset __extra_references + } #my msg "[my name] setting unresolved_references 0" my set unresolved_references 0 my set __unresolved_references [list] @@ -1541,7 +1550,7 @@ # # record references and clear it # - #my msg "we have the content, update=$update_references, unresolved=$unresolved_references" + #my msg "we have the content, update=$update_references, unresolved=[my set unresolved_references]" if {$update_references || [my set unresolved_references] > 0} { my update_references [my item_id] [lsort -unique [my set references]] } Index: openacs-4/packages/xowiki/www/resources/xinha-inplace.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/www/resources/xinha-inplace.js,v diff -u -r1.1 -r1.2 --- openacs-4/packages/xowiki/www/resources/xinha-inplace.js 14 Dec 2008 21:36:22 -0000 1.1 +++ openacs-4/packages/xowiki/www/resources/xinha-inplace.js 24 Mar 2009 14:15:40 -0000 1.2 @@ -57,20 +57,7 @@ * */ xinha.inplace.finish = function() { - var elements = document.getElementsByTagName('*'); - var nrElements = elements.length; - for (i = 0, j = 0; i < nrElements; i++) { - if (elements[i].className == 'xinha') { - var htmlText = elements[i].innerHTML; - var hiddenId = elements[i].id + '__HIDDEN__'; - var hidden = document.getElementById(hiddenId); - if (hidden == undefined) { - //console.log('ignoring ' + hiddenId); - } else { - hidden.value = htmlText; - } - } - } +// nothing to do for now }; /* @@ -85,7 +72,7 @@ this.style.backgroundColor = xinha.inplace.hoverColor; } element.onmouseout = function() {this.style.backgroundColor = xinha.inplace.backgroundColor;} - element.ondblclick = function() {xinha.inplace.openEditor(this);} + element.ondblclick = function() {xinha.inplace.openEditor(this.id);} return element; }; @@ -96,20 +83,28 @@ * content of the given element. On a save operation, this content of * the element will be replaced by the content of the textarea. */ -xinha.inplace.openEditor = function(element) { - // use two IDs to locate later the editForm and the textArea +xinha.inplace.openEditor = function(editId) { + // Use id rather then element to make it easier to call this + // function for other contexts. + var element = document.getElementById(editId); + + // Use three IDs to locate later the editForm, the textArea and the + // content: var editFormId = element.id + '__FORM__'; var textAreaId = element.id + '__TEXTAREA__'; + var contentId = element.id + '__CONTENT__'; - // create editForm and form elements + // Create editForm and form elements var editForm = document.createElement('form'); var textArea = document.createElement('textarea'); var saveButton = document.createElement('input'); var cancelButton = document.createElement('input'); + + var content = document.getElementById(contentId); // configure textArea, editForm and buttons textArea.id = textAreaId; - textArea.value = element.innerHTML; + textArea.value = content.innerHTML; textArea.style.width = element.style.width ? element.style.width : element.offsetWidth + 'px'; textArea.style.height = element.style.height ? element.style.height : (element.offsetHeight + 25) + 'px'; textArea.focus(); @@ -162,7 +157,12 @@ var editForm = document.getElementById(id); // update text of the div, if (replace) { - element.innerHTML = htmlText; + var contentId = element.id + "__CONTENT__"; + var hiddenId = element.id + "__HIDDEN__"; + var content = document.getElementById(contentId); + var hidden = document.getElementById(hiddenId); + content.innerHTML = htmlText; + hidden.value = htmlText; } // make div visible and remove editor element.style.display = 'block';