got basic client side templates

This commit is contained in:
Henry Oswald 2014-07-15 17:56:09 +01:00
parent d39b8a0a05
commit c93c8b3f7d
8 changed files with 118 additions and 0 deletions

View file

@ -59,6 +59,7 @@ block content
include ./editor/editor include ./editor/editor
include ./editor/binary-file include ./editor/binary-file
include ./editor/track-changes include ./editor/track-changes
include ./editor/publish-template
.ui-layout-east .ui-layout-east
//- include ./editor/chat //- include ./editor/chat
@ -101,6 +102,7 @@ block content
} }
} }
}; };
window.project_description = "#{project.description}"
script(type='text/javascript'). script(type='text/javascript').
ga('send', 'event', 'editor-interaction', 'editor-opened') ga('send', 'event', 'editor-interaction', 'editor-opened')

View file

@ -110,6 +110,13 @@ aside#left-menu.full-size(
) )
option(value="pdfjs") Built-In option(value="pdfjs") Built-In
option(value="native") Native option(value="native") Native
h4 Publish
ul.list-unstyled.nav(ng-controller="TemplatesController")
li
a(ng-click="openPublishTemplateModal()")
i.fa.fa-list-alt.fa-fw
|   Publish as Template
#left-menu-mask( #left-menu-mask(
ng-show="ui.leftMenuShown", ng-show="ui.leftMenuShown",

View file

@ -0,0 +1,45 @@
script(type="text/ng-template", id="publishProjectAsTemplateModalTemplate")
.modal-header
button.close(
type="button"
data-dismiss="modal"
ng-click="cancel()"
) ×
h3 Publish as Template
.modal-body.modal-body-share
form()
label(for='Description') Template Description
.form-group
textarea.form-control(
rows=5,
name='Description',
ng-model="template.description",
ng-blur="updateProjectDescription()",
value=""
)
div(ng-show="publishedDetails.exists").text-center.publishedDetails
| Your project was last published at
strong {{publishedDetails.publishedDate}}.
a(ng-href="{{publishedDetails.canonicalUrl}}") View it in template gallery.
.modal-footer
button.btn.btn-default(
ng-click="cancel()",
ng-disabled="state.publishInflight"
) Cancel
button.btn.btn-info(
ng-click="unpublishTemplate()",
ng-disabled="state.unpublishInflight",
ng-show="publishedDetails.exists"
)
span(ng-show="!state.unpublishInflight") Unpublish
span(ng-show="state.unpublishInflight") Unpublishing...
button.btn.btn-primary(
ng-click="publish()",
ng-disabled="state.publishInflight"
)
span(ng-show="!state.publishInflight && !publishedDetails.exists") Publish
span(ng-show="!state.publishInflight && publishedDetails.exists") Republish
span(ng-show="state.publishInflight") Publishing...

View file

@ -11,6 +11,7 @@ define [
"ide/settings/index" "ide/settings/index"
"ide/share/index" "ide/share/index"
"ide/chat/index" "ide/chat/index"
"ide/templates/index"
"ide/directives/layout" "ide/directives/layout"
"ide/services/ide" "ide/services/ide"
"directives/focus" "directives/focus"

View file

@ -0,0 +1,55 @@
define [
"base"
], (App) ->
App.controller "TemplatesController", ($scope, $modal, ide) ->
$scope.openPublishTemplateModal = () ->
console.log "open"
$modal.open {
templateUrl: "publishProjectAsTemplateModalTemplate"
controller: "PublishProjectAsTemplateModalController"
resolve:
diff: () -> $scope.trackChanges.diff
}
App.controller "PublishProjectAsTemplateModalController", ($scope, $modalInstance, diff, ide) ->
user_id = window.user.id #TODO this is not correct, it needs to be the owners id
$scope.template =
description: window.project_description
$scope.publishedDetails =
exists:false
$scope.state =
publishInflight: false
unpublishInflight: false
refreshPublishedStatus = ->
ide.socket.emit "getPublishedDetails", user_id, (err, data)->
console.log "got published details"
$scope.publishedDetails = data
$scope.publishedDetails.publishedDate = moment(data.publishedDate).format("Do MMM YYYY, h:mm a")
refreshPublishedStatus()
$scope.updateProjectDescription = ->
description = $scope.template.description
if description?
ide.socket.emit 'updateProjectDescription', description, () =>
console.log "updated"
$scope.publish = ->
$scope.state.publishInflight = true
ide.socket.emit 'publishProjectAsTemplate', user_id, (error, docLines, version) =>
console.log "published"
refreshPublishedStatus()
$scope.state.publishInflight = false
$scope.unpublishTemplate = ->
$scope.state.unpublishInflight = true
ide.socket.emit 'unPublishProjectAsTemplate', user_id, (error, docLines, version) =>
console.log "unpublished"
refreshPublishedStatus()
$scope.state.unpublishInflight = false
$scope.cancel = () ->
$modalInstance.dismiss()

View file

@ -0,0 +1,4 @@
define [
"ide/templates/controllers/TemplatesController"
], () ->

View file

@ -7,6 +7,7 @@
@import "./editor/chat.less"; @import "./editor/chat.less";
@import "./editor/binary-file.less"; @import "./editor/binary-file.less";
@import "./editor/search.less"; @import "./editor/search.less";
@import "./editor/publish-template.less";
.full-size { .full-size {
position: absolute; position: absolute;

View file

@ -0,0 +1,3 @@
.publishedDetails {
color: @gray;
}