summaryrefslogtreecommitdiff
path: root/themes/okadmin/public/js/app.js
blob: 1ab9956fdfea2ffb13256903be081ee85d50ed66 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
var OKAdmin = function(){
  
  // initialize our (single) ajax image uploader with an element and a template
  OKUpload.bind( document.getElementById("file") )
  OKUpload.add = function(data){
    var url = data[0].extra.Location
    add_image(url)
  }

  // also handle straight image urls
  $("#add-image-url").keydown(pressEnter(function(e){
    var url = $(this).val()
    $(this).val("")
    add_image(url)
  }))

  // clone and populate template
  function add_image(url){
    var imageTemplate = $("#captioned-image-template").html()
    var $el = $(imageTemplate)
    $el.find(".uri").val(url)
    $el.find("img").attr("src", url)
    $(".captioned-image-list ol").append($el)
  }

  // make the region sortable with drag-and-drop
  $(".captioned-image-list ol").sortable()
  $(".captioned-image-list ol").disableSelection()

  // delete image
  $(document).on("click", ".remove-image", function(){
    if (confirm("Delete this image?")) {
      $(this).parent().remove()
    }
  })
  
  // populate a video field with info from our url parser
  $(".video .url").on("keydown blur", pressEnter(function(){
    var $el = $(this)
    var url = $el.val()
    console.log(url)
    Parser.parse( url, function(media){
      console.log(url,media)
      $el.parent().addClass("loaded")
      $el.parent().find(".video-type").val( media.type )
      $el.parent().find(".video-token").val( media.token )
      $el.parent().find(".video-title").val( media.title )
      $el.parent().find(".video-thumb").val( media.thumbnail )
    })
  }))
  
  // fix post indexing in list-driven inputs
  $(".main.resource form").submit(function(){
    $(".image-element").each(function(index){
      $(this).find("input,textarea").each(function(){
        var field = $(this).attr("name").replace(/\[[0-9]*\]/, "[" + index + "]")
        $(this).attr("name", field)
      })
    })
  })
  
  $("#delete_form").submit(function(e){
  	if (confirm("Are you sure you want to delete this record?")) {
  		return
  	}
  	else {
  		e.preventDefault()
  	}
  })

  $(".resource-category").on("click", ".edit-btn", function(e) {
    e.preventDefault();
    var $parent = $(e.delegateTarget);
    var $editBtn = $parent.find(".edit-btn");
    var $cancelBtn = $parent.find(".cancel-btn");
    var $saveBtn = $parent.find(".save-btn");
    var $ol = $parent.find("ol");
    var toggles = [$parent, $cancelBtn, $saveBtn, $editBtn];

    $ol.sortable();
    $ol.disableSelection();
    toggle();

    $cancelBtn.one("click", function(e) {
      $ol.sortable("cancel");
      $ol.enableSelection();
      toggle();
    });

    $saveBtn.one("click", function(e) {
      $ol.sortable();
      toggle();
    });

    function toggle() {
      toggles.forEach(function($el) {
        $el.toggleClass('active');
      })
    }
  });

  $(".resource-category").on("submit", "form", function(e) {
    var $parent = $(e.delegateTarget);
    $parent.find(".resource-input").each(function(index) {
      var $input = $(this);
      var parsed = JSON.parse($input.val());
      parsed.__index = index;
      $input.val(JSON.stringify(parsed));
    })
  });
  
  function pressEnter(fn){
    return function(e){
      if (e.keyCode && e.keyCode !== 13) return
      e.preventDefault()
      console.log("hi")
      fn.apply(this)
    }
  }
}

$(function(){
  window.app = new OKAdmin ()
})