Skip to content

Commit 8aa24dd

Browse files
committed
Merge branch 'master' into selectmenu
2 parents 25023c3 + 8ec7a1b commit 8aa24dd

22 files changed

+357
-60
lines changed

AUTHORS.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,3 +224,8 @@ Juan Pablo Kaniefsky <jpkaniefsky@gmail.com>
224224
Roman Salnikov <bardt.dz@gmail.com>
225225
Anika Henke <anika@selfthinker.org>
226226
Samuel Bovée <samycookie2000@yahoo.fr>
227+
Fabrício Matté <ult_combo@hotmail.com>
228+
Viktor Kojouharov <vkojouharov@gmail.com>
229+
Pawel Maruszczyk <lord_t@o2.pl>
230+
Pavel Selitskas <p.selitskas@gmail.com>
231+
Bjørn Johansen <bjorn.johansen@metronet.no>

CONTRIBUTING.md

Lines changed: 205 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,205 @@
1+
# Contributing to jQuery UI
2+
3+
1. [Getting Involved](#getting-involved)
4+
2. [Discussion](#discussion)
5+
3. [How To Report Bugs](#how-to-report-bugs)
6+
4. [jQuery UI Coding Standards](#jquery-ui-coding-standards)
7+
5. [Tips For Bug Patching](#tips-for-bug-patching)
8+
9+
10+
11+
## Getting Involved
12+
13+
There are a number of ways to get involved with the development of jQuery UI. Even if you've never contributed code to an Open Source project before, we're always looking for help identifying bugs, writing and reducing test cases and documentation.
14+
15+
This is the best way to contribute to jQuery UI. Please read through the full guide detailing [How to Report Bugs](#how-to-report-bugs).
16+
17+
## Discussion
18+
19+
### Forum and IRC
20+
21+
The jQuery UI development team frequently tracks posts on the [Developing jQuery UI Forum](http://forum.jquery.com/developing-jquery-ui). If you have longer posts or questions please feel free to post them there. If you think you've found a bug please [file it in the bug tracker](#how-to-report-bugs).
22+
23+
Additionally most of the jQuery UI development team can be found in the [#jqueryui-dev](http://webchat.freenode.net/?channels=jqueryui-dev) IRC channel on irc.freenode.net.
24+
25+
### Weekly Status Meetings
26+
27+
Every week (unless otherwise noted) the jQuery UI dev team has a meeting to discuss the progress of current work and to bring forward possible new blocker bugs for discussion.
28+
29+
The meeting is held in the [#jquery-meeting](http://webchat.freenode.net/?channels=jquery-meeting) IRC channel on irc.freenode.net at [Noon EST](http://www.timeanddate.com/worldclock/fixedtime.html?month=1&day=17&year=2011&hour=12&min=0&sec=0&p1=43) on Wednesdays.
30+
31+
Past Meeting Notes:
32+
[2008 - 2011](https://docs.google.com/spreadsheet/ccc?key=0AusvKVL7jmFUcHVBQk9tMUxkRGl0emVwZGdLd0QtUlE),
33+
[2012 - current](https://docs.google.com/spreadsheet/ccc?key=0ArIM4UVbwE-3dFg1T0k4VlE1bF82Nm9tbW90cVNxN0E)
34+
35+
36+
## How to Report Bugs
37+
38+
### Make sure it is a jQuery UI bug
39+
40+
Many bugs reported to our bug tracker are actually bugs in user code, not in jQuery UI code. Keep in mind that just because your code throws an error and the console points to a line number inside of jQuery or jQuery UI, this does *not* mean the bug is a jQuery UI bug.
41+
42+
If you are new to jQuery and/or jQuery UI, it is usually a much better idea to ask for help first in the [Using jQuery Forum](http://forum.jquery.com/using-jquery), the [Using jQuery UI Forum](http://forum.jquery.com/using-jquery-ui) or the [jQuery IRC channel](http://webchat.freenode.net/?channels=%23jquery). You will get much quicker support, and you will help avoid tying up the jQuery UI team with invalid bug reports. These same resources can also be useful if you want to confirm that your bug is indeed a bug in jQuery UI before filing any tickets.
43+
44+
45+
### Disable any browser extensions
46+
47+
Make sure you have reproduced the bug with all browser extensions and add-ons disabled, as these can sometimes cause things to break in interesting and unpredictable ways. Try using incognito, stealth or anonymous browsing modes.
48+
49+
50+
### Try the latest version of jQuery UI
51+
52+
Bugs in old versions of jQuery UI may have already been fixed. In order to avoid reporting known issues, make sure you are always testing against the latest stable release.
53+
54+
### Try an older version of jQuery UI
55+
56+
Sometimes, bugs are introduced in newer versions of jQuery UI that do not exist in previous versions. When possible, it can be useful to try testing with an older release.
57+
58+
### Reduce, reduce, reduce!
59+
60+
When you are experiencing a problem, the most useful thing you can possibly do is to [reduce your code](http://webkit.org/quality/reduction.html) to the bare minimum required to reproduce the issue. This makes it *much* easier to isolate and fix the offending code. Bugs that are reported without reduced test cases generally take much longer to fix than bugs that are submitted with them, so you really should try to do this if at all possible.
61+
62+
## jQuery UI Coding Standards
63+
64+
See: [jQuery UI Coding Standards](http://wiki.jqueryui.com/w/page/12137737/Coding%20standards)
65+
66+
## Tips For Bug Patching
67+
68+
69+
### Environment: localhost w/ PHP, Node & Grunt
70+
71+
jQuery UI uses node & gruntjs to automate the building and validation of source code.
72+
73+
Some tests depend on PHP running locally, so make sure you have the following installed:
74+
75+
* Some kind of localhost server program that supports PHP (any will do)
76+
* Node.js
77+
* NPM (comes with the latest version of Node.js)
78+
* Grunt (install with: `npm install grunt -g`
79+
80+
81+
Maintaining a list of platform specific instructions is outside of the scope of this document and there is plenty of existing documentation for the above technologies.
82+
83+
84+
### Build a Local Copy of jQuery UI
85+
86+
Create a fork of the jQuery UI repo on github at http://github.com/jquery/jquery-ui
87+
88+
Change directory to your web root directory, whatever that might be:
89+
90+
```bash
91+
$ cd /path/to/your/www/root/
92+
```
93+
94+
Clone your jQuery UI fork to work locally
95+
96+
```bash
97+
$ git clone git@github.com:username/jquery-ui.git
98+
```
99+
100+
Change directory to the newly created dir jquery-ui/
101+
102+
```bash
103+
$ cd jquery-ui
104+
```
105+
106+
Add the jQuery master as a remote. I label mine "upstream"
107+
108+
```bash
109+
$ git remote add upstream git://github.com/jquery/jquery-ui.git
110+
```
111+
112+
Get in the habit of pulling in the "upstream" master to stay up to date as jQuery UI receives new commits
113+
114+
```bash
115+
$ git pull upstream master
116+
```
117+
118+
To lint the JavaScript, HTML, and CSS, as well as run a smoke test in PhantomJS, run grunt:
119+
120+
```bash
121+
$ grunt
122+
```
123+
124+
To run the tests for a specific plugin in your browser, open the approriate file from the /tests/unit/ directory, for example: http://localhost/tests/unit/accordion/accordion.html. The domain will be dependent on your local server configuation; if there is a port, be sure to include it.
125+
126+
Success! You just tested jQuery UI!
127+
128+
129+
### Fix a bug from a ticket filed at bugs.jqueryui.com:
130+
131+
**NEVER write your patches to the master branch** - it gets messy (I say this from experience!)
132+
133+
**ALWAYS USE A "TOPIC" BRANCH!** Like so (#### = the ticket #)...
134+
135+
Make sure you start with your up-to-date master:
136+
137+
```bash
138+
$ git checkout master
139+
```
140+
141+
Create and checkout a new branch that includes the ticket #
142+
143+
```bash
144+
$ git checkout -b bug_####
145+
146+
# ( Explanation: this useful command will:
147+
# "checkout" a "-b" (branch) by the name of "bug_####"
148+
# or create it if it doesn't exist )
149+
```
150+
151+
Now you're on branch: bug_####
152+
153+
Determine the file you'll be working in...
154+
155+
Open up the corresponding /tests/unit/?????.js and add the initial failing unit tests. This may seem awkward at first, but in the long run it will make sense. To truly and efficiently patch a bug, you need to be working against that bug.
156+
157+
Next, open the source files and make your changes
158+
159+
Run http://localhost/tests/unit/???? --> **ALL TESTS MUST PASS**
160+
161+
Once you're satisfied with your patch...
162+
163+
Stage the files to be tracked:
164+
165+
```bash
166+
$ git add filename
167+
# (you can use "git status" to list the files you've changed)
168+
```
169+
170+
171+
( I recommend NEVER, EVER using "git add . " )
172+
173+
Once you've staged all of your changed files, go ahead and commit them
174+
175+
```bash
176+
$ git commit -m "Component: Brief description of fix. Fixes #0000 - Ticket description."
177+
```
178+
179+
See the [commit message style guide](http://wiki.jqueryui.com/w/page/25941597/Commit%20Message%20Style%20Guide) for more details on how to format your commit message.
180+
181+
For a multiple line commit message, leave off the `-m "description"`.
182+
183+
You will then be led into vi (or the text editor that you have set up) to complete your commit message.
184+
185+
Then, push your branch with the bug fix commits to your github fork
186+
187+
```bash
188+
$ git push origin -u bug_####
189+
```
190+
191+
Before you tackle your next bug patch, return to the master:
192+
193+
```bash
194+
$ git checkout master
195+
```
196+
197+
198+
199+
### jQuery UI supports the following browsers:
200+
201+
* Chrome Current-1
202+
* Safari Current-1
203+
* Firefox Current-1
204+
* Opera Current-1
205+
* IE 7+

build/release/release.js

Lines changed: 66 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
#!/usr/bin/env node
22
/*global cat:true cd:true echo:true exec:true exit:true*/
33

4+
// Usage:
5+
// stable release: node release.js
6+
// pre-release: node release.js --pre-release {version}
7+
48
"use strict";
59

6-
var baseDir, repoDir, prevVersion, newVersion, nextVersion, tagTime,
10+
var baseDir, repoDir, prevVersion, newVersion, nextVersion, tagTime, preRelease,
711
fs = require( "fs" ),
812
path = require( "path" ),
913
// support: node <0.8
@@ -67,8 +71,12 @@ function cloneRepo() {
6771
if ( exec( "npm install" ).code !== 0 ) {
6872
abort( "Error installing dependencies." );
6973
}
70-
if ( exec( "npm install download.jqueryui.com" ).code !== 0 ) {
71-
abort( "Error installing dependencies." );
74+
// We need download.jqueryui.com in order to generate themes.
75+
// We only generate themes for stable releases.
76+
if ( !preRelease ) {
77+
if ( exec( "npm install download.jqueryui.com" ).code !== 0 ) {
78+
abort( "Error installing dependencies." );
79+
}
7280
}
7381
echo();
7482
}
@@ -104,32 +112,37 @@ function getVersions() {
104112
abort( "The version must be a pre version." );
105113
}
106114

107-
newVersion = currentVersion.substr( 0, currentVersion.length - 3 );
108-
parts = newVersion.split( "." );
109-
major = parseInt( parts[ 0 ], 10 );
110-
minor = parseInt( parts[ 1 ], 10 );
111-
patch = parseInt( parts[ 2 ], 10 );
112-
113-
// TODO: handle 2.0.0
114-
if ( minor === 0 ) {
115-
abort( "This script is not smart enough to handle the 2.0.0 release." );
116-
}
115+
if ( preRelease ) {
116+
newVersion = preRelease;
117+
// Note: prevVersion is not currently used for pre-releases. The TODO
118+
// below about 1.10.0 applies here as well.
119+
prevVersion = nextVersion = currentVersion;
120+
} else {
121+
newVersion = currentVersion.substr( 0, currentVersion.length - 3 );
122+
parts = newVersion.split( "." );
123+
major = parseInt( parts[ 0 ], 10 );
124+
minor = parseInt( parts[ 1 ], 10 );
125+
patch = parseInt( parts[ 2 ], 10 );
126+
127+
// TODO: handle 1.10.0
128+
// Also see comment above about pre-releases
129+
if ( minor === 0 ) {
130+
abort( "This script is not smart enough to handle the 1.10.0 release." );
131+
}
117132

118-
prevVersion = patch === 0 ?
119-
[ major, minor - 1, 0 ].join( "." ) :
120-
[ major, minor, patch - 1 ].join( "." );
121-
// TODO: Remove version hack after 1.9.0 release
122-
if ( prevVersion === "1.8.0" ) {
123-
prevVersion = "1.8";
133+
prevVersion = patch === 0 ?
134+
[ major, minor - 1, 0 ].join( "." ) :
135+
[ major, minor, patch - 1 ].join( "." );
136+
nextVersion = [ major, minor, patch + 1 ].join( "." ) + "pre";
124137
}
125-
nextVersion = [ major, minor, patch + 1 ].join( "." ) + "pre";
126138

127139
echo( "We are going from " + prevVersion.cyan + " to " + newVersion.cyan + "." );
128140
echo( "After the release, the version will be " + nextVersion.cyan + "." );
129141
}
130142

131143
function buildRelease() {
132-
var pkg;
144+
var pkg,
145+
releaseTask = preRelease ? "release" : "release_cdn";
133146

134147
echo( "Creating " + "release".cyan + " branch..." );
135148
git( "checkout -b release", "Error creating release branch." );
@@ -151,7 +164,7 @@ function buildRelease() {
151164
echo();
152165

153166
echo( "Building release..." );
154-
if ( exec( "grunt release_cdn" ).code !== 0 ) {
167+
if ( exec( "grunt " + releaseTask ).code !== 0 ) {
155168
abort( "Error building release." );
156169
}
157170
echo();
@@ -173,6 +186,11 @@ function pushRelease() {
173186
}
174187

175188
function updateBranchVersion() {
189+
// Pre-releases don't change the master version
190+
if ( preRelease ) {
191+
return;
192+
}
193+
176194
var pkg;
177195

178196
echo( "Checking out " + branch.cyan + " branch..." );
@@ -189,11 +207,20 @@ function updateBranchVersion() {
189207
}
190208

191209
function pushBranch() {
210+
// Pre-releases don't change the master version
211+
if ( preRelease ) {
212+
return;
213+
}
214+
192215
echo( "Pushing " + branch.cyan + " to GitHub..." );
193216
git( "push", "Error pushing to GitHub." );
194217
}
195218

196219
function generateChangelog() {
220+
if ( preRelease ) {
221+
return;
222+
}
223+
197224
var commits,
198225
changelogPath = baseDir + "/changelog",
199226
changelog = cat( "build/release/changelog-shell" ) + "\n",
@@ -232,6 +259,10 @@ function generateChangelog() {
232259
}
233260

234261
function gatherContributors() {
262+
if ( preRelease ) {
263+
return;
264+
}
265+
235266
var contributors,
236267
contributorsPath = baseDir + "/contributors";
237268

@@ -262,7 +293,9 @@ function gatherContributors() {
262293

263294
function updateTrac() {
264295
echo( newVersion.cyan + " was tagged at " + tagTime.cyan + "." );
265-
echo( "Close the " + newVersion.cyan + " Milestone." );
296+
if ( !preRelease ) {
297+
echo( "Close the " + newVersion.cyan + " Milestone." );
298+
}
266299
echo( "Create the " + newVersion.cyan + " Version." );
267300
echo( "When Trac asks for date and time, match the above. Should only change minutes and seconds." );
268301
echo( "Create a Milestone for the next minor release." );
@@ -329,6 +362,16 @@ function writePackage( pkg ) {
329362
}
330363

331364
function bootstrap( fn ) {
365+
console.log( "Determining release type..." );
366+
preRelease = process.argv.indexOf( "--pre-release" );
367+
if ( preRelease !== -1 ) {
368+
preRelease = process.argv[ preRelease + 1 ];
369+
console.log( "pre-release" );
370+
} else {
371+
preRelease = null;
372+
console.log( "stable release" );
373+
}
374+
332375
console.log( "Determining directories..." );
333376
baseDir = process.cwd() + "/__release";
334377
repoDir = baseDir + "/repo";

0 commit comments

Comments
 (0)