WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
See the License for the specific language governing permissions and\r
limitations under the License.\r
-\r
- Documentation generator for the nit language.\r
- Generate API documentation in HTML format from nit source code.\r
*/\r
\r
+/*\r
+ * LoginBox allows user to login and logoff from GitHub API\r
+ */\r
define([\r
"jquery",\r
- "plugins/github/ui",\r
- "plugins/github/modalbox",\r
-], function($, UI, ModalBox) {\r
- var LoginBox = {\r
- init: function(containerSelector) {\r
- this.loginBoxLi = $(document.createElement("li"))\r
- .attr("id", "nitdoc-github-li")\r
- .append(\r
- $(document.createElement("a"))\r
- .append(\r
- $(document.createElement("img"))\r
- .attr({\r
- src: "resources/icons/github-icon.png",\r
- alt: "GitHub"\r
- })\r
- .addClass("nitdoc-github-li-img")\r
- )\r
- .click(function() { LoginBox.toggle() })\r
- )\r
+ "jQueryUI"\r
+], function($) {\r
+ $.widget("nitdoc.loginbox", {\r
+ options: {\r
+ icon: "resources/icons/github-icon.png",\r
+ iconActive: "resources/icons/github-icon-green.png",\r
+ iconAlt: "GitHub",\r
+ signedinTxt: "Signed in Github",\r
+ signedoutTxt: "Sign in Github",\r
+ welcomeTxt: "Hello",\r
+ upstreamTxt: "Upstream branch",\r
+ baseTxt: "Base",\r
+ signoffTxt: "Sign Off",\r
+ usernameTxt: "Username",\r
+ passwordTxt: "Password",\r
+ repoTxt: "Repository",\r
+ branchTxt: "Branch",\r
+ signinTxt: "Sign In"\r
+ },\r
+\r
+ _create: function() {\r
+ this.element.append(\r
+ $("<span/>")\r
+ .addClass("glyphicon glyphicon-off")\r
+ //.click($.proxy(this.toggle, this))\r
+ .attr({\r
+ "data-container": "body",\r
+ "data-toggle": "popover",\r
+ "data-placement": "bottom",\r
+ "data-content": "bottom",\r
+ "data-html": "true",\r
+ })\r
+ );\r
\r
- this.loginBoxContent = $(document.createElement("div"));\r
- this.loginBox = $(document.createElement("div"))\r
+ this.content = $("<div/>");\r
+ this.loginBox = $("<div/>")\r
.attr("id", "nitdoc-github-loginbox")\r
.css("display", "none")\r
.append(\r
.addClass("nitdoc-github-loginbox-arrow")\r
.append(" ")\r
)\r
- .append(\r
- $(document.createElement("h3"))\r
- .append("Github Sign In")\r
- )\r
- .append(this.loginBoxContent);\r
-\r
- this.loginBoxLi.append(this.loginBox);\r
- $(containerSelector).append(this.loginBoxLi);\r
+ .append(this.content);\r
+ this.element.append(this.loginBox);\r
},\r
\r
- // Panel of login box to display when the user is logged in\r
+ /* public actions */\r
+\r
displayLogout: function(origin, user) {\r
- var panel = $(document.createElement("div"))\r
- .append(\r
- $(document.createElement("h4"))\r
- .append("Hello ")\r
- .append(\r
- $(document.createElement("a"))\r
- .attr("href", "https://github.com/" + user.login)\r
- .append(user.login)\r
- ).append("!")\r
- )\r
- .append(\r
- $(document.createElement("label"))\r
- .attr("for", "github-origin")\r
- .append("Origin")\r
- )\r
- .append(\r
- $(document.createElement("input"))\r
- .attr({\r
- id: "github-origin",\r
- type: "text",\r
- disabled: "disabled",\r
- value: origin.user + ":" + origin.repo + ":" + origin.branch\r
- })\r
+ this.content.empty();\r
+ this.content.append(\r
+ $("<h3/>").text(this.options.signedinTxt)\r
)\r
- .append(\r
- $(document.createElement("label"))\r
- .attr("for", "github-base")\r
- .append("Base")\r
- )\r
- .append(\r
- $(document.createElement("input"))\r
- .attr({\r
- id: "github-base",\r
- type: "text",\r
- disabled: "disabled",\r
- value: user.login + ":" + user.repo + ":" + user.branch\r
- })\r
- )\r
- .append(\r
- $(document.createElement("button"))\r
- .addClass("nitdoc-github-button")\r
- .addClass("nitdoc-github-cancel")\r
+ this.content.append(\r
+ $("<div/>")\r
.append(\r
- $(document.createElement("img"))\r
- .attr("src", "resources/icons/github-icon.png")\r
- ).append("Sign Off")\r
- .click(function() { // log out user\r
- UI.disactivate();\r
- LoginBox.toggle();\r
- })\r
+ $("<h4/>")\r
+ .append(this.options.welcomeTxt + " ")\r
+ .append(\r
+ $("<a/>")\r
+ .attr("href", "https://github.com/" + user.login)\r
+ .append(user.login)\r
+ ).append(",")\r
+ )\r
+ .append(\r
+ $("<label/>")\r
+ .text("Upstream Branch")\r
+ )\r
+ .append(\r
+ $("<a/>")\r
+ .text(origin.user + ":" + origin.repo + ":" + origin.branch)\r
+ .addClass("nitdoc-github-loginbox-githublink")\r
+ .attr({\r
+ title: "Open branch in GitHub",\r
+ href: "https://github.com/" + origin.user + "/" + origin.repo + "/tree/" + origin.branch\r
+ })\r
+ )\r
+ .append(\r
+ $("<label/>")\r
+ .attr("for", "github-base")\r
+ .append("Your branch")\r
+ )\r
+ .append(\r
+ $("<a/>")\r
+ .text(user.login + ":" + user.repo + ":" + user.branch)\r
+ .addClass("nitdoc-github-loginbox-githublink")\r
+ .attr({\r
+ title: "Open branch in GitHub",\r
+ href: "https://github.com/" + user.login + "/" + user.repo + "/tree/" + user.branch\r
+ })\r
+ )\r
+ .append(\r
+ $("<button/>")\r
+ .addClass("nitdoc-github-button")\r
+ .addClass("nitdoc-github-cancel")\r
+ .append(\r
+ $("<img/>")\r
+ .attr("src", this.options.icon)\r
+ ).text(this.options.signoffTxt)\r
+ .click($.proxy(this._doClickLogoff, this))\r
+ )\r
);\r
- $(".nitdoc-github-li-img").attr("src", "resources/icons/github-icon-green.png");\r
- this.loginBoxContent.empty()\r
- this.loginBoxContent.append(panel);\r
+ $(".nitdoc-github-li-img").attr("src", this.options.iconActive);\r
},\r
\r
- // Panel of login box to display when the user is logged out\r
displayLogin: function() {\r
- var panel = $(document.createElement("form"))\r
- .append(\r
- $(document.createElement("label"))\r
- .attr("for", "nitdoc-github-login-field")\r
- .append("Username")\r
- )\r
- .append(\r
- $(document.createElement("input"))\r
- .attr({\r
- id: "nitdoc-github-login-field",\r
- type: "text"\r
- })\r
- )\r
- .append(\r
- $(document.createElement("label"))\r
- .attr("for", "nitdoc-github-password-field")\r
- .append("Password")\r
- )\r
- .append(\r
- $(document.createElement("input"))\r
- .attr({\r
- id: "nitdoc-github-password-field",\r
- type: "password"\r
- })\r
- )\r
- .append(\r
- $(document.createElement("label"))\r
- .attr("for", "nitdoc-github-repo-field")\r
- .append("Repository")\r
- )\r
- .append(\r
- $(document.createElement("input"))\r
- .attr({\r
- id: "nitdoc-github-repo-field",\r
- type: "text"\r
- })\r
- )\r
- .append(\r
- $(document.createElement("label"))\r
- .attr("for", "nitdoc-github-branch-field")\r
- .append("Branch")\r
- )\r
- .append(\r
- $(document.createElement("input"))\r
- .attr({\r
- id: "nitdoc-github-branch-field",\r
- type: "text"\r
- })\r
+ this.content.empty();\r
+ this.content.append(\r
+ $("<h3/>").text(this.options.signedoutTxt)\r
)\r
- .append(\r
- $(document.createElement("button"))\r
- .addClass("nitdoc-github-button")\r
+ this.content.append(\r
+ $("<form/>")\r
+ .keyup($.proxy(this._doFormChange, this))\r
.append(\r
- $(document.createElement("img"))\r
- .attr("src", "resources/icons/github-icon.png")\r
- ).append("Sign In")\r
- .click(function() {\r
- var login = $('#nitdoc-github-login-field').val();\r
- var password = $('#nitdoc-github-password-field').val();\r
- var repo = $('#nitdoc-github-repo-field').val();\r
- var branch = $('#nitdoc-github-branch-field').val();\r
- if(!login || !password || !repo || !branch) {\r
- ModalBox.open("Sign in error", "Please enter your GitHub username, password, repository and branch.", true);\r
- } else {\r
- var user = UI.tryLogin(login, password, repo, branch);\r
- if(user == "error:login") {\r
- ModalBox.open("Sign in error", "The username, password, repo or branch you entered is incorrect.", true);\r
- } else if(user == "error:sha") {\r
- ModalBox.open("Base commit not found", "The provided GitHub repository must contains the base commit '" + UI.origin.sha + "'", true);\r
- } else if(user == "error:profile") {\r
- ModalBox.open("Incomplete GitHub profile", "Please set your public name and email in your <a href='https://github.com/settings/profile'>GitHub profile</a>.<br/><br/>Your public profile informations are used to sign-off your commits.", true);\r
- } else {\r
- UI.activate(user);\r
- LoginBox.displayLogout(UI.origin, user);\r
- }\r
- }\r
- return false;\r
- })\r
- )\r
- $(".nitdoc-github-li-img").attr("src", "resources/icons/github-icon.png");\r
- this.loginBoxContent.empty()\r
- this.loginBoxContent.append(panel);\r
+ $("<div/>")\r
+ .addClass("form-group")\r
+ .append(\r
+ $("<label/>")\r
+ .attr("for", "nitdoc-github-login-field")\r
+ .append(this.options.usernameTxt)\r
+ )\r
+ .addClass("form-group")\r
+ .append(\r
+ $("<input/>")\r
+ .attr({\r
+ id: "nitdoc-github-login-field",\r
+ type: "text",\r
+ "class": "form-control"\r
+ })\r
+ )\r
+ )\r
+ .append(\r
+ $("<div/>")\r
+ .addClass("form-group")\r
+ .append(\r
+ $("<label/>")\r
+ .attr("for", "nitdoc-github-password-field")\r
+ .append(this.options.passwordTxt)\r
+ )\r
+ .append(\r
+ $("<input/>")\r
+ .attr({\r
+ id: "nitdoc-github-password-field",\r
+ type: "password",\r
+ "class": "form-control"\r
+ })\r
+ )\r
+ )\r
+ .append(\r
+ $("<div/>")\r
+ .addClass("form-group")\r
+ .append(\r
+ $("<label/>")\r
+ .attr("for", "nitdoc-github-repo-field")\r
+ .append(this.options.repoTxt)\r
+ )\r
+ .append(\r
+ $("<input/>")\r
+ .attr({\r
+ id: "nitdoc-github-repo-field",\r
+ type: "text",\r
+ "class": "form-control"\r
+ })\r
+ )\r
+ )\r
+ .append(\r
+ $("<div/>")\r
+ .addClass("form-group")\r
+ .append(\r
+ $("<label/>")\r
+ .attr("for", "nitdoc-github-branch-field")\r
+ .append(this.options.branchTxt)\r
+ )\r
+ .append(\r
+ $("<input/>")\r
+ .attr({\r
+ id: "nitdoc-github-branch-field",\r
+ type: "text",\r
+ "class": "form-control"\r
+ })\r
+ )\r
+ )\r
+ .append(\r
+ $("<button/>")\r
+ .addClass("nitdoc-github-button btn btn-primary btn-lg pull-right")\r
+ .attr("disabled", "disabled")\r
+ .append(\r
+ $("<img/>")\r
+ .attr("src", this.options.icon)\r
+ ).text(this.options.signinTxt)\r
+ .click($.proxy(this._doClickLogin, this))\r
+ )\r
+ );\r
+ $(".nitdoc-github-li-img").attr("src", this.options.icon);\r
},\r
\r
toggle: function() {\r
if(this.loginBox.is(':hidden')) {\r
this.loginBox.show();\r
- if (!$('#loginGit').is(':hidden')) { $('#loginGit').focus(); }\r
+ if ($('#nitdoc-github-login-field').is(':visible')) { $('#nitdoc-github-login-field').focus(); }\r
} else {\r
this.loginBox.hide();\r
}\r
- }\r
- };\r
+ },\r
+\r
+ /* events */\r
+\r
+ _doClickLogoff: function(event) {\r
+ this._trigger("_logoff", event);\r
+ },\r
\r
- return LoginBox;\r
+ _doClickLogin: function(event) {\r
+ this._trigger("_login", event, {\r
+ login: $('#nitdoc-github-login-field').val(),\r
+ password: $('#nitdoc-github-password-field').val(),\r
+ repo: $('#nitdoc-github-repo-field').val(),\r
+ branch: $('#nitdoc-github-branch-field').val()\r
+ });\r
+ return false;\r
+ },\r
+\r
+ _doFormChange: function(event) {\r
+ login = $('#nitdoc-github-login-field').val();\r
+ password = $('#nitdoc-github-password-field').val();\r
+ repo = $('#nitdoc-github-repo-field').val();\r
+ branch = $('#nitdoc-github-branch-field').val();\r
+ if(login && password && repo && branch) {\r
+ this.loginBox.find("form .nitdoc-github-button").removeAttr("disabled");\r
+ } else {\r
+ this.loginBox.find("form .nitdoc-github-button").attr("disabled", "disabled");\r
+ }\r
+ }\r
+ });\r
});\r