From 9b5bbe730a7d958ed0f6b9a8255dc5bbcc8aee95 Mon Sep 17 00:00:00 2001 From: Nick Sergeant Date: Sun, 8 Apr 2012 00:52:10 -0400 Subject: [PATCH] Holy crap. Working on add. --- media/css/style.css | 1 + media/css/style.scss | 1 + media/js/src/modules/site.js | 6 +++ media/js/src/modules/snipt.js | 52 ++++++++++++++++--- snipts/api.py | 2 +- snipts/models.py | 8 +-- .../snipts/snipt-edit-js-template.html | 8 ++- 7 files changed, 64 insertions(+), 14 deletions(-) diff --git a/media/css/style.css b/media/css/style.css index c1bd63a..b5a4ced 100644 --- a/media/css/style.css +++ b/media/css/style.css @@ -416,6 +416,7 @@ article.snipt div.container div.bottom-x { } article.snipt div.container header { border-bottom: 1px solid #F1F1EE; + min-height: 58px; -webkit-box-shadow: inset 0 -1px 0 white; -moz-box-shadow: inset 0 -1px 0 white; box-shadow: inset 0 -1px 0 white; diff --git a/media/css/style.scss b/media/css/style.scss index ea437f2..306e143 100644 --- a/media/css/style.scss +++ b/media/css/style.scss @@ -492,6 +492,7 @@ article.snipt { } header { border-bottom: 1px solid #F1F1EE; + min-height: 58px; @include inset-box-shadow(0, -1px, 0, #FFF); @include vertical-gradient(#FFF, #FFFAF2); diff --git a/media/js/src/modules/site.js b/media/js/src/modules/site.js index 8c2b71e..f7b6a92 100644 --- a/media/js/src/modules/site.js +++ b/media/js/src/modules/site.js @@ -24,6 +24,12 @@ } } url = url && addSlash(url); + + if (typeof url === 'undefined') { + url = '/api/private/snipt/'; + this.unset('id', {'silent': true}); + this.unset('user', {'silent': true}); + } return url || null; }; diff --git a/media/js/src/modules/snipt.js b/media/js/src/modules/snipt.js index beff0f7..f3f8a8f 100644 --- a/media/js/src/modules/snipt.js +++ b/media/js/src/modules/snipt.js @@ -242,16 +242,24 @@ $('script#disqus').remove(); window.site.$body.append(''); + // For new snipts. + if (this.$el.attr('id') === 'new-snipt') { + this.$el.fadeIn('fast'); + this.$el.attr('id', 'snipt-' + this.model.get('id')); + } + return this; }, save: function() { - that.model.set('title', $('input#snipt_title').val()); - that.model.set('tags', $('label.tags textarea').val()); - that.model.set('tags_list', $('label.tags textarea').val()); - that.model.set('lexer', $('select[name="lexer"]').val()); - that.model.set('lexer_name', $('select[name="lexer"] option:selected').text()); - that.model.set('code', window.editor.getSession().getValue()); - that.model.set('public', $('label.public input').is(':checked')); + that.model.set({ + 'title': $('input#snipt_title').val(), + 'tags': $('label.tags textarea').val(), + 'tags_list': $('label.tags textarea').val(), + 'lexer': $('select[name="lexer"]').val(), + 'lexer_name': $('select[name="lexer"] option:selected').text(), + 'code': window.editor.getSession().getValue(), + 'public': $('label.public input').is(':checked') + }, {'silent': true}); that.model.save(); }, @@ -354,6 +362,36 @@ }); }, addNewSnipt: function() { + + var $articleNewSnipt = $('article#new-snipt'); + + if ($articleNewSnipt.length === 0) { + window.site.snipt_list.$el.prepend(''); + + var data = { + id: '', + code: '', + tags: [], + tags_list: '', + title: '', + lexer: 'text', + lexer_name: 'Text only', + user: { + username: '' + } + }; + data['public'] = false; + + var newSniptView = new Snipt.SniptView({ + el: $('article#new-snipt'), + model: new Snipt.SniptModel(data) + }); + + newSniptView.edit(); + } else { + $articleNewSnipt.trigger('edit'); + } + return false; }, escapeUI: function(destroyed) { diff --git a/snipts/api.py b/snipts/api.py index 7013e15..eee3b05 100644 --- a/snipts/api.py +++ b/snipts/api.py @@ -133,7 +133,7 @@ class PrivateSniptResource(ModelResource): class Meta: queryset = Snipt.objects.all().order_by('-created') resource_name = 'snipt' - fields = ['title', 'slug', 'lexer', 'code', 'line_count', + fields = ['id', 'title', 'slug', 'lexer', 'code', 'line_count', 'stylized', 'key', 'public', 'created', 'modified',] validation = Validation() include_absolute_url = True diff --git a/snipts/models.py b/snipts/models.py index 121202d..f04b17f 100644 --- a/snipts/models.py +++ b/snipts/models.py @@ -36,8 +36,8 @@ class Snipt(models.Model): public = models.BooleanField(default=False) # TODO: Change back auto - created = models.DateTimeField(auto_now_add=False, editable=False) - modified = models.DateTimeField(auto_now=False, editable=False) + created = models.DateTimeField(auto_now_add=True, editable=False) + modified = models.DateTimeField(auto_now=True, editable=False) def save(self, *args, **kwargs): @@ -118,8 +118,8 @@ class Favorite(models.Model): user = models.ForeignKey(User) # TODO: Change back auto - created = models.DateTimeField(auto_now_add=False, editable=False) - modified = models.DateTimeField(auto_now=False, editable=False) + created = models.DateTimeField(auto_now_add=True, editable=False) + modified = models.DateTimeField(auto_now=True, editable=False) def __unicode__(self): return u'{} favorited by {}'.format(self.snipt.title, self.user.username) diff --git a/snipts/templates/snipts/snipt-edit-js-template.html b/snipts/templates/snipts/snipt-edit-js-template.html index 9b58f72..d57dc6d 100644 --- a/snipts/templates/snipts/snipt-edit-js-template.html +++ b/snipts/templates/snipts/snipt-edit-js-template.html @@ -4,7 +4,9 @@