[kupu-checkins] r52777 - in kupu/trunk/kupu: common common/kupudrawers doc plone plone/kupu_plone_layer
duncan at codespeak.net
duncan at codespeak.net
Thu Mar 20 16:05:58 CET 2008
Author: duncan
Date: Thu Mar 20 16:05:56 2008
New Revision: 52777
Modified:
kupu/trunk/kupu/common/kupudrawers.js
kupu/trunk/kupu/common/kupudrawers/drawer.xsl
kupu/trunk/kupu/doc/CHANGES.txt
kupu/trunk/kupu/plone/kupu_plone_layer/kupucollection.xml.pt
kupu/trunk/kupu/plone/plonedrawers.py
kupu/trunk/kupu/plone/plonelibrarytool.py
Log:
Image upload now has same options as image insertion (list of sizes & styles is taken from content type 'Image' so may not be appropriate for
uploading other types).
Modified: kupu/trunk/kupu/common/kupudrawers.js
==============================================================================
--- kupu/trunk/kupu/common/kupudrawers.js (original)
+++ kupu/trunk/kupu/common/kupudrawers.js Thu Mar 20 16:05:56 2008
@@ -1442,6 +1442,7 @@
alert("Please enter a title for the image you are uploading");
return;
};
+ this.upload_title = form.node_prop_title.value;
form.node_prop_desc.value = form.node_prop_desc.value.replace(/^\xa0|\xa0$/g,'');
form.submit();
};
@@ -1457,13 +1458,33 @@
};
// called by onLoad within document sent by server
- this.finishUpload = function(url) {
+ this.finishUpload = function(uri) {
this.editor.resumeEditing();
- var imgclass = 'image-inline';
- if (this.editor.config && !!this.editor.config.captions) {
+ var sizeselector = document.getElementsByName('image-size-selector');
+ if (sizeselector && sizeselector.length > 0) {
+ sizeselector = sizeselector[0];
+ uri += sizeselector.options[sizeselector.selectedIndex].value;
+ }
+ var radios = document.getElementsByName('image-align');
+ var imgclass = "";
+ for (var i = 0; i < radios.length; i++) {
+ if (radios[i].checked) {
+ imgclass = radios[i].value;
+ };
+ };
+ var caption = document.getElementsByName('image-caption');
+ if (caption && caption.length>0 && caption[0].checked) {
imgclass += " captioned";
};
- this.tool.createImage(url, null, imgclass);
+ var classnames = document.getElementById('kupu-image-class');
+ if (classnames && classnames.selectedIndex >= 0) {
+ imgclass += " "+classnames.options[classnames.selectedIndex].value;
+ } else {
+ imgclass += ' image-inline';
+ }
+ imgclass = imgclass.strip();
+
+ this.tool.createImage(uri, this.upload_title, imgclass);
this.shared.newimages = 1;
this.drawertool.closeDrawer();
};
Modified: kupu/trunk/kupu/common/kupudrawers/drawer.xsl
==============================================================================
--- kupu/trunk/kupu/common/kupudrawers/drawer.xsl (original)
+++ kupu/trunk/kupu/common/kupudrawers/drawer.xsl Thu Mar 20 16:05:56 2008
@@ -341,8 +341,7 @@
</xsl:choose>
</xsl:template>
- <xsl:template match="resource|collection" mode="image-properties">
- <xsl:apply-templates select="." mode="base-properties"/>
+ <xsl:template match="resource|collection|uploadbutton" mode="image-extra-properties">
<div class="kupu-image-fields">
<input id="kupu-media" type="hidden" value="{media}" />
<input id="kupu-width" type="hidden" value="{width}" />
@@ -429,6 +428,10 @@
</textarea>
</div>
</xsl:template>
+ <xsl:template match="resource|collection" mode="image-properties">
+ <xsl:apply-templates select="." mode="base-properties"/>
+ <xsl:apply-templates select="." mode="image-extra-properties"/>
+ </xsl:template>
<xsl:template match="class">
<option value="{@name}">
<xsl:if test="$image-class=@name">
@@ -527,6 +530,7 @@
</form>
<iframe id="kupu_upload_form_target" name="kupu_upload_form_target" src="javascript:''"
scrolling="off" frameborder="0" width="0px" height="0px" display="None"> </iframe>
+ <xsl:apply-templates select="." mode="image-extra-properties"/>
</xsl:template>
<xsl:template match="breadcrumbs">
<span>
Modified: kupu/trunk/kupu/doc/CHANGES.txt
==============================================================================
--- kupu/trunk/kupu/doc/CHANGES.txt (original)
+++ kupu/trunk/kupu/doc/CHANGES.txt Thu Mar 20 16:05:56 2008
@@ -9,6 +9,8 @@
- timte fixed a possible unicode decode error
+ - Image upload now has same style options as image insertion.
+
- Plone tickets
* 6915 Kupu can't find anchors inside table cells
Modified: kupu/trunk/kupu/plone/kupu_plone_layer/kupucollection.xml.pt
==============================================================================
--- kupu/trunk/kupu/plone/kupu_plone_layer/kupucollection.xml.pt (original)
+++ kupu/trunk/kupu/plone/kupu_plone_layer/kupucollection.xml.pt Thu Mar 20 16:05:56 2008
@@ -91,8 +91,26 @@
</collection>
</tal:loop>
- <uploadbutton tal:condition="python:exists('upload') and kupu.isUploadSupported(context)">
+ <uploadbutton tal:condition="python:exists('upload') and kupu.isUploadSupported(context)"
+ tal:define="classes kupu/getUploadImageClasses;
+ sizes kupu/getUploadImageSizes;
+ defscale kupu/getDefaultScaleForType; origok kupu/getAllowOriginalImageSize;">
<uri tal:content="string:${here/absolute_url}/kupuUploadImage" />
+ <class tal:condition="classes" tal:repeat="c classes"
+ tal:attributes="title c/title; name c/classname" />
+ <sizes>
+ <size tal:repeat="size sizes">
+ <selected tal:define="action size/action;"
+ tal:condition="python:action==defscale" />
+ <label tal:content="size/label" />
+ <uri tal:content="size/uri" />
+ </size>
+ <size tal:condition="origok">
+ <selected tal:condition="python:defscale in ('original', '')" />
+ <label i18n:translate="option_original">Original</label>
+ <uri tal:content="info/url" />
+ </size>
+ </sizes>
</uploadbutton>
</items>
Modified: kupu/trunk/kupu/plone/plonedrawers.py
==============================================================================
--- kupu/trunk/kupu/plone/plonedrawers.py (original)
+++ kupu/trunk/kupu/plone/plonedrawers.py Thu Mar 20 16:05:56 2008
@@ -877,6 +877,40 @@
base = base[:posfactory]
return base
+ security.declareProtected("View", "getUploadImageSizes")
+ def getUploadImageSizes(self, portal_type=None):
+ resource_type = self.getResourceType()
+ portal = getToolByName(self, 'portal_url').getPortalObject()
+ mediatypes = resource_type.get_portal_types()
+ catalog = getToolByName(self, 'portal_catalog')
+ adaptor = InfoAdaptor(self, resource_type, portal)
+ if portal_type is None:
+ portal_type = self.getDefaultImageType()
+
+ brains = catalog.searchResults(portal_type=portal_type, limit=1)[:1]
+ if brains:
+ info = adaptor.get_image_sizes(brains[0], portal_type, '')
+ return info
+ return []
+
+ security.declareProtected("View", "getUploadImageClasses")
+ def getUploadImageClasses(self, portal_type=None):
+ if portal_type is None:
+ portal_type = self.getDefaultImageType()
+ stored = self.getClassesForType(portal_type)
+ classes = []
+ for c in stored:
+ c = c.strip()
+ if not c:
+ continue
+ if '|' in c:
+ title, classname = c.split('|', 1)
+ classes.append({'title': title, 'classname': classname})
+ else:
+ classes.append({'title': c, 'classname': c})
+ return classes
+
+
def _getImageSizes(self):
resource_type = self.getResourceType()
portal = getToolByName(self, 'portal_url').getPortalObject()
Modified: kupu/trunk/kupu/plone/plonelibrarytool.py
==============================================================================
--- kupu/trunk/kupu/plone/plonelibrarytool.py (original)
+++ kupu/trunk/kupu/plone/plonelibrarytool.py Thu Mar 20 16:05:56 2008
@@ -709,8 +709,14 @@
value = action_map.get(portal_type, {}).get('scalefield', 'image')
return value
+ security.declareProtected(permissions.ManageLibraries, "getDefaultImageType")
+ def getDefaultImageType(self):
+ return 'Image'
+
security.declareProtected(permissions.ManageLibraries, "getDefaultScaleForType")
- def getDefaultScaleForType(self, portal_type):
+ def getDefaultScaleForType(self, portal_type = None):
+ if not portal_type:
+ portal_type = self.getDefaultImageType()
action_map = getattr(self, '_preview_actions', {})
value = action_map.get(portal_type, {}).get('defscale', 'image_preview')
return value
More information about the kupu-checkins
mailing list