summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdolfo Fitoria <adolfo.fitoria@gmail.com>2012-08-16 11:26:13 -0600
committerAdolfo Fitoria <adolfo.fitoria@gmail.com>2012-08-16 11:26:13 -0600
commit52c62c822eb0ff73eefe1a84bd2704d0a36cea09 (patch)
treec8e22249f563926ed05650a845356a2083a69ddb
parent455da425438d6b1cb44e698ebdd4eedf5dc57e17 (diff)
downloadaskbot-52c62c822eb0ff73eefe1a84bd2704d0a36cea09.tar.gz
askbot-52c62c822eb0ff73eefe1a84bd2704d0a36cea09.tar.bz2
askbot-52c62c822eb0ff73eefe1a84bd2704d0a36cea09.zip
Fixed bugs on the widget creator and widget js code.
Made it work with more than two widgets at the time
-rw-r--r--askbot/migrations/0135_auto__add_askwidget.py2
-rw-r--r--askbot/models/widgets.py6
-rw-r--r--askbot/skins/default/templates/list_ask_widget.html2
-rwxr-xr-xaskbot/skins/default/templates/widgets/askbot_widget.css (renamed from askbot/skins/default/media/style/askbot-modal.css)8
-rwxr-xr-xaskbot/skins/default/templates/widgets/askbot_widget.js31
-rw-r--r--askbot/urls.py6
-rw-r--r--askbot/views/widgets.py19
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: &lt;script type="text/javascript" src=http://{{request.get_host()}}{% url render_ask_widget widget.id%} &gt;&lt;script&gt;
+ <p>Code: &lt;script type="text/javascript" src="http://{{request.get_host()}}{% url render_ask_widget widget.id%}" &gt;&lt;/script&gt;
{%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')