diff options
-rw-r--r-- | askbot/migrations/0135_auto__add_askwidget.py | 2 | ||||
-rw-r--r-- | askbot/models/widgets.py | 6 | ||||
-rw-r--r-- | askbot/skins/default/templates/list_ask_widget.html | 2 | ||||
-rwxr-xr-x | askbot/skins/default/templates/widgets/askbot_widget.css (renamed from askbot/skins/default/media/style/askbot-modal.css) | 8 | ||||
-rwxr-xr-x | askbot/skins/default/templates/widgets/askbot_widget.js | 31 | ||||
-rw-r--r-- | askbot/urls.py | 6 | ||||
-rw-r--r-- | askbot/views/widgets.py | 19 |
7 files changed, 53 insertions, 21 deletions
diff --git a/askbot/migrations/0135_auto__add_askwidget.py b/askbot/migrations/0135_auto__add_askwidget.py index 11b287e8..ebf6f717 100644 --- a/askbot/migrations/0135_auto__add_askwidget.py +++ b/askbot/migrations/0135_auto__add_askwidget.py @@ -13,7 +13,7 @@ class Migration(SchemaMigration): ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), ('title', self.gf('django.db.models.fields.CharField')(max_length=100)), ('group', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='groups', null=True, to=orm['askbot.Tag'])), - ('default_group', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['askbot.Tag'], null=True, blank=True)), + ('tag', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['askbot.Tag'], null=True, blank=True)), ('include_text_field', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True)), ('inner_style', self.gf('django.db.models.fields.TextField')(default='')), ('outer_style', self.gf('django.db.models.fields.TextField')(default='')), diff --git a/askbot/models/widgets.py b/askbot/models/widgets.py index 09b9a2d9..803b1293 100644 --- a/askbot/models/widgets.py +++ b/askbot/models/widgets.py @@ -40,8 +40,10 @@ class CreateAskWidgetForm(forms.ModelForm): initial=DEFAULT_OUTER_STYLE ) #these don't work for some reason - #group = forms.ModelChoiceField(query_set=get_groups()) - #tag = forms.ModelChoiceField(query_set=Tag.objects.get_content_tags()) + group = forms.ModelChoiceField(queryset=get_groups(), + required=False) + tag = forms.ModelChoiceField(queryset=Tag.objects.get_content_tags(), + required=False) class Meta: model = AskWidget diff --git a/askbot/skins/default/templates/list_ask_widget.html b/askbot/skins/default/templates/list_ask_widget.html index d3ee6f3a..b895bde9 100644 --- a/askbot/skins/default/templates/list_ask_widget.html +++ b/askbot/skins/default/templates/list_ask_widget.html @@ -6,7 +6,7 @@ {%for widget in widgets%} <p>Widget: {{widget.title}} | <a href="{% url edit_ask_widget widget.id %}">Edit</a> | <a href="{% url delete_ask_widget widget.id %}">Delete</a> </p> - <p>Code: <script type="text/javascript" src=http://{{request.get_host()}}{% url render_ask_widget widget.id%} ><script> + <p>Code: <script type="text/javascript" src="http://{{request.get_host()}}{% url render_ask_widget widget.id%}" ></script> {%endfor%} diff --git a/askbot/skins/default/media/style/askbot-modal.css b/askbot/skins/default/templates/widgets/askbot_widget.css index cec8bc6a..573a07fd 100755 --- a/askbot/skins/default/media/style/askbot-modal.css +++ b/askbot/skins/default/templates/widgets/askbot_widget.css @@ -1,4 +1,4 @@ -#AskbotAskWidget { +#{{variable_name}} { visibility: hidden; position: absolute; left: 0px; @@ -6,10 +6,10 @@ width:100%; height:100%; text-align:center; - z-index: 1000; + z-index: 99999; } -#AskbotAskWidget div{ +#{{variable_name}} div{ width:600px; height:400px; margin: 100px auto; @@ -19,7 +19,7 @@ text-align:right; } -#AskbotAskWidget iframe{ +#{{variable_name}} iframe{ width:600px; height:400px; } diff --git a/askbot/skins/default/templates/widgets/askbot_widget.js b/askbot/skins/default/templates/widgets/askbot_widget.js index 646d3dd5..57cead90 100755 --- a/askbot/skins/default/templates/widgets/askbot_widget.js +++ b/askbot/skins/default/templates/widgets/askbot_widget.js @@ -1,18 +1,20 @@ -var AskbotAskWidget = { - element_id: "AskbotAskWidget", +var {{variable_name}} = { + element_id: "{{variable_name}}", widgetToggle: function() { - element = document.getElementById(AskbotAskWidget.element_id); + element = document.getElementById({{variable_name}}.element_id); element.style.visibility = (element.style.visibility == "visible") ? "hidden" : "visible"; }, toHtml: function() { - var html = AskbotAskWidget.createButton(); + var html = {{variable_name}}.createButton(); var link = document.createElement('link'); link.setAttribute("rel", "stylesheet"); - link.setAttribute("href", 'http://{{host}}{{"/style/askbot-modal.css"|media}}'); + //link.setAttribute("href", 'http://{{host}}{{"/style/askbot-modal.css"|media}}'); + link.setAttribute("href", 'http://{{host}}{%url render_ask_widget_css widget.id%}'); //creating the div var motherDiv = document.createElement('div'); - motherDiv.setAttribute("id", AskbotAskWidget.element_id); + motherDiv.setAttribute("id", {{variable_name}}.element_id); + console.log(motherDiv); var containerDiv = document.createElement('div'); motherDiv.appendChild(containerDiv); @@ -26,7 +28,7 @@ var AskbotAskWidget = { var closeButton = document.createElement('a'); closeButton.setAttribute('href', '#'); closeButton.setAttribute('id', 'AskbotModalClose'); - closeButton.setAttribute('onClick', 'AskbotAskWidget.widgetToggle();'); + closeButton.setAttribute('onClick', '{{variable_name}}.widgetToggle();'); closeButton.innerText = 'Close'; containerDiv.appendChild(closeButton); @@ -38,6 +40,7 @@ var AskbotAskWidget = { var body = document.getElementsByTagName('body')[0]; if (body){ + console.log(body.firstChild); body.insertBefore(motherDiv, body.firstChild); body.insertBefore(link, body.firstChild); } @@ -48,7 +51,7 @@ var AskbotAskWidget = { buttonDiv.setAttribute('id', "AskbotAskButton"); var closeButton = document.createElement('button'); - closeButton.setAttribute('onClick', 'AskbotAskWidget.widgetToggle();'); + closeButton.setAttribute('onClick', '{{variable_name}}.widgetToggle();'); closeButton.innerText = label; buttonDiv.appendChild(closeButton); @@ -57,6 +60,14 @@ var AskbotAskWidget = { } }; +previous_function = window.onload; +var onload_functions = function(){ + if (previous_function){ + previous_function(); + } + {{variable_name}}.toHtml(); +} -window.onload = AskbotAskWidget.toHtml; -document.write(AskbotAskWidget.createButton().outerHTML); +console.log(onload_functions); +window.onload = onload_functions(); +document.write({{variable_name}}.createButton().outerHTML); diff --git a/askbot/urls.py b/askbot/urls.py index 8b0cb7cb..f6499845 100644 --- a/askbot/urls.py +++ b/askbot/urls.py @@ -398,6 +398,12 @@ urlpatterns = patterns('', name = 'render_ask_widget' ), url( + r'^widgets/ask/(?P<widget_id>\d+).css$', + views.widgets.render_ask_widget_css, + name = 'render_ask_widget_css' + ), + + url( r'^widgets/ask/complete/$', views.widgets.ask_widget_complete, name = 'ask_by_widget_complete' diff --git a/askbot/views/widgets.py b/askbot/views/widgets.py index de1307ab..72aac74e 100644 --- a/askbot/views/widgets.py +++ b/askbot/views/widgets.py @@ -144,9 +144,22 @@ def delete_ask_widget(request, widget_id): #TODO: Add cache def render_ask_widget_js(request, widget_id): - widget = get_object_or_404(models.AskWidget) + widget = get_object_or_404(models.AskWidget, pk=widget_id) + variable_name = "AskbotAskWidget%d" % widget.id content_tpl = get_template('widgets/askbot_widget.js', request) - context_dict = {'widget': widget, 'host': request.get_host()} + context_dict = {'widget': widget, + 'host': request.get_host(), + 'variable_name': variable_name} content = content_tpl.render(Context(context_dict)) - print content return HttpResponse(content, mimetype='text/javascript') + +#TODO: Add cache +def render_ask_widget_css(request, widget_id): + widget = get_object_or_404(models.AskWidget, pk=widget_id) + variable_name = "AskbotAskWidget%d" % widget.id + content_tpl = get_template('widgets/askbot_widget.css', request) + context_dict = {'widget': widget, + 'host': request.get_host(), + 'variable_name': variable_name} + content = content_tpl.render(Context(context_dict)) + return HttpResponse(content, mimetype='text/css') |