From 9f7c82e28316490ff479e31eb7b50db1e6ef1cd8 Mon Sep 17 00:00:00 2001 From: Jayaram Pai Date: Thu, 23 Jan 2014 23:03:03 +0530 Subject: added question edit. added question details change. added admin_user feature. --- forums/settings.py | 4 +- forums/urls.py | 6 +- forums/wsgi.py | 4 +- static/website/css/main.css | 37 +++++++++- static/website/js/custom.js | 4 +- static/website/js/thread-user.js | 91 ++++++++++++++++++++++- static/website/templates/get-question.html | 111 ++++++++++++++++++++++++----- static/website/templates/index.html | 2 +- static/website/templates/new-question.html | 2 +- static/website/templates/search.html | 2 +- website/context_processors.py | 10 +++ website/templatetags/permission_tags.py | 12 ++++ website/urls.py | 1 + website/views.py | 45 ++++++++++-- 14 files changed, 293 insertions(+), 38 deletions(-) create mode 100644 website/context_processors.py create mode 100644 website/templatetags/permission_tags.py diff --git a/forums/settings.py b/forums/settings.py index dc2bb08..2930bc0 100644 --- a/forums/settings.py +++ b/forums/settings.py @@ -1,6 +1,7 @@ #Custom settings from os.path import * from config import * +from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS PROJECT_DIR = abspath(dirname(__file__) + '/../') @@ -139,7 +140,7 @@ INSTALLED_APPS = ( 'django.contrib.messages', 'django.contrib.staticfiles', # Uncomment the next line to enable the admin: - 'django.contrib.admin', + #'django.contrib.admin', # Uncomment the next line to enable admin documentation: # 'django.contrib.admindocs', 'website', @@ -179,3 +180,4 @@ LOGGING = { AUTH_USER_MODEL = 'drupal_auth.Users' AUTHENTICATION_BACKENDS = ( 'drupal_auth.backends.DrupalAuthBackend', ) DATABASE_ROUTERS = ['drupal_auth.routers.DrupalAuthRouter'] +TEMPLATE_CONTEXT_PROCESSORS += ('website.context_processors.admin_processor', ) diff --git a/forums/urls.py b/forums/urls.py index e129d4b..9a0ec63 100644 --- a/forums/urls.py +++ b/forums/urls.py @@ -1,8 +1,8 @@ from django.conf.urls import patterns, include, url # Uncomment the next two lines to enable the admin: -from django.contrib import admin -admin.autodiscover() +#from django.contrib import admin +#admin.autodiscover() urlpatterns = patterns('', # Examples: @@ -14,7 +14,7 @@ urlpatterns = patterns('', # url(r'^admin/doc/', include('django.contrib.admindocs.urls')), # Uncomment the next line to enable the admin: - url(r'^admin/', include(admin.site.urls)), + #url(r'^admin/', include(admin.site.urls)), # User account urls url(r'^accounts/login/', 'forums.views.user_login', name='user_login'), diff --git a/forums/wsgi.py b/forums/wsgi.py index 728eed4..3a52e8b 100644 --- a/forums/wsgi.py +++ b/forums/wsgi.py @@ -24,8 +24,8 @@ sys.path.append('/Sites/venv/forums/') # os.environ["DJANGO_SETTINGS_MODULE"] = "forums.settings" os.environ["DJANGO_SETTINGS_MODULE"] = "forums.settings" -activate_this = '/Sites/venv/bin/activate_this.py' -execfile(activate_this, dict(__file__=activate_this)) +#activate_this = '/Sites/venv/bin/activate_this.py' +#execfile(activate_this, dict(__file__=activate_this)) # This application object is used by any WSGI server configured to use this # file. This includes Django's development server, if the WSGI_APPLICATION diff --git a/static/website/css/main.css b/static/website/css/main.css index 2d629ac..ab5226f 100644 --- a/static/website/css/main.css +++ b/static/website/css/main.css @@ -9,6 +9,10 @@ .navbar-default { margin-bottom: 0; } +/* override nicEditor */ +#questionInstance { + background: #ffffff !important; +} /* main styles */ body { background: #fafafa; @@ -54,7 +58,7 @@ body { } #content .editable { padding: 15px 5px 15px 5px; - background: #F0F0F0; + background: #fafafa; } #content .question .title a{ padding: 0 0 7px 0; @@ -94,6 +98,12 @@ body { background: #f5f5f5; color: #424242; } +#question-details-edit { + position: relative; + top: 2px; + margin-top: 2px; + color: #43ac6a; +} #content .question .meta{ position: absolute; right: 0px; @@ -132,11 +142,34 @@ table .title a { .modify a.save { display: none; } - .vs { padding: 0px 5px !important; font-size: x-small; } +.hideme { + display: none; +} +.saving, .saved { + position: fixed; + z-index: 10; + left: 45%; + top: 45%; + padding: 5px 10px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: 0px 0px 10px #cccccc; + -moz-box-shadow: 0px 0px 10px #cccccc; + -obox-shadow: 0px 0px 10px #cccccc; + box-shadow: 0px 0px 10px #cccccc; +} +.saving { + background: lightyellow; +} +.saved { + background: lightgreen; +} #content .reply { position: relative; border-bottom: 1px solid #f5f5f5; diff --git a/static/website/js/custom.js b/static/website/js/custom.js index da5839b..467ba9d 100644 --- a/static/website/js/custom.js +++ b/static/website/js/custom.js @@ -7,6 +7,8 @@ $(document).ready(function() { $category.change(function() { $("#similar-link").hide(); var category = $(this).val(); + /* see thread-user.js */ + $("#question-details-ok").show(); $.ajax({ url: "/ajax-tutorials/", type: "POST", @@ -59,7 +61,7 @@ $(document).ready(function() { $response = $(data); var similar_count= $response.find("#similar-count").text(); $("#similar-link").show().html(similar_count); - $(".modal-body").html(data); + $("#modal-body").html(data); } }); }); diff --git a/static/website/js/thread-user.js b/static/website/js/thread-user.js index 502f0ce..189d126 100644 --- a/static/website/js/thread-user.js +++ b/static/website/js/thread-user.js @@ -1,5 +1,4 @@ bkLib.onDomLoaded(function() { - var questionNicEditor = new nicEditor({ buttonList : ['fontSize','bold','italic','underline','strikeThrough','subscript','superscript','html','image', 'link'], iconsPath: "/static/website/js/nicEditorIcons.gif", @@ -13,12 +12,19 @@ $(document).ready(function() { * question edit section * set the jquery variables */ + $saving = $(".saving"); + $saved= $(".saved"); $question = $(".question"); $question_modify = $(".question .modify"); $question_edit = $(".question .modify .edit"); $question_save = $(".question .modify .save"); + $question_title = $(".title"); + $question_title_editable = $(".title-editable"); + $question_title_edit = $("#title-edit"); + $question_title_edit_input = $("#title-edit input"); $questionNicPanel = $("#questionNicPanel"); $questionInstance = $("#questionInstance"); + $question_details_edit = $("#question-details-edit"); /* make the question editable and show modify */ //$question.addClass("editable"); @@ -28,9 +34,20 @@ $(document).ready(function() { function modify(thisObj){ thisObj.hide(); thisObj.next().css("display", "block"); + + $question_title.hide(); + $question_title_edit_input.val($.trim($($question_title).text())); + $question_title_edit.show(); + $question_edit.hide(); + $question_save.show(); + $questionNicPanel.show(); $questionInstance.focus(); + $question_details_edit.show(); } + $question_title_editable.click(function(){ + modify($question_edit); + }); $question_edit.click(function () { modify($question_edit); }); @@ -38,30 +55,96 @@ $(document).ready(function() { modify($question_edit); }); $question_save.click(function () { + $saving.show(); $(this).hide(); + $question_title.text($question_title_edit_input.val()); + $question_title_edit.hide(); + $question_title.show(); $questionNicPanel.hide(); + $question_details_edit.hide(); $(this).prev().css("display", "block"); /* make the ajax call */ //var id_length = $question_save.attr("id").length; //var question_id = parseInt($question_save.attr("id").substr(id_length-1)); var question_id = parseInt($question_save.data("qid")); - console.log(question_id); + var question_title = $question_title.text(); var question_body = $questionInstance.html(); $.ajax({ url: "/ajax-question-update/", data:{ question_id: question_id, + question_title: question_title, question_body: question_body, }, type: "POST", dataType: "html", success: function(data){ console.log(data); + $saving.hide(); + $saved.show(); + $saved.fadeOut("slow"); } }); }); + + /* + * question details edit section + * handle everything in the popup + */ + $question_details_edit = $("#question-details-edit"); + $question_details_ok = $("#question-details-ok"); + $question_category = $('#id_category'); + $question_tutorial = $('#id_tutorial'); + $question_minute_range = $('#id_minute_range'); + $question_second_range = $('#id_second_range'); + + $question_details_ok.click(function() { + console.log($(this).data("qid")); + var category = $question_category.val(); + var tutorial = $question_tutorial.val(); + var minute_range = $question_minute_range.val(); + var second_range = $question_second_range.val(); + $.ajax({ + url: "/ajax-details-update/", + data: { + qid: $(this).data("qid"), + category: category, + tutorial: tutorial, + minute_range: minute_range, + second_range: second_range + }, + type: "POST", + success: function(data){ + if(category != 'None') { + $(".category small a").html(category); + $(".category").show() + } else { + $(".category").hide() + } + if(tutorial!= 'None') { + $(".tutorial small a").html(tutorial); + $(".tutorial").show() + } else { + $(".tutorial").hide() + } + if(minute_range!= 'None') { + $(".minute_range small a").html(minute_range); + $(".minute_range").show() + } else { + $(".minute_range").hide() + } + if(second_range != 'None') { + $(".second_range small a").html(second_range); + $(".second_range").show() + } else { + $(".second_range").hide() + } + console.log(data); + } + }); + }); /* * reply edit section * set the dom variables @@ -89,6 +172,7 @@ $(document).ready(function() { }); $reply_save.click(function() { + $saving.show(); var target = $(this).data("target"); replyNicEditor.removeInstance(target); $replyPanelWrapper.hide(); @@ -108,6 +192,9 @@ $(document).ready(function() { }, success: function(data) { console.log(data); + $saving.hide(); + $saved.show(); + $saved.fadeOut("slow"); } }); }); diff --git a/static/website/templates/get-question.html b/static/website/templates/get-question.html index 8c242d6..19c0283 100644 --- a/static/website/templates/get-question.html +++ b/static/website/templates/get-question.html @@ -1,14 +1,26 @@ {% extends 'website/templates/base.html' %} {% load static %} {% load widget_tweaks %} + +{% load permission_tags %} + {% block content %} -
FOSS | Tutorial | Min | diff --git a/static/website/templates/new-question.html b/static/website/templates/new-question.html index 60efa9b..63ae19a 100644 --- a/static/website/templates/new-question.html +++ b/static/website/templates/new-question.html @@ -62,7 +62,7 @@
---|