mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
got basic client side templates
This commit is contained in:
parent
d39b8a0a05
commit
c93c8b3f7d
8 changed files with 118 additions and 0 deletions
|
@ -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')
|
||||||
|
|
|
@ -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",
|
||||||
|
|
45
services/web/app/views/project/editor/publish-template.jade
Normal file
45
services/web/app/views/project/editor/publish-template.jade
Normal 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...
|
|
@ -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"
|
||||||
|
|
|
@ -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()
|
4
services/web/public/coffee/ide/templates/index.coffee
Normal file
4
services/web/public/coffee/ide/templates/index.coffee
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
define [
|
||||||
|
"ide/templates/controllers/TemplatesController"
|
||||||
|
], () ->
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
.publishedDetails {
|
||||||
|
color: @gray;
|
||||||
|
}
|
Loading…
Reference in a new issue