Skip to content

Commit

Permalink
Added remove page button.
Browse files Browse the repository at this point in the history
  • Loading branch information
Patrick Canfield committed Jun 30, 2012
1 parent fed171f commit 37fd338
Show file tree
Hide file tree
Showing 6 changed files with 222 additions and 38 deletions.
Binary file modified hiero/static/hiero/js/.page.coffee.swo
Binary file not shown.
92 changes: 92 additions & 0 deletions hiero/static/hiero/js/bootstrap-dropdown.js
@@ -0,0 +1,92 @@
/* ============================================================
* bootstrap-dropdown.js v2.0.2
* http://twitter.github.com/bootstrap/javascript.html#dropdowns
* ============================================================
* Copyright 2012 Twitter, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============================================================ */


!function( $ ){

"use strict"

/* DROPDOWN CLASS DEFINITION
* ========================= */

var toggle = '[data-toggle="dropdown"]'
, Dropdown = function ( element ) {
var $el = $(element).on('click.dropdown.data-api', this.toggle)
$('html').on('click.dropdown.data-api', function () {
$el.parent().removeClass('open')
})
}

Dropdown.prototype = {

constructor: Dropdown

, toggle: function ( e ) {
var $this = $(this)
, selector = $this.attr('data-target')
, $parent
, isActive

if (!selector) {
selector = $this.attr('href')
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
}

$parent = $(selector)
$parent.length || ($parent = $this.parent())

isActive = $parent.hasClass('open')

clearMenus()
!isActive && $parent.toggleClass('open')

return false
}

}

function clearMenus() {
$(toggle).parent().removeClass('open')
}


/* DROPDOWN PLUGIN DEFINITION
* ========================== */

$.fn.dropdown = function ( option ) {
return this.each(function () {
var $this = $(this)
, data = $this.data('dropdown')
if (!data) $this.data('dropdown', (data = new Dropdown(this)))
if (typeof option == 'string') data[option].call($this)
})
}

$.fn.dropdown.Constructor = Dropdown


/* APPLY TO STANDARD DROPDOWN ELEMENTS
* =================================== */

$(function () {
$('html').on('click.dropdown.data-api', clearMenus)
$('body').on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle)
})

}( window.jQuery );
43 changes: 37 additions & 6 deletions hiero/static/hiero/js/page.coffee
Expand Up @@ -2,11 +2,13 @@
window.page_prev_content = null
$(document).ready () ->
console.log("here we go...")
jQuery.get("/pages", (pages) ->
for page in pages
$(".pages-nav-list").append("<li><a href='#{page.url}'>#{page.link_title}</a></li>")
$(".dropdown-toggle").dropdown()
)
buildPagesMenu()
$(".dropdown-toggle").dropdown()
# jQuery.get("/pages", (pages) ->
# for page in pages
# $(".pages-nav-list").append("<li><a href='#{page.url}'>#{page.link_title}</a></li>")
# $(".dropdown-toggle").dropdown()
# )

window.editor = new EpicEditor(
basePath: "/static/EpicEditor/epiceditor"
Expand All @@ -27,9 +29,13 @@ $(document).ready () ->
if `original_link_title != page.link_title` # todo: no backticks
modal = $("#confirm-change-link-title-modal")
modal.modal('show')
window.auto_save_okay = false
modal.find(".btn-confirm").click (e) ->
window.auto_save_okay = true
modal.modal('hide')
modal.find(".btn-cancel").click (e) ->
window.auto_save_okay = true
modal.modal('hide')
$("input.page-link-title").val(original_link_title)
$("#fullscreen-button").click (e) ->
editor.setFullscreen(true)
Expand Down Expand Up @@ -60,10 +66,28 @@ $(document).ready () ->
window.location.href = e.redirect_url
)

$("#remove-button").click (e) ->
modal = $("#confirm-delete-modal")
modal.modal('show')

modal.find(".btn-confirm").click (e) ->
window.auto_save_okay = false
modal.modal('hide')
original_link_title = $(".page-link-title-original").val()
jQuery.post("/pages/#{original_link_title}/remove", null, (e) ->
window.location.href = e.redirect_url
)

modal.find(".btn-cancel").click (e) ->
window.auto_save_okay = true
modal.modal('hide')
$("input.page-link-title").val(original_link_title)


editor.on("save", () ->
original_link_title = $(".page-link-title-original").val()
if original_link_title == page.link_title
# if original_link_title == page.link_title
if auto_save_okay
savePage(getPage())
)

Expand Down Expand Up @@ -93,7 +117,14 @@ window.renderPage = (page) ->
$(".if-custom-page").hide()


window.buildPagesMenu = () ->
$(".pages-nav-list").html("<li><a id='add-button'>New Page</a></li><li class='divider'></li>")
jQuery.get("/pages", (pages) ->
for page in pages
$(".pages-nav-list").append("<li><a href='#{page.url}'>#{page.link_title}</a></li>")
)

window.auto_save_okay = true
window.savePage = (page, success_callback) ->
$.ajax(
type: 'POST'
Expand Down
50 changes: 41 additions & 9 deletions hiero/static/hiero/js/page.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

50 changes: 30 additions & 20 deletions hiero/templates/page/view_add_edit.haml
Expand Up @@ -21,33 +21,34 @@
}

.subnav
%ul.nav.nav-pills.pull-right
%li
%span.page-last-saved-time.if-logged-in
%ul.nav.nav-pills
%li.active.pull-right
%a#save-button.if-edit-mode
Save
%li.active.pull-right
%a#edit-button.if-logged-in.if-view-mode
Edit
%li.pull-right
%a#remove-button
Delete

%li.pull-right
%a#preview-button.if-edit-mode
Preview
%li.pull-right
%a#fullscreen-button.if-custom-page.if-edit-mode
Fullscreen

%li.dropdown
%li.dropdown.pull-right
%a.dropdown-toggle(dataToggle="dropdown")
Pages
%b.caret
%ul.pages-nav-list.dropdown-menu
%li
%a#add-button(href="#") New Page
%li.divider

%li
%a#preview-button.if-edit-mode
Preview
%li
%a#fullscreen-button.if-custom-page.if-edit-mode
Fullscreen
-# %li
-# %a#cancel-button(href="/pages") Cancel
%li.active
%a#save-button.if-edit-mode
Save
%li.active
%a#edit-button.if-logged-in.if-view-mode
Edit
%li.pull-right
%span.page-last-saved-time.if-logged-in

.if-view-mode.if-not-logged-in
%h1.page-title.if-not-custom-page
Expand Down Expand Up @@ -94,10 +95,19 @@
.modal-body
If you change the link title, any URLs for this page already out there will need to be updated. Do you want to continue saving?
.modal-footer
%a.btn.btn-cancel(href="#", dataDismiss="modal") Nevermind!
%a.btn.btn-cancel(href="#") Nevermind!
%a.btn.btn-primary.btn-confirm(href="#") No big deal.


#confirm-delete-modal.modal.hide
.modal-header
%button.close(dataDismiss="model") &times;
%h3 Confirm Deletion
.modal-body
Sure you want to delete this page?
.modal-footer
%a.btn.btn-cancel(href="#") Nevermind
%a.btn.btn-primary.btn-confirm(href="#") Do it!



Expand Down
25 changes: 22 additions & 3 deletions hiero/views/page.py
Expand Up @@ -23,6 +23,11 @@
def escapeNewlines(s):
return s.replace("\n", "\\n")

@view_config (route_name='home',
renderer='string')
def home(request):
return "Welcome home, son!"

@view_config (route_name='get_pages',
renderer='json')
def get_pages(request):
Expand All @@ -42,12 +47,19 @@ def get_pages(request):
renderer='json')
@view_config (route_name='add_page',
renderer='json')
@view_config (route_name='remove_page')
@view_config (route_name='remove_page',
renderer='json')
def get_page (request):

route = request.matched_route.name
if route == "add_page":
untitled_number = 1
def link_title():
return "untitled_"+str(untitled_number)
while DBSession.query(Page).filter_by(link_title=link_title()).count() != 0L:
untitled_number += 1
page = Page(
"untitled",
link_title(),
"",
"",
"custom",
Expand All @@ -58,16 +70,23 @@ def get_page (request):
DBSession.add(page)

return {
"redirect_url": request.route_url('get_page', link_title="untitled")
"redirect_url": request.route_url('get_page', link_title=link_title())
}



page_link_title = request.matchdict['link_title']
print "page: "+page_link_title
resultset = DBSession.query(Page).filter_by(link_title=page_link_title)
if resultset.count() == 0L:
return HTTPNotFound("There is no page called '"+page_link_title+"'. Sorry.")
page = resultset.one()
if route == "remove_page":
with transaction.manager:
DBSession.delete(page)
return {
"redirect_url": request.route_url('home')
}
if route == "edit_page":
print "editing page"
params = request.params
Expand Down

0 comments on commit 37fd338

Please sign in to comment.