зеркало из https://github.com/mozilla/pjs.git
[XForms] Moved upload to xforms-xhtml. Bug 328150, r=me+doronr, patch by surkov@dc.baikal.ru
This commit is contained in:
Родитель
1a26d72755
Коммит
64323d7f43
|
@ -319,4 +319,102 @@
|
||||||
</handlers>
|
</handlers>
|
||||||
</binding>
|
</binding>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- UPLOAD: <DEFAULT> -->
|
||||||
|
<binding id="xformswidget-upload"
|
||||||
|
extends="chrome://xforms/content/xforms.xml#xformswidget-upload-base">
|
||||||
|
<content>
|
||||||
|
<children includes="label"/>
|
||||||
|
<html:input anonid="text_control" class="xf-value" readonly="readonly"/>
|
||||||
|
<html:button anonid="browse_button" xbl:inherits="accesskey">
|
||||||
|
&xforms.upload.browsetext;
|
||||||
|
</html:button>
|
||||||
|
<html:button anonid="clear_button">
|
||||||
|
&xforms.upload.cleartext;
|
||||||
|
</html:button>
|
||||||
|
<children/>
|
||||||
|
</content>
|
||||||
|
|
||||||
|
<implementation implements="nsIXFormsUIWidget, nsIXFormsUploadUIElement">
|
||||||
|
<method name="getControlElement">
|
||||||
|
<body>
|
||||||
|
return {
|
||||||
|
set value(val) {
|
||||||
|
this._textControl.value = val;
|
||||||
|
},
|
||||||
|
set readonly(val) {
|
||||||
|
if (val) {
|
||||||
|
this._browseButton.setAttribute('disabled', 'disabled');
|
||||||
|
this._clearButton.setAttribute('disabled', 'disabled');
|
||||||
|
} else {
|
||||||
|
this._browseButton.removeAttribute('disabled');
|
||||||
|
this._clearButton.removeAttribute('disabled');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
focus: function() {
|
||||||
|
this._browseButton.focus();
|
||||||
|
},
|
||||||
|
|
||||||
|
_browseButton: this.ownerDocument.
|
||||||
|
getAnonymousElementByAttribute(this, 'anonid', 'browse_button'),
|
||||||
|
_clearButton: this.ownerDocument.
|
||||||
|
getAnonymousElementByAttribute(this, 'anonid', 'clear_button'),
|
||||||
|
_textControl: this.ownerDocument.
|
||||||
|
getAnonymousElementByAttribute(this, 'anonid', 'text_control'),
|
||||||
|
};
|
||||||
|
</body>
|
||||||
|
</method>
|
||||||
|
</implementation>
|
||||||
|
|
||||||
|
<handlers>
|
||||||
|
<handler event="click">
|
||||||
|
switch (event.originalTarget.getAttribute("anonid")) {
|
||||||
|
case "browse_button":
|
||||||
|
this.uploadElement.pickFile();
|
||||||
|
break;
|
||||||
|
case "clear_button":
|
||||||
|
this.uploadElement.clearFile();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
</handler>
|
||||||
|
|
||||||
|
<handler event="keypress" keycode="VK_RETURN">
|
||||||
|
switch (event.originalTarget.getAttribute("anonid")) {
|
||||||
|
case "browse_button":
|
||||||
|
case "clear_button":
|
||||||
|
this.dispatchDOMUIEvent('DOMActivate');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
</handler>
|
||||||
|
</handlers>
|
||||||
|
</binding>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- UPLOAD: DISABLED -->
|
||||||
|
<binding id="xformswidget-upload-disabled"
|
||||||
|
extends="chrome://xforms/content/xforms.xml#xformswidget-upload-base">
|
||||||
|
<content>
|
||||||
|
<children includes="label"/>
|
||||||
|
<html:input readonly="readonly" class="xf-value" xbl:inherits="accesskey"/>
|
||||||
|
<html:button disabled="disabled" xbl:inherits="accesskey">
|
||||||
|
&xforms.upload.browsetext;
|
||||||
|
</html:button>
|
||||||
|
<html:button disabled="disabled" xbl:inherits="accesskey">
|
||||||
|
&xforms.upload.cleartext;
|
||||||
|
</html:button>
|
||||||
|
<children/>
|
||||||
|
</content>
|
||||||
|
|
||||||
|
<implementation>
|
||||||
|
<method name="getControlElement">
|
||||||
|
<body>
|
||||||
|
return {
|
||||||
|
set value(val){},
|
||||||
|
set readonly(val){},
|
||||||
|
focus: function(){}
|
||||||
|
};
|
||||||
|
</body>
|
||||||
|
</method>
|
||||||
|
</implementation>
|
||||||
|
</binding>
|
||||||
</bindings>
|
</bindings>
|
||||||
|
|
|
@ -482,14 +482,14 @@ select html|div.select-choice-content {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* upload widgets */
|
/* upload widgets */
|
||||||
upload {
|
html|*:root upload {
|
||||||
-moz-binding: url('chrome://xforms/content/xforms.xml#xformswidget-upload-disabled');
|
-moz-binding: url('chrome://xforms/content/xforms-xhtml.xml#xformswidget-upload-disabled');
|
||||||
}
|
}
|
||||||
|
|
||||||
upload[mozType|type="http://www.w3.org/2001/XMLSchema#anyURI"],
|
html|*:root upload[mozType|type="http://www.w3.org/2001/XMLSchema#anyURI"],
|
||||||
upload[mozType|type="http://www.w3.org/2001/XMLSchema#base64Binary"],
|
html|*:root upload[mozType|type="http://www.w3.org/2001/XMLSchema#base64Binary"],
|
||||||
upload[mozType|type="http://www.w3.org/2001/XMLSchema#hexBinary"] {
|
html|*:root upload[mozType|type="http://www.w3.org/2001/XMLSchema#hexBinary"] {
|
||||||
-moz-binding: url('chrome://xforms/content/xforms.xml#xformswidget-upload');
|
-moz-binding: url('chrome://xforms/content/xforms-xhtml.xml#xformswidget-upload');
|
||||||
}
|
}
|
||||||
|
|
||||||
/* default MIP styling */
|
/* default MIP styling */
|
||||||
|
|
|
@ -313,129 +313,47 @@
|
||||||
|
|
||||||
|
|
||||||
<!-- UPLOAD: <DEFAULT>
|
<!-- UPLOAD: <DEFAULT>
|
||||||
XXX: The widget doesn't support interface based on getElementControl()
|
The upload widget assumes successors bindings implement getElementControl()
|
||||||
method (see a bug https://bugzilla.mozilla.org/show_bug.cgi?id=323845).
|
method what returns the object:
|
||||||
|
{
|
||||||
|
set value(); // set "string" value
|
||||||
|
set readonly(); // set readonly state
|
||||||
|
focus(); // set focus
|
||||||
|
}
|
||||||
-->
|
-->
|
||||||
<binding id="xformswidget-upload"
|
<binding id="xformswidget-upload-base" extends="#xformswidget-base">
|
||||||
extends="chrome://xforms/content/xforms.xml#xformswidget-base">
|
|
||||||
<content>
|
|
||||||
<children includes="label"/>
|
|
||||||
<html:input anonid="upload_text_control"
|
|
||||||
class="xf-value"
|
|
||||||
readonly="readonly"/>
|
|
||||||
<html:button anonid="upload_browse_button"
|
|
||||||
type="button"
|
|
||||||
onclick="this.parentNode.uploadElem.pickFile();"
|
|
||||||
onkeypress="if (event.keyCode == event.DOM_VK_RETURN) this.parentNode.dispatchDOMUIEvent('DOMActivate');"
|
|
||||||
xbl:inherits="accesskey"> &xforms.upload.browsetext; </html:button>
|
|
||||||
<html:button anonid="upload_clear_button"
|
|
||||||
type="button"
|
|
||||||
onclick="this.parentNode.uploadElem.clearFile();"
|
|
||||||
onkeypress="if (event.keyCode == event.DOM_VK_RETURN) this.parentNode.dispatchDOMUIEvent('DOMActivate');"
|
|
||||||
> &xforms.upload.cleartext; </html:button>
|
|
||||||
<children/>
|
|
||||||
</content>
|
|
||||||
|
|
||||||
<implementation implements="nsIXFormsUIWidget, nsIXFormsUploadUIElement">
|
<implementation implements="nsIXFormsUIWidget, nsIXFormsUploadUIElement">
|
||||||
<method name="refresh">
|
<method name="refresh">
|
||||||
<body>
|
<body>
|
||||||
if (this.accessors.isReadonly()) {
|
this.control.readonly = this.accessors.isReadonly();
|
||||||
this.browseButton.setAttribute("disabled", "disabled");
|
</body>
|
||||||
this.clearButton.setAttribute("disabled", "disabled");
|
</method>
|
||||||
} else {
|
|
||||||
this.browseButton.removeAttribute("disabled");
|
|
||||||
this.clearButton.removeAttribute("disabled");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
<method name="focus">
|
||||||
|
<body>
|
||||||
|
this.control.focus();
|
||||||
return true;
|
return true;
|
||||||
</body>
|
</body>
|
||||||
</method>
|
</method>
|
||||||
|
|
||||||
<destructor>
|
<property name="uploadElement" readonly="true">
|
||||||
this._uploadElem = null;
|
|
||||||
this._textControl = null;
|
|
||||||
this._browseButton = null;
|
|
||||||
this._clearButton = null;
|
|
||||||
</destructor>
|
|
||||||
|
|
||||||
<field name="_uploadElem">null</field>
|
|
||||||
|
|
||||||
<property name="uploadElem" readonly="true">
|
|
||||||
<getter>
|
<getter>
|
||||||
if (!this._uploadElem) {
|
if (!this._uploadElement) {
|
||||||
this._uploadElem =
|
this._uploadElement =
|
||||||
this.QueryInterface(Components.interfaces.nsIXFormsUploadElement);
|
this.QueryInterface(Components.interfaces.nsIXFormsUploadElement);
|
||||||
}
|
}
|
||||||
return this._uploadElem;
|
return this._uploadElement;
|
||||||
</getter>
|
|
||||||
</property>
|
|
||||||
|
|
||||||
<field name="_textControl">null</field>
|
|
||||||
|
|
||||||
<property name="textControl" readonly="true">
|
|
||||||
<getter>
|
|
||||||
if (!this._textControl) {
|
|
||||||
this._textControl =
|
|
||||||
document.getAnonymousElementByAttribute(this, "anonid",
|
|
||||||
"upload_text_control");
|
|
||||||
}
|
|
||||||
return this._textControl;
|
|
||||||
</getter>
|
|
||||||
</property>
|
|
||||||
|
|
||||||
<field name="_browseButton">null</field>
|
|
||||||
|
|
||||||
<property name="browseButton" readonly="true">
|
|
||||||
<getter>
|
|
||||||
if (!this._browseButton) {
|
|
||||||
this._browseButton =
|
|
||||||
document.getAnonymousElementByAttribute(this, "anonid",
|
|
||||||
"upload_browse_button");
|
|
||||||
}
|
|
||||||
return this._browseButton;
|
|
||||||
</getter>
|
|
||||||
</property>
|
|
||||||
|
|
||||||
<field name="_clearButton">null</field>
|
|
||||||
|
|
||||||
<property name="clearButton" readonly="true">
|
|
||||||
<getter>
|
|
||||||
if (!this._clearButton) {
|
|
||||||
this._clearButton =
|
|
||||||
document.getAnonymousElementByAttribute(this, "anonid",
|
|
||||||
"upload_clear_button");
|
|
||||||
}
|
|
||||||
return this._clearButton;
|
|
||||||
</getter>
|
</getter>
|
||||||
</property>
|
</property>
|
||||||
|
<field name="_uploadElement">null</field>
|
||||||
|
|
||||||
<method name="setFieldText">
|
<method name="setFieldText">
|
||||||
<parameter name="aString"/>
|
<parameter name="aString"/>
|
||||||
<body>
|
<body>
|
||||||
this.textControl.value = aString;
|
this.control.value = aString;
|
||||||
</body>
|
</body>
|
||||||
</method>
|
</method>
|
||||||
</implementation>
|
</implementation>
|
||||||
</binding>
|
</binding>
|
||||||
|
|
||||||
<!-- UPLOAD: DISABLED
|
|
||||||
XXX: The widget doesn't support interface based on getElementControl()
|
|
||||||
method (see a bug https://bugzilla.mozilla.org/show_bug.cgi?id=323845).
|
|
||||||
-->
|
|
||||||
<binding id="xformswidget-upload-disabled"
|
|
||||||
extends="chrome://xforms/content/xforms.xml#xformswidget-base">
|
|
||||||
<content>
|
|
||||||
<children includes="label"/>
|
|
||||||
<html:input readonly="readonly"
|
|
||||||
class="xf-value"
|
|
||||||
xbl:inherits="accesskey"/>
|
|
||||||
<html:button type="button"
|
|
||||||
disabled="disabled"
|
|
||||||
xbl:inherits="accesskey"> &xforms.upload.browsetext; </html:button>
|
|
||||||
<html:button type="button"
|
|
||||||
disabled="disabled"
|
|
||||||
xbl:inherits="accesskey"> &xforms.upload.cleartext; </html:button>
|
|
||||||
<children/>
|
|
||||||
</content>
|
|
||||||
</binding>
|
|
||||||
</bindings>
|
</bindings>
|
||||||
|
|
Загрузка…
Ссылка в новой задаче