Loading AUTHORS +6 −1 Original line number Diff line number Diff line Loading @@ -97,6 +97,7 @@ answer newbie questions, and generally made Django that much better: Ned Batchelder <http://www.nedbatchelder.com/> batiste@dosimple.ch Batman Oliver Beattie <oliver@obeattie.com> Brian Beck <http://blog.brianbeck.com/> Shannon -jj Behrens <http://jjinux.blogspot.com/> Esdras Beleza <linux@esdrasbeleza.com> Loading Loading @@ -151,6 +152,7 @@ answer newbie questions, and generally made Django that much better: Antonis Christofides <anthony@itia.ntua.gr> Michal Chruszcz <troll@pld-linux.org> Can Burak Çilingir <canburak@cs.bilgi.edu.tr> Andrew Clark <amclark7@gmail.com> Ian Clelland <clelland@gmail.com> Travis Cline <travis.cline@gmail.com> Russell Cloran <russell@rucus.net> Loading Loading @@ -248,6 +250,7 @@ answer newbie questions, and generally made Django that much better: martin.glueck@gmail.com Ben Godfrey <http://aftnn.org> GomoX <gomo@datafull.com> Gil Gonçalves <lursty@gmail.com> Guilherme Mesquita Gondim <semente@taurinus.org> Mario Gonzalez <gonzalemario@gmail.com> David Gouldin <dgouldin@gmail.com> Loading @@ -271,6 +274,7 @@ answer newbie questions, and generally made Django that much better: Brian Harring <ferringb@gmail.com> Brant Harris Ronny Haryanto <http://ronny.haryan.to/> Axel Haustant <noirbizarre@gmail.com> Hawkeye Kent Hauser <kent@khauser.net> Joe Heck <http://www.rhonabwy.com/wp/> Loading Loading @@ -486,7 +490,7 @@ answer newbie questions, and generally made Django that much better: Brian Ray <http://brianray.chipy.org/> Lee Reilly <lee@leereilly.net> Łukasz Rekucki <lrekucki@gmail.com> remco@diji.biz Remco Wendt <remco.wendt@gmail.com> Marc Remolt <m.remolt@webmasters.de> Bruno Renié <buburno@gmail.com> David Reynolds <david@reynoldsfamily.org.uk> Loading Loading @@ -608,6 +612,7 @@ answer newbie questions, and generally made Django that much better: Filip Wasilewski <filip.wasilewski@gmail.com> Dan Watson <http://danwatson.net/> Joel Watts <joel@joelwatts.com> Russ Webber Lakin Wecker <lakin@structuredabstraction.com> Chris Wesseling <Chris.Wesseling@cwi.nl> Benjamin Wohlwend <piquadrat@gmail.com> Loading django/__init__.py +1 −1 Original line number Diff line number Diff line VERSION = (1, 6, 0, 'alpha', 1) VERSION = (1, 7, 0, 'alpha', 0) def get_version(*args, **kwargs): # Don't litter django/__init__.py with all the get_version stuff. Loading django/contrib/admin/actions.py +1 −1 Original line number Diff line number Diff line Loading @@ -19,7 +19,7 @@ def delete_selected(modeladmin, request, queryset): deleteable objects, or, if the user has no permission one of the related childs (foreignkeys), a "permission denied" message. Next, it delets all selected objects and redirects back to the change list. Next, it deletes all selected objects and redirects back to the change list. """ opts = modeladmin.model._meta app_label = opts.app_label Loading django/contrib/admin/options.py +67 −56 Original line number Diff line number Diff line Loading @@ -4,18 +4,15 @@ from functools import partial, reduce, update_wrapper from django import forms from django.conf import settings from django.forms.formsets import all_valid, DELETION_FIELD_NAME from django.forms.models import (modelform_factory, modelformset_factory, inlineformset_factory, BaseInlineFormSet, modelform_defines_fields) from django.contrib.contenttypes.models import ContentType from django.contrib import messages from django.contrib.admin import widgets, helpers from django.contrib.admin.util import (unquote, flatten_fieldsets, get_deleted_objects, model_format_dict, NestedObjects, lookup_needs_distinct) from django.contrib.admin import validation from django.contrib.admin.templatetags.admin_static import static from django.contrib.admin.templatetags.admin_urls import add_preserved_filters from django.contrib import messages from django.views.decorators.csrf import csrf_protect from django.contrib.auth import get_permission_codename from django.contrib.contenttypes.models import ContentType from django.core.exceptions import PermissionDenied, ValidationError, FieldError from django.core.paginator import Paginator from django.core.urlresolvers import reverse Loading @@ -24,7 +21,10 @@ from django.db.models.constants import LOOKUP_SEP from django.db.models.related import RelatedObject from django.db.models.fields import BLANK_CHOICE_DASH, FieldDoesNotExist from django.db.models.sql.constants import QUERY_TERMS from django.http import Http404, HttpResponse, HttpResponseRedirect from django.forms.formsets import all_valid, DELETION_FIELD_NAME from django.forms.models import (modelform_factory, modelformset_factory, inlineformset_factory, BaseInlineFormSet, modelform_defines_fields) from django.http import Http404, HttpResponseRedirect from django.http.response import HttpResponseBase from django.shortcuts import get_object_or_404 from django.template.response import SimpleTemplateResponse, TemplateResponse Loading @@ -39,6 +39,10 @@ from django.utils.text import capfirst, get_text_list from django.utils.translation import ugettext as _ from django.utils.translation import ungettext from django.utils.encoding import force_text from django.views.decorators.csrf import csrf_protect IS_POPUP_VAR = '_popup' HORIZONTAL, VERTICAL = 1, 2 # returns the <ul> class for a given radio_admin field Loading Loading @@ -350,7 +354,8 @@ class BaseModelAdmin(six.with_metaclass(RenameBaseModelAdminMethods)): Can be overridden by the user in subclasses. """ opts = self.opts return request.user.has_perm(opts.app_label + '.' + opts.get_add_permission()) codename = get_permission_codename('add', opts) return request.user.has_perm("%s.%s" % (opts.app_label, codename)) def has_change_permission(self, request, obj=None): """ Loading @@ -364,7 +369,8 @@ class BaseModelAdmin(six.with_metaclass(RenameBaseModelAdminMethods)): request has permission to change *any* object of the given type. """ opts = self.opts return request.user.has_perm(opts.app_label + '.' + opts.get_change_permission()) codename = get_permission_codename('change', opts) return request.user.has_perm("%s.%s" % (opts.app_label, codename)) def has_delete_permission(self, request, obj=None): """ Loading @@ -378,7 +384,9 @@ class BaseModelAdmin(six.with_metaclass(RenameBaseModelAdminMethods)): request has permission to delete *any* object of the given type. """ opts = self.opts return request.user.has_perm(opts.app_label + '.' + opts.get_delete_permission()) codename = get_permission_codename('delete', opts) return request.user.has_perm("%s.%s" % (opts.app_label, codename)) class ModelAdmin(BaseModelAdmin): "Encapsulates all admin options and functionality for a given model." Loading Loading @@ -660,8 +668,8 @@ class ModelAdmin(BaseModelAdmin): """ # If self.actions is explicitly set to None that means that we don't # want *any* actions enabled on this page. from django.contrib.admin.views.main import IS_POPUP_VAR if self.actions is None or IS_POPUP_VAR in request.GET: from django.contrib.admin.views.main import _is_changelist_popup if self.actions is None or _is_changelist_popup(request): return SortedDict() actions = [] Loading Loading @@ -908,12 +916,11 @@ class ModelAdmin(BaseModelAdmin): msg_dict = {'name': force_text(opts.verbose_name), 'obj': force_text(obj)} # Here, we distinguish between different save types by checking for # the presence of keys in request.POST. if "_popup" in request.POST: return HttpResponse( '<!DOCTYPE html><html><head><title></title></head><body>' '<script type="text/javascript">opener.dismissAddAnotherPopup(window, "%s", "%s");</script></body></html>' % \ # escape() calls force_text. (escape(pk_value), escapejs(obj))) if IS_POPUP_VAR in request.POST: return SimpleTemplateResponse('admin/popup_response.html', { 'pk_value': escape(pk_value), 'obj': escapejs(obj) }) elif "_continue" in request.POST: msg = _('The %(name)s "%(obj)s" was added successfully. You may edit it again below.') % msg_dict Loading Loading @@ -1049,7 +1056,7 @@ class ModelAdmin(BaseModelAdmin): if action_form.is_valid(): action = action_form.cleaned_data['action'] select_across = action_form.cleaned_data['select_across'] func, name, description = self.get_actions(request)[action] func = self.get_actions(request)[action][0] # Get the list of selected PKs. If nothing's selected, we can't # perform an action on it, so bail. Except we want to perform Loading Loading @@ -1158,7 +1165,7 @@ class ModelAdmin(BaseModelAdmin): context = { 'title': _('Add %s') % force_text(opts.verbose_name), 'adminform': adminForm, 'is_popup': "_popup" in request.REQUEST, 'is_popup': IS_POPUP_VAR in request.REQUEST, 'media': media, 'inline_admin_formsets': inline_admin_formsets, 'errors': helpers.AdminErrorList(form, formsets), Loading Loading @@ -1251,7 +1258,7 @@ class ModelAdmin(BaseModelAdmin): 'adminform': adminForm, 'object_id': object_id, 'original': obj, 'is_popup': "_popup" in request.REQUEST, 'is_popup': IS_POPUP_VAR in request.REQUEST, 'media': media, 'inline_admin_formsets': inline_admin_formsets, 'errors': helpers.AdminErrorList(form, formsets), Loading Loading @@ -1429,7 +1436,10 @@ class ModelAdmin(BaseModelAdmin): raise PermissionDenied if obj is None: raise Http404(_('%(name)s object with primary key %(key)r does not exist.') % {'name': force_text(opts.verbose_name), 'key': escape(object_id)}) raise Http404( _('%(name)s object with primary key %(key)r does not exist.') % {'name': force_text(opts.verbose_name), 'key': escape(object_id)} ) using = router.db_for_write(self.model) Loading @@ -1456,7 +1466,9 @@ class ModelAdmin(BaseModelAdmin): (opts.app_label, opts.model_name), current_app=self.admin_site.name) preserved_filters = self.get_preserved_filters(request) post_url = add_preserved_filters({'preserved_filters': preserved_filters, 'opts': opts}, post_url) post_url = add_preserved_filters( {'preserved_filters': preserved_filters, 'opts': opts}, post_url ) else: post_url = reverse('admin:index', current_app=self.admin_site.name) Loading Loading @@ -1522,6 +1534,7 @@ class ModelAdmin(BaseModelAdmin): "admin/object_history.html" ], context, current_app=self.admin_site.name) class InlineModelAdmin(BaseModelAdmin): """ Options for inline editing of ``model`` instances. Loading Loading @@ -1665,8 +1678,7 @@ class InlineModelAdmin(BaseModelAdmin): # to have the change permission for the related model in order to # be able to do anything with the intermediate model. return self.has_change_permission(request) return request.user.has_perm( self.opts.app_label + '.' + self.opts.get_add_permission()) return super(InlineModelAdmin, self).has_add_permission(request) def has_change_permission(self, request, obj=None): opts = self.opts Loading @@ -1677,8 +1689,8 @@ class InlineModelAdmin(BaseModelAdmin): if field.rel and field.rel.to != self.parent_model: opts = field.rel.to._meta break return request.user.has_perm( opts.app_label + '.' + opts.get_change_permission()) codename = get_permission_codename('change', opts) return request.user.has_perm("%s.%s" % (opts.app_label, codename)) def has_delete_permission(self, request, obj=None): if self.opts.auto_created: Loading @@ -1687,8 +1699,7 @@ class InlineModelAdmin(BaseModelAdmin): # to have the change permission for the related model in order to # be able to do anything with the intermediate model. return self.has_change_permission(request, obj) return request.user.has_perm( self.opts.app_label + '.' + self.opts.get_delete_permission()) return super(InlineModelAdmin, self).has_delete_permission(request, obj) class StackedInline(InlineModelAdmin): Loading django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js +2 −2 Original line number Diff line number Diff line Loading @@ -32,9 +32,9 @@ function showRelatedObjectLookupPopup(triggeringLink) { name = id_to_windowname(name); var href; if (triggeringLink.href.search(/\?/) >= 0) { href = triggeringLink.href + '&pop=1'; href = triggeringLink.href + '&_popup=1'; } else { href = triggeringLink.href + '?pop=1'; href = triggeringLink.href + '?_popup=1'; } var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes'); win.focus(); Loading Loading
AUTHORS +6 −1 Original line number Diff line number Diff line Loading @@ -97,6 +97,7 @@ answer newbie questions, and generally made Django that much better: Ned Batchelder <http://www.nedbatchelder.com/> batiste@dosimple.ch Batman Oliver Beattie <oliver@obeattie.com> Brian Beck <http://blog.brianbeck.com/> Shannon -jj Behrens <http://jjinux.blogspot.com/> Esdras Beleza <linux@esdrasbeleza.com> Loading Loading @@ -151,6 +152,7 @@ answer newbie questions, and generally made Django that much better: Antonis Christofides <anthony@itia.ntua.gr> Michal Chruszcz <troll@pld-linux.org> Can Burak Çilingir <canburak@cs.bilgi.edu.tr> Andrew Clark <amclark7@gmail.com> Ian Clelland <clelland@gmail.com> Travis Cline <travis.cline@gmail.com> Russell Cloran <russell@rucus.net> Loading Loading @@ -248,6 +250,7 @@ answer newbie questions, and generally made Django that much better: martin.glueck@gmail.com Ben Godfrey <http://aftnn.org> GomoX <gomo@datafull.com> Gil Gonçalves <lursty@gmail.com> Guilherme Mesquita Gondim <semente@taurinus.org> Mario Gonzalez <gonzalemario@gmail.com> David Gouldin <dgouldin@gmail.com> Loading @@ -271,6 +274,7 @@ answer newbie questions, and generally made Django that much better: Brian Harring <ferringb@gmail.com> Brant Harris Ronny Haryanto <http://ronny.haryan.to/> Axel Haustant <noirbizarre@gmail.com> Hawkeye Kent Hauser <kent@khauser.net> Joe Heck <http://www.rhonabwy.com/wp/> Loading Loading @@ -486,7 +490,7 @@ answer newbie questions, and generally made Django that much better: Brian Ray <http://brianray.chipy.org/> Lee Reilly <lee@leereilly.net> Łukasz Rekucki <lrekucki@gmail.com> remco@diji.biz Remco Wendt <remco.wendt@gmail.com> Marc Remolt <m.remolt@webmasters.de> Bruno Renié <buburno@gmail.com> David Reynolds <david@reynoldsfamily.org.uk> Loading Loading @@ -608,6 +612,7 @@ answer newbie questions, and generally made Django that much better: Filip Wasilewski <filip.wasilewski@gmail.com> Dan Watson <http://danwatson.net/> Joel Watts <joel@joelwatts.com> Russ Webber Lakin Wecker <lakin@structuredabstraction.com> Chris Wesseling <Chris.Wesseling@cwi.nl> Benjamin Wohlwend <piquadrat@gmail.com> Loading
django/__init__.py +1 −1 Original line number Diff line number Diff line VERSION = (1, 6, 0, 'alpha', 1) VERSION = (1, 7, 0, 'alpha', 0) def get_version(*args, **kwargs): # Don't litter django/__init__.py with all the get_version stuff. Loading
django/contrib/admin/actions.py +1 −1 Original line number Diff line number Diff line Loading @@ -19,7 +19,7 @@ def delete_selected(modeladmin, request, queryset): deleteable objects, or, if the user has no permission one of the related childs (foreignkeys), a "permission denied" message. Next, it delets all selected objects and redirects back to the change list. Next, it deletes all selected objects and redirects back to the change list. """ opts = modeladmin.model._meta app_label = opts.app_label Loading
django/contrib/admin/options.py +67 −56 Original line number Diff line number Diff line Loading @@ -4,18 +4,15 @@ from functools import partial, reduce, update_wrapper from django import forms from django.conf import settings from django.forms.formsets import all_valid, DELETION_FIELD_NAME from django.forms.models import (modelform_factory, modelformset_factory, inlineformset_factory, BaseInlineFormSet, modelform_defines_fields) from django.contrib.contenttypes.models import ContentType from django.contrib import messages from django.contrib.admin import widgets, helpers from django.contrib.admin.util import (unquote, flatten_fieldsets, get_deleted_objects, model_format_dict, NestedObjects, lookup_needs_distinct) from django.contrib.admin import validation from django.contrib.admin.templatetags.admin_static import static from django.contrib.admin.templatetags.admin_urls import add_preserved_filters from django.contrib import messages from django.views.decorators.csrf import csrf_protect from django.contrib.auth import get_permission_codename from django.contrib.contenttypes.models import ContentType from django.core.exceptions import PermissionDenied, ValidationError, FieldError from django.core.paginator import Paginator from django.core.urlresolvers import reverse Loading @@ -24,7 +21,10 @@ from django.db.models.constants import LOOKUP_SEP from django.db.models.related import RelatedObject from django.db.models.fields import BLANK_CHOICE_DASH, FieldDoesNotExist from django.db.models.sql.constants import QUERY_TERMS from django.http import Http404, HttpResponse, HttpResponseRedirect from django.forms.formsets import all_valid, DELETION_FIELD_NAME from django.forms.models import (modelform_factory, modelformset_factory, inlineformset_factory, BaseInlineFormSet, modelform_defines_fields) from django.http import Http404, HttpResponseRedirect from django.http.response import HttpResponseBase from django.shortcuts import get_object_or_404 from django.template.response import SimpleTemplateResponse, TemplateResponse Loading @@ -39,6 +39,10 @@ from django.utils.text import capfirst, get_text_list from django.utils.translation import ugettext as _ from django.utils.translation import ungettext from django.utils.encoding import force_text from django.views.decorators.csrf import csrf_protect IS_POPUP_VAR = '_popup' HORIZONTAL, VERTICAL = 1, 2 # returns the <ul> class for a given radio_admin field Loading Loading @@ -350,7 +354,8 @@ class BaseModelAdmin(six.with_metaclass(RenameBaseModelAdminMethods)): Can be overridden by the user in subclasses. """ opts = self.opts return request.user.has_perm(opts.app_label + '.' + opts.get_add_permission()) codename = get_permission_codename('add', opts) return request.user.has_perm("%s.%s" % (opts.app_label, codename)) def has_change_permission(self, request, obj=None): """ Loading @@ -364,7 +369,8 @@ class BaseModelAdmin(six.with_metaclass(RenameBaseModelAdminMethods)): request has permission to change *any* object of the given type. """ opts = self.opts return request.user.has_perm(opts.app_label + '.' + opts.get_change_permission()) codename = get_permission_codename('change', opts) return request.user.has_perm("%s.%s" % (opts.app_label, codename)) def has_delete_permission(self, request, obj=None): """ Loading @@ -378,7 +384,9 @@ class BaseModelAdmin(six.with_metaclass(RenameBaseModelAdminMethods)): request has permission to delete *any* object of the given type. """ opts = self.opts return request.user.has_perm(opts.app_label + '.' + opts.get_delete_permission()) codename = get_permission_codename('delete', opts) return request.user.has_perm("%s.%s" % (opts.app_label, codename)) class ModelAdmin(BaseModelAdmin): "Encapsulates all admin options and functionality for a given model." Loading Loading @@ -660,8 +668,8 @@ class ModelAdmin(BaseModelAdmin): """ # If self.actions is explicitly set to None that means that we don't # want *any* actions enabled on this page. from django.contrib.admin.views.main import IS_POPUP_VAR if self.actions is None or IS_POPUP_VAR in request.GET: from django.contrib.admin.views.main import _is_changelist_popup if self.actions is None or _is_changelist_popup(request): return SortedDict() actions = [] Loading Loading @@ -908,12 +916,11 @@ class ModelAdmin(BaseModelAdmin): msg_dict = {'name': force_text(opts.verbose_name), 'obj': force_text(obj)} # Here, we distinguish between different save types by checking for # the presence of keys in request.POST. if "_popup" in request.POST: return HttpResponse( '<!DOCTYPE html><html><head><title></title></head><body>' '<script type="text/javascript">opener.dismissAddAnotherPopup(window, "%s", "%s");</script></body></html>' % \ # escape() calls force_text. (escape(pk_value), escapejs(obj))) if IS_POPUP_VAR in request.POST: return SimpleTemplateResponse('admin/popup_response.html', { 'pk_value': escape(pk_value), 'obj': escapejs(obj) }) elif "_continue" in request.POST: msg = _('The %(name)s "%(obj)s" was added successfully. You may edit it again below.') % msg_dict Loading Loading @@ -1049,7 +1056,7 @@ class ModelAdmin(BaseModelAdmin): if action_form.is_valid(): action = action_form.cleaned_data['action'] select_across = action_form.cleaned_data['select_across'] func, name, description = self.get_actions(request)[action] func = self.get_actions(request)[action][0] # Get the list of selected PKs. If nothing's selected, we can't # perform an action on it, so bail. Except we want to perform Loading Loading @@ -1158,7 +1165,7 @@ class ModelAdmin(BaseModelAdmin): context = { 'title': _('Add %s') % force_text(opts.verbose_name), 'adminform': adminForm, 'is_popup': "_popup" in request.REQUEST, 'is_popup': IS_POPUP_VAR in request.REQUEST, 'media': media, 'inline_admin_formsets': inline_admin_formsets, 'errors': helpers.AdminErrorList(form, formsets), Loading Loading @@ -1251,7 +1258,7 @@ class ModelAdmin(BaseModelAdmin): 'adminform': adminForm, 'object_id': object_id, 'original': obj, 'is_popup': "_popup" in request.REQUEST, 'is_popup': IS_POPUP_VAR in request.REQUEST, 'media': media, 'inline_admin_formsets': inline_admin_formsets, 'errors': helpers.AdminErrorList(form, formsets), Loading Loading @@ -1429,7 +1436,10 @@ class ModelAdmin(BaseModelAdmin): raise PermissionDenied if obj is None: raise Http404(_('%(name)s object with primary key %(key)r does not exist.') % {'name': force_text(opts.verbose_name), 'key': escape(object_id)}) raise Http404( _('%(name)s object with primary key %(key)r does not exist.') % {'name': force_text(opts.verbose_name), 'key': escape(object_id)} ) using = router.db_for_write(self.model) Loading @@ -1456,7 +1466,9 @@ class ModelAdmin(BaseModelAdmin): (opts.app_label, opts.model_name), current_app=self.admin_site.name) preserved_filters = self.get_preserved_filters(request) post_url = add_preserved_filters({'preserved_filters': preserved_filters, 'opts': opts}, post_url) post_url = add_preserved_filters( {'preserved_filters': preserved_filters, 'opts': opts}, post_url ) else: post_url = reverse('admin:index', current_app=self.admin_site.name) Loading Loading @@ -1522,6 +1534,7 @@ class ModelAdmin(BaseModelAdmin): "admin/object_history.html" ], context, current_app=self.admin_site.name) class InlineModelAdmin(BaseModelAdmin): """ Options for inline editing of ``model`` instances. Loading Loading @@ -1665,8 +1678,7 @@ class InlineModelAdmin(BaseModelAdmin): # to have the change permission for the related model in order to # be able to do anything with the intermediate model. return self.has_change_permission(request) return request.user.has_perm( self.opts.app_label + '.' + self.opts.get_add_permission()) return super(InlineModelAdmin, self).has_add_permission(request) def has_change_permission(self, request, obj=None): opts = self.opts Loading @@ -1677,8 +1689,8 @@ class InlineModelAdmin(BaseModelAdmin): if field.rel and field.rel.to != self.parent_model: opts = field.rel.to._meta break return request.user.has_perm( opts.app_label + '.' + opts.get_change_permission()) codename = get_permission_codename('change', opts) return request.user.has_perm("%s.%s" % (opts.app_label, codename)) def has_delete_permission(self, request, obj=None): if self.opts.auto_created: Loading @@ -1687,8 +1699,7 @@ class InlineModelAdmin(BaseModelAdmin): # to have the change permission for the related model in order to # be able to do anything with the intermediate model. return self.has_change_permission(request, obj) return request.user.has_perm( self.opts.app_label + '.' + self.opts.get_delete_permission()) return super(InlineModelAdmin, self).has_delete_permission(request, obj) class StackedInline(InlineModelAdmin): Loading
django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js +2 −2 Original line number Diff line number Diff line Loading @@ -32,9 +32,9 @@ function showRelatedObjectLookupPopup(triggeringLink) { name = id_to_windowname(name); var href; if (triggeringLink.href.search(/\?/) >= 0) { href = triggeringLink.href + '&pop=1'; href = triggeringLink.href + '&_popup=1'; } else { href = triggeringLink.href + '?pop=1'; href = triggeringLink.href + '?_popup=1'; } var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes'); win.focus(); Loading