Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

添加图片上传的gem,添加图片需要的ext文件

  • Loading branch information...
commit fb5f75129c77e96981e0efb8254c515285aa787b 1 parent a4c28e2
@mouse-lin authored
View
3  Gemfile
@@ -11,6 +11,9 @@ gem "devise"
gem "mongrel", ">=1.2.0.pre2"
gem "rake", "0.8.7"
gem 'rd_searchlogic', '3.0.1', :require => 'searchlogic'
+gem 'kindeditor'
+gem 'rmagick'
+gem 'paperclip', '~> 2.3'
# Use unicorn as the web server
# gem 'unicorn'
View
11 Gemfile.lock
@@ -31,6 +31,7 @@ GEM
arel (2.0.10)
bcrypt-ruby (2.1.4)
builder (2.1.2)
+ cocaine (0.2.1)
daemons (1.0.10)
devise (1.3.4)
bcrypt-ruby (~> 2.1.2)
@@ -40,6 +41,7 @@ GEM
abstract (>= 1.0.0)
gem_plugin (0.2.3)
i18n (0.6.0)
+ kindeditor (0.0.3)
mail (2.2.19)
activesupport (>= 2.3.6)
i18n (>= 0.4.0)
@@ -51,6 +53,11 @@ GEM
gem_plugin (~> 0.2.3)
mysql2 (0.2.7)
orm_adapter (0.0.5)
+ paperclip (2.7.0)
+ activerecord (>= 2.3.0)
+ activesupport (>= 2.3.2)
+ cocaine (>= 0.0.2)
+ mime-types
polyglot (0.3.3)
rack (1.2.5)
rack-mount (0.6.14)
@@ -73,6 +80,7 @@ GEM
rake (0.8.7)
rd_searchlogic (3.0.1)
activerecord (>= 3.0.0)
+ rmagick (2.13.1)
thor (0.14.6)
treetop (1.4.10)
polyglot
@@ -86,8 +94,11 @@ PLATFORMS
DEPENDENCIES
devise
+ kindeditor
mongrel (>= 1.2.0.pre2)
mysql2 (= 0.2.7)
+ paperclip (~> 2.3)
rails (= 3.0.3)
rake (= 0.8.7)
rd_searchlogic (= 3.0.1)
+ rmagick
View
2  app/views/layouts/application.html.erb
@@ -7,6 +7,7 @@
<%= javascript_include_tag 'Extjs/ext-lang-zh_CN.js' %>
<%= javascript_include_tag 'Extjs/ux/SearchField.js' %>
+ <%= javascript_include_tag 'Extjs/ux/FileUploadField.js' %>
<%= javascript_include_tag 'PF/public/init.js' %>
<%= javascript_include_tag 'PF/util/util.js' %>
@@ -16,6 +17,7 @@
<%= stylesheet_link_tag '/javascripts/Extjs/resources/css/ext-all.css' %>
<%= stylesheet_link_tag '/javascripts/Extjs/resources/css/xtheme-gray.css' %>
<%= stylesheet_link_tag 'menu-style.css' %>
+ <%= stylesheet_link_tag 'fileuploadfield.css' %>
<%= stylesheet_link_tag 'button_icon.css' %>
<%= csrf_meta_tag %>
</head>
View
182 public/javascripts/Extjs/ux/FileUploadField.js
@@ -0,0 +1,182 @@
+/*!
+ * Ext JS Library 3.2.1
+ * Copyright(c) 2006-2010 Ext JS, Inc.
+ * licensing@extjs.com
+ * http://www.extjs.com/license
+ */
+Ext.ns('Ext.ux.form');
+
+/**
+ * @class Ext.ux.form.FileUploadField
+ * @extends Ext.form.TextField
+ * Creates a file upload field.
+ * @xtype fileuploadfield
+ */
+Ext.ux.form.FileUploadField = Ext.extend(Ext.form.TextField, {
+ /**
+ * @cfg {String} buttonText The button text to display on the upload button (defaults to
+ * 'Browse...'). Note that if you supply a value for {@link #buttonCfg}, the buttonCfg.text
+ * value will be used instead if available.
+ */
+ buttonText: 'Browse...',
+ /**
+ * @cfg {Boolean} buttonOnly True to display the file upload field as a button with no visible
+ * text field (defaults to false). If true, all inherited TextField members will still be available.
+ */
+ buttonOnly: false,
+ /**
+ * @cfg {Number} buttonOffset The number of pixels of space reserved between the button and the text field
+ * (defaults to 3). Note that this only applies if {@link #buttonOnly} = false.
+ */
+ buttonOffset: 3,
+ /**
+ * @cfg {Object} buttonCfg A standard {@link Ext.Button} config object.
+ */
+
+ // private
+ readOnly: true,
+
+ /**
+ * @hide
+ * @method autoSize
+ */
+ autoSize: Ext.emptyFn,
+
+ // private
+ initComponent: function(){
+ Ext.ux.form.FileUploadField.superclass.initComponent.call(this);
+
+ this.addEvents(
+ /**
+ * @event fileselected
+ * Fires when the underlying file input field's value has changed from the user
+ * selecting a new file from the system file selection dialog.
+ * @param {Ext.ux.form.FileUploadField} this
+ * @param {String} value The file value returned by the underlying file input field
+ */
+ 'fileselected'
+ );
+ },
+
+ // private
+ onRender : function(ct, position){
+ Ext.ux.form.FileUploadField.superclass.onRender.call(this, ct, position);
+
+ this.wrap = this.el.wrap({cls:'x-form-field-wrap x-form-file-wrap'});
+ this.el.addClass('x-form-file-text');
+ this.el.dom.removeAttribute('name');
+ this.createFileInput();
+
+ var btnCfg = Ext.applyIf(this.buttonCfg || {}, {
+ text: this.buttonText
+ });
+ this.button = new Ext.Button(Ext.apply(btnCfg, {
+ renderTo: this.wrap,
+ cls: 'x-form-file-btn' + (btnCfg.iconCls ? ' x-btn-icon' : '')
+ }));
+
+ if(this.buttonOnly){
+ this.el.hide();
+ this.wrap.setWidth(this.button.getEl().getWidth());
+ }
+
+ this.bindListeners();
+ this.resizeEl = this.positionEl = this.wrap;
+ },
+
+ bindListeners: function(){
+ this.fileInput.on({
+ scope: this,
+ mouseenter: function() {
+ this.button.addClass(['x-btn-over','x-btn-focus'])
+ },
+ mouseleave: function(){
+ this.button.removeClass(['x-btn-over','x-btn-focus','x-btn-click'])
+ },
+ mousedown: function(){
+ this.button.addClass('x-btn-click')
+ },
+ mouseup: function(){
+ this.button.removeClass(['x-btn-over','x-btn-focus','x-btn-click'])
+ },
+ change: function(){
+ var v = this.fileInput.dom.value;
+ this.setValue(v);
+ this.fireEvent('fileselected', this, v);
+ }
+ });
+ },
+
+ createFileInput : function() {
+ this.fileInput = this.wrap.createChild({
+ id: this.getFileInputId(),
+ name: this.name||this.getId(),
+ cls: 'x-form-file',
+ tag: 'input',
+ type: 'file',
+ size: 1
+ });
+ },
+
+ reset : function(){
+ this.fileInput.remove();
+ this.createFileInput();
+ this.bindListeners();
+ Ext.ux.form.FileUploadField.superclass.reset.call(this);
+ },
+
+ // private
+ getFileInputId: function(){
+ return this.id + '-file';
+ },
+
+ // private
+ onResize : function(w, h){
+ Ext.ux.form.FileUploadField.superclass.onResize.call(this, w, h);
+
+ this.wrap.setWidth(w);
+
+ if(!this.buttonOnly){
+ var w = this.wrap.getWidth() - this.button.getEl().getWidth() - this.buttonOffset;
+ this.el.setWidth(w);
+ }
+ },
+
+ // private
+ onDestroy: function(){
+ Ext.ux.form.FileUploadField.superclass.onDestroy.call(this);
+ Ext.destroy(this.fileInput, this.button, this.wrap);
+ },
+
+ onDisable: function(){
+ Ext.ux.form.FileUploadField.superclass.onDisable.call(this);
+ this.doDisable(true);
+ },
+
+ onEnable: function(){
+ Ext.ux.form.FileUploadField.superclass.onEnable.call(this);
+ this.doDisable(false);
+
+ },
+
+ // private
+ doDisable: function(disabled){
+ this.fileInput.dom.disabled = disabled;
+ this.button.setDisabled(disabled);
+ },
+
+
+ // private
+ preFocus : Ext.emptyFn,
+
+ // private
+ alignErrorIcon : function(){
+ this.errorIcon.alignTo(this.wrap, 'tl-tr', [2, 0]);
+ }
+
+});
+
+Ext.reg('fileuploadfield', Ext.ux.form.FileUploadField);
+
+// backwards compat
+Ext.form.FileUploadField = Ext.ux.form.FileUploadField;
View
14 public/javascripts/PF/pages/settings_index.js
@@ -46,7 +46,7 @@ Pf.settings.homeIndex = {
store: studentScoreStore,
loadMask: true,
cm: cm,
- height: 300,
+ height: 250,
region: "south",
bbar : new Pf.util.Bbar({ store : studentScoreStore }),
});
@@ -76,6 +76,7 @@ Pf.settings.homeIndex = {
title: "test",
region: "center",
autoScroll : true,
+ fileUpload: true,
frame: true,
labelAlign : 'right',
buttonAlign: 'center',
@@ -96,7 +97,7 @@ Pf.settings.homeIndex = {
})]
},
{
- defaults : { anchor : '95%'},
+ defaults : { anchor : '95%', },
columnWidth: 1,
defaultType : 'textfield',
layout: "form",
@@ -125,6 +126,15 @@ Pf.settings.homeIndex = {
fieldLabel: "住址",
name: "home"
},
+ {
+ xtype: 'fileuploadfield',
+ allowBlank : true,
+ emptyText: '选择',
+ fieldLabel: '头像',
+ name: 'size_sheet',
+ buttonText: '上传',
+ listeners: { 'fileselected' : {fn: this.onFileSelect, scope: this} }
+ }
]
}
]
View
33 public/stylesheets/fileuploadfield.css
@@ -0,0 +1,33 @@
+/*!
+ * Ext JS Library 3.3.1
+ * Copyright(c) 2006-2010 Sencha Inc.
+ * licensing@sencha.com
+ * http://www.sencha.com/license
+ */
+/*
+ * FileUploadField component styles
+ */
+.x-form-file-wrap {
+ position: relative;
+ height: 22px;
+}
+.x-form-file-wrap .x-form-file {
+ position: absolute;
+ right: 0;
+ -moz-opacity: 0;
+ filter:alpha(opacity: 0);
+ opacity: 0;
+ z-index: 2;
+ height: 22px;
+}
+.x-form-file-wrap .x-form-file-btn {
+ position: absolute;
+ right: 0;
+ z-index: 1;
+}
+.x-form-file-wrap .x-form-file-text {
+ position: absolute;
+ left: 0;
+ z-index: 3;
+ color: #777;
+}
View
2  public/stylesheets/menu-style.css
@@ -1,5 +1,5 @@
body {
- font: 11px Arial, Helvetica, sans-serif;
+ /*font: 11px Arial, Helvetica, sans-serif;*/
background: #ffffff url(../images/main-bg.gif);
padding: 0;
margin: 0;

0 comments on commit fb5f751

Please sign in to comment.
Something went wrong with that request. Please try again.