{ "info": { "author": "BlueDynamics Alliance", "author_email": "dev@bluedynamics.com", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Operating System :: OS Independent", "Programming Language :: JavaScript", "Topic :: Internet :: WWW/HTTP :: Dynamic Content" ], "description": "Overview\n========\n\n``bdajax`` provides JavaScript helper functions and a simple dispatcher system\ndriven by XML-attributes. Attributes are defined in its own XML namespace,\nplaced in the XHTML markup.\n\nThe dispatcher basically provides two behaviors\n\n- trigger events\n- perform actions\n\nBehaviors are bound to JavaScript events.\n\nThis package bundles required resources for the use of bdajax inside a\n``pyramid`` or ``zope`` application. It does NOT include the\nrequired server implementations. bdajax can be used with other Python or\nnon-Python server backends too as long as action performing code is implemented\nand available through browser URL.\n\n.. contents::\n :depth: 2\n\n\nDispatching\n-----------\n\nThe main paradigm is the use of an ``event/listener`` model. It enables bdajax\nto ``listen`` to ``events`` and trigger ``events`` on ajaxified DOM components.\n\nConsider a navtree as example; the idea is to trigger an event when a\nnavigation item gets clicked. Click semantically indicates a changed context.\nThen listen to this event on all DOM elements to get notified on changing\nserver context.\n\nThis makes it possible to have completely decoupled \"sub-applications\" knowing\nnothing but an event contract from each other.\n\n\nAttributes\n----------\n\nFollowing attributes are available:\n\n**ajax:bind=\"evt1 evt2\"**\n Indicate bdajax behavior on DOM element and the event(s) triggering\n it/them.\n\n**ajax:event=\"evt1:sel1 evt2:sel2\"**\n Trigger event(s) on selector. The triggered event gets the target\n as additional parameter on event.ajaxtarget.\n\n**ajax:action=\"name1:selector1:mode1 name2:selector2:mode2\"**\n Perform AJAX action(s) on selector with mode. Selector points to target\n DOM element, mode defines how to modify the DOM tree. Possible\n mode values are ``inner`` and ``replace``.\n\n**ajax:target=\"http://fubar.org?param=value\"**\n AJAX target definition. Consists out of target context URL and a\n query string used for requests on the target context.\n ``ajax:target`` is mandatory when ``ajax:event`` is defined, and\n optional when ``ajax:action`` is defined (depends on if event is triggered\n by bdajax or browser event).\n\n**ajax:confirm=\"Do you really want to do this?\"**\n Show confirmation dialog before actually executing actions and trigger\n events.\n\n**ajax:overlay=\"actionname:selector:content_selector\"**\n Renders ajax action to overlay with selector. ``selector`` is optional and\n defaults to ``#ajax-overlay``. ``content_selector`` is optional to\n ``selector`` and defaults to ``.overlay_content``.\n\n**ajax:overlay-css=\"additional-overlay-css-class\"**\n Additional CSS class which is added when overlay is opened and removed\n as soon as overlay is closed.\n\n**ajax:form=\"True\"**\n Indicate AJAX form. Valid only on ``form`` elements. Value gets ignored.\n\n**ajax:path=\"/some/path\"**\n Sets the browser URL path and pushes history state if supported by browser.\n If value is ``href``, path gets taken from ``href`` attribute. If value is\n ``target`` path gets taken from event ``ajaxtarget`` or ``ajax:target``\n attribute. Otherwise value is taken as defined.\n\n On ``popstate`` event bdajax executes the definitions written to state\n object. The state object consists of ``target``, ``action`` and ``event``\n attributes. Execution behaves the way described at ``ajax:action`` and\n ``ajax:event``.\n\n Target gets taken from ``ajax:path-target`` if set, otherwise falls back\n to target from event ``ajaxtarget`` or ``ajax:target``. If\n ``ajax:path-target`` set with empty value, target gets taken from ``path``.\n\n Action gets taken from ``ajax:path-action`` if set, otherwise falls back\n to ``ajax:action``. If ``ajax:path-action`` set with empty value, action\n execution on history state change can be suppressed even if ``ajax:action``\n is set.\n\n Event gets taken from ``ajax:path-event`` if set, otherwise falls back\n to ``ajax:event``. If ``ajax:path-event`` set with empty value, event\n triggering on history state change can be suppressed even if ``ajax:event``\n is set.\n\n Overlay gets taken from ``ajax:path-overlay`` if set, otherwise falls back\n to ``ajax:overlay``. If ``ajax:path-overlay`` set with empty value, overlay\n triggering on history state change can be suppressed even if\n ``ajax:overlay`` is set.\n\n Additional CSS class for overlay gets taken from ``ajax:path-overlay-css``\n if set, otherwise falls back to ``ajax:overlay-css``.\n\n If no action and no event and no overlay defined on history state change,\n bdajax performs a redirect to target.\n\n Bdajax appends the request parameter ``popstate=1`` to requests made by\n history browsing. This is useful to determine on server side whether to\n skip setting ajax path as continuation definition.\n\n**ajax:path-target=\"http://fubar.org?param=value\"**\n Can be used in conjunction with ``ajax:path``.\n\n**ajax:path-action=\"name1:selector1:mode1\"**\n Can be used in conjunction with ``ajax:path``.\n\n**ajax:path-event=\"evt1:sel1\"**\n Can be used in conjunction with ``ajax:path``.\n\n**ajax:path-overlay=\"actionname:selector:content_selector\"**\n Can be used in conjunction with ``ajax:path``.\n\n**ajax:path-overlay-css=\"actionname:selector:content_selector\"**\n Can be used in conjunction with ``ajax:path``.\n\n.. note::\n\n No selectors containing spaces are supported!\n\n\nProvide dependencies on server\n------------------------------\n\nThis package already includes resource configuration for ``Zope`` and\n``pyramid``. This is done by ZCML. Include the following ZCML include statement\nto your ZCML configuration:\n\n.. code-block:: xml\n\n \n\nThe expected ``ajaxaction`` view is not provided. Its intended to be provided\nby a custom implementation. See 'Perform actions' below.\n\n\nLoad dependencies in markup\n---------------------------\n\nLoad bdajax related Scripts:\n\n.. code-block:: html\n\n \n \n\n \n \n\n \n \n\n \n \n\nLoad bdajax related CSS:\n\n.. code-block:: html\n\n \n \n\n \n \n\nMake sure the content of ``bdajax.pt`` or ``bdajax_bs3.pt`` is rendered in\nMarkup.\n\n\nDefine namespace\n----------------\n\nIn order to keep your XHTML valid when using the XML namespace extension define\nthis namespace in the XHTML document:\n\n.. code-block:: html\n\n \n ...\n \n\n\nEvent binding\n-------------\n\nIndicate bdajax behavior on DOM element:\n\n.. code-block:: html\n\n \n fubar\n \n\nBinds this element to events ``keydown`` and ``click``.\n\n\nTrigger events\n--------------\n\nBind event behavior to DOM element:\n\n.. code-block:: html\n\n \n fubar\n \n\nThis causes the ``contextchanged`` event to be triggered on all DOM elements\ndefining ``contextsensitiv`` css class. The extra attribute ``ajaxtarget`` gets\nwritten to the event before it is triggered, containing definitions from\n``ajax:target``.\n\n\nSet URL path\n------------\n\nSet path directly, triggers event on history state change:\n\n.. code-block:: html\n\n \n fubar\n \n\nTake path from target, performs action on history state change:\n\n.. code-block:: html\n\n \n fubar\n \n\nTake path from href attribute, trigger overlay:\n\n.. code-block:: html\n\n \n fubar\n \n\n\nPerform actions\n---------------\n\nAn action performs a JSON request to the server and modifies the DOM tree as\ndefined.\n\nbdajax expects a resource (i.e a zope/pyramid view or some script) named\n``ajaxaction`` on server. Resource is called on target url with target query\nparameters. Three additional arguments are passed:\n\n**bdajax.action**\n name of the action\n\n**bdajax.selector**\n given selector must be added to response. Can be ``NONE``, which means\n that no markup is manipulated after action (useful i.e. in combination with\n continuation actions and events).\n\n**bdajax.mode**\n the manipulation mode. Either ``inner`` or ``replace`` or ``NONE``\n (see above).\n\nThe resource is responsible to return the requested resource as a JSON\nresponse in the format as follows:\n\n.. code-block:: js\n\n {\n mode: 'inner', // the passed mode\n selector: '#someid', // the passed selector\n payload: '
...
', // the rendered action\n continuation: [{}], // continuation actions, events and messages\n }\n\n\nAction continuation\n~~~~~~~~~~~~~~~~~~~\n\nThe ``continuation`` value defines an array of tasks which should\nbe performed after an ajax action returns. Available continuation\ndefinitions are described below.\n\n**actions**:\n\n.. code-block:: js\n\n {\n 'type': 'action',\n 'target': 'http://example.com',\n 'name': 'actionname',\n 'mode': 'inner',\n 'selector': '.foo'\n }\n\n**events**:\n\n.. code-block:: js\n\n {\n 'type': 'event',\n 'target': 'http://example.com',\n 'name': 'eventname',\n 'selector': '.foo'\n }\n\n**path**:\n\n.. code-block:: js\n\n {\n 'type': 'path',\n 'path': '/some/path',\n 'target': 'http://example.com/some/path',\n 'action': 'actionname:.selector:replace',\n 'event': 'contextchanged:#layout',\n 'overlay': 'acionname:#custom-overlay:.custom_overlay_content',\n 'overlay_css': 'some-css-class'\n }\n\n**overlay**:\n\n.. code-block:: js\n\n {\n 'type': 'overlay',\n 'action': 'actionname',\n 'selector': '#ajax-overlay',\n 'content_selector': '.overlay_content',\n 'css': 'some-css-class',\n 'target': 'http://example.com',\n 'close': false\n }\n\nOverlays dynamically get a close button. In order to keep overlay contents\neasily alterable inside the overlay element an element exists acting as overlay\ncontent container. ``content_selector`` defines the selector of this container.\n\nSetting close to ``true`` closes overlay at ``selector``. In this case\n``action`` and target are ignored.\n\n**messages**:\n\n.. code-block:: js\n\n {\n 'type': 'message',\n 'payload': 'Text or Markup',\n 'flavor': 'error',\n 'selector': null,\n }\n\nEither ``flavor`` or ``selector`` must be given.\nFlavor could be one of 'message', 'info', 'warning', 'error' and map to the\ncorresponding bdajax UI helper functions. Selector indicates to hook returned\npayload at a custom location in DOM tree instead of displaying a message. In\nthis case, payload is set as contents of DOM element returned by selector.\n\nIf both ``flavor`` and ``selector`` are set, ``selector`` is ignored.\n\nBe aware that you can provoke infinite loops with continuation actions and\nevents, use this feature sparingly.\n\n\nTrigger actions directly\n~~~~~~~~~~~~~~~~~~~~~~~~\n\nBind an action which is triggered directly:\n\n.. code-block:: html\n\n \n fubar\n \n\nOn click the DOM element with id ``fubar`` will be replaced by the results of\naction ``renderfubar``. Request context and request params are taken from\n``ajax:target`` definition.\n\n\nTrigger actions as event listener\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nBind an action acting as event listener. See section 'Trigger events'.\nA triggered event indicates change of context on target with params.\nHereupon perform some action:\n\n.. code-block:: html\n\n
\n ...\n
\n\nNote: If binding actions as event listeners, there's no need to define a target\nsince it is passed along with the event.\n\n\nMultiple behaviors\n------------------\n\nBind multiple behaviors to the same DOM element:\n\n.. code-block:: html\n\n \n fubar\n \n\nIn this example on click event ``contextchanged`` is triggered, action\n``rendersomething`` is performed and URL path ``/some/path`` get set.\n\n\nConfirm actions\n---------------\n\nBdajax can display a confirmation dialog before performing actions or trigger\nevents:\n\n.. code-block:: html\n\n \n fubar\n \n\nIf ``ajax:confirm`` is set, a modal dialog is displayed before dispatching is\nperformed.\n\n\nOverlays\n--------\n\nAjax actions can be rendered to overlay directly by using ``bdajax:overlay``:\n\n.. code-block:: html\n\n \n fubar\n \n\nThis causes bdajax to perform action ``acionname`` on context defined in\n``ajax:target`` and renders the result to an overlay element.\n\nIn addition a selector for the overlay can be defined. This is useful if\nsomeone needs to display multiple overlays:\n\n.. code-block:: html\n\n \n fubar\n \n\nOptional to a custom overlay selector a content container selector can be\ndefined:\n\n.. code-block:: html\n\n \n fubar\n \n\nOverlays can be closed by setting special value ``CLOSE`` at\n``bdajax:overlay``, optionally with colon seperated overlay selector:\n\n.. code-block:: html\n\n \n fubar\n \n\n\nJavaScript API\n==============\n\n\nMessages, infos, warnings and errors\n------------------------------------\n\n``bdajax`` displays application messages in a jQuery tools overlay.\n\n``bdajax.message`` displays a plain message. ``bdajax.info`` ``bdajax.warning``\nand ``bdajax.error`` decorates message with appropriate icon:\n\n.. code-block:: js\n\n bdajax.message('I am an application Message');\n\n\nOverlay\n-------\n\nLoad ajax action contents into an overlay:\n\n.. code-block:: js\n\n var overlay_api = bdajax.overlay({\n action: 'actionname',\n target: 'http://foobar.org?param=value',\n selector: '#ajax-overlay',\n content_selector: '.overlay_ontent',\n css: 'additional_overlay_css_class'\n });\n\n``selector`` is optional and defaults to ``#ajax-overlay``.\n\n``content_selector`` is optional to ``selector`` and defaults to\n``overlay_ontent``.\n\nDefault overlay and default overlay content selector can be overwritten at\n``bdajax.default_overlay_selector`` respective\n``bdajax.default_overlay_content_selector``.\n\n``css`` is optional and can be used to set a CSS class to overlay\nDOM element on open. This class gets removed as soon as overlay is closed.\n\nOptionally to ``target``, ``url`` and ``params`` can be given as options to\nthe function. If both, ``target`` and ``url/params`` given, ``target`` is used.\n\nAjax overlays can be closed by passing ``close`` option to ``bdajax.overlay``.\nWhen closing an overlay, overlay selector is considered as well from options\nif given, otherwise ``bdajax.default_overlay_selector`` is used.\n\n.. code-block:: js\n\n bdajax.overlay({\n close: true,\n selector: '#ajax-overlay'\n });\n\n``bdajax.overlay`` supports an ``on_close`` callback in options.\n\n.. code-block:: js\n\n var on_close = function() {\n // do something\n }\n bdajax.overlay({\n action: 'actionname',\n target: 'http://foobar.org?param=value',\n on_close: on_close\n });\n\n\nModal dialog\n------------\n\nRender a modal dialog inside an overlay. The function expects an options object\nand a callback function, which gets executed if user confirms dialog. The\ncallback gets passed the given options object as well. ``message`` is mandatory\nin options:\n\n.. code-block:: js\n\n var options = {\n message: 'I am an application Message'\n };\n bdajax.dialog(options, callback);\n\n\nURL operations\n--------------\n\nparseurl\n~~~~~~~~\n\nParse hyperlinks for base URL:\n\n.. code-block:: js\n\n bdajax.parseurl('http://fubar.org?param=value');\n\nThis results in:\n\n.. code-block:: js\n\n 'http://fubar.org'\n\n\nparsequery\n~~~~~~~~~~\n\nParse hyperlinks for request parameters:\n\n.. code-block:: js\n\n bdajax.parsequery('http://fubar.org?param=value');\n\nThis results in:\n\n.. code-block:: js\n\n { param: 'value' }\n\nThe raw query as string can be parsed by additionally passing ``true`` to\n``parsequery``::\n\n.. code-block:: js\n\n bdajax.parsequery('http://fubar.org?param=value', true);\n\nThis results in::\n\n.. code-block:: js\n\n '?param=value'\n\n\nparsepath\n~~~~~~~~~\n\nParse hyperlinks for path without base URL::\n\n.. code-block:: js\n\n bdajax.parsepath('http://fubar.org/some/path?param=value');\n\nThis results in::\n\n.. code-block:: js\n\n '/some/path'\n\nThe query can be included by additionally passing ``true`` to ``parsepath``::\n\n.. code-block:: js\n\n bdajax.parsepath('http://fubar.org/some/path?param=value', true);\n\nThis results in::\n\n.. code-block:: js\n\n '/some/path?param=value'\n\n\nparsetarget\n~~~~~~~~~~~\n\nParse all information at once by calling ``parsetarget``:\n\n.. code-block:: js\n\n bdajax.parsetarget('http://fubar.org/some/path?param=value');\n\nThis result in:\n\n.. code-block:: js\n\n {\n url: 'http://fubar.org/some/path',\n params: { param: 'value' },\n path: '/some/path',\n query: '?param=value'\n }\n\n\nXMLHTTPRequest convenience\n--------------------------\n\n``bdajax.request`` function is convenience for XMLHTTPRequests. By default\nit sends requests of type ``html`` and displays a ``bdajax.error`` message if\nrequest fails:\n\n.. code-block:: js\n\n bdajax.request({\n success: function(data) {\n // do something with data.\n },\n url: 'foo',\n params: {\n a: 'a',\n b: 'b'\n },\n type: 'json',\n error: function() {\n bdajax.error('Request failed');\n }\n });\n\nGiven ``url`` might contain a query string. It gets parsed and written to\nrequest parameters. If same request parameter is defined in URL query AND\nparams object, latter one rules.\n\nOptions:\n\n**success**\n Callback if request is successful.\n\n**url**\n Request url as string.\n\n**params (optional)**\n Query parameters for request as Object.\n\n**type (optional)**\n ``xml``, ``json``, ``script``, or ``html``.\n\n**error (optional)**\n Callback if request fails.\n\nSuccess and error callback functions are wrapped in ``bdajax.request`` to\nconsider ajax spinner handling automatically.\n\n\nPerform action\n--------------\n\nSometimes actions need to be performed inside JavaScript code.\n``bdajax.action`` provides this:\n\n.. code-block:: js\n\n var target = bdajax.parsetarget('http://fubar.org?param=value');\n bdajax.action({\n name: 'content',\n selector: '#content',\n mode: 'inner',\n url: target.url,\n params: target.params\n });\n\nOptions:\n\n**name**\n Action name\n\n**selector**\n result selector\n\n**mode**\n action mode\n\n**url**\n target url\n\n**params**\n query params\n\n\nTrigger events\n--------------\n\nSometimes events need to be triggered manually. Since bdajax expects the\nattribute ``ajaxtarget`` on the received event a convenience is provided.\n\nTarget might be a URL, then it gets parsed by the trigger function:\n\n.. code-block:: js\n\n var url = 'http://fubar.org?param=value';\n bdajax.trigger('contextchanged', '.contextsensitiv', url);\n\nTarget might be object as returned from ``bdajax.parsetarget``:\n\n.. code-block:: js\n\n var url = 'http://fubar.org?param=value';\n var target = bdajax.parsetarget(url);\n bdajax.trigger('contextchanged', '.contextsensitiv', target);\n\n\nSet URL path\n------------\n\nTo set URL path:\n\n.. code-block:: js\n\n bdajax.path({\n path: '/some/path',\n target: 'http://example.com/some/path',\n action: 'layout:#layout:replace',\n event: 'contextchanged:#layout',\n overlay: 'actionname',\n overlay_css: 'additional-overlay-css-class'\n });\n\n``bdajax.path`` also accepts a ``replace`` option. If given browser history\ngets reset.\n\n.. code-block:: js\n\n bdajax.path({\n path: '/some/path',\n target: 'http://example.com/some/path',\n action: 'layout:#layout:replace',\n replace: true\n });\n\n\nAjax forms\n----------\n\nForms must have ``ajax:form`` attribute or CSS class ``ajax`` (deprecated)\nset in order to be handled by bdajax:\n\n.. code-block:: html\n\n
\n ...\n
\n\nAjax form processing is done using a hidden iframe where the form gets\ntriggered to. The server side must return a response like so on form submit:\n\n.. code-block:: html\n\n
\n\n \n
\n ...\n
\n\n
\n\n \n\nIf ``div`` with id ``ajaxform`` contains markup, it gets rendered to\n``selector`` (#my_ajax_form) with ``mode`` (replace). This makes it possible\nto rerender forms on validation error or display a success page or similar.\nOptional bdajax continuation definitions can be given.\n\nAgain, bdajax does not provide any server side implementation, it's up to you\nproviding this.\n\n**NOTE** - As of bdajax 1.10 the continuation definitions are passed directly\nto ``render_ajax_form`` instead of calling ``bdajax.continuation``. This is\nnecessary because ``render_ajax_form`` removes the hidden iframe after\nprocessing to prevent useless browser history entries. Please adopt your server\nside code when updating to version 1.10.\n\n\n3rd party javascript\n--------------------\n\nIntegration of custom JavaScript to the binding mechanism of bdajax is\ndone via ``bdajax.register``. The register function takes a function and\na boolean flag whether to immediately execute this function as arguments.\n\nThe passed binder function gets called every time bdajax hooks up some markup\nand gets passed the changed DOM part as ``context``:\n\n.. code-block:: js\n\n (function($) {\n\n var custom_binder = function(context) {\n $('mysel', context).on('click', function() { ... });\n };\n\n $(document).ready(function() {\n bdajax.register(custom_binder, true);\n });\n\n })(jQuery);\n\n\nMigration from old style registered binders\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPrior to bdajax 1.9, binder functions were registered by directly manipulating\n``bdajax.binders`` object. While this still works, it's not supposed to be\nused any more.\n\nWhen migrating to ``bdajax.register``, be aware that the context of ``this``\nchanges if binder function is member of a global object. To ensure proper\nexecution, the binder function should be bound manually to the object it gets\nexecuted in, or the code should be adopted.\n\nThus, migrating code registering ``myob.binder`` as bdajax binder looks like\nso:\n\n.. code-block:: js\n\n (function($) {\n\n var myob = {\n binder: function(context) {\n // ``this`` is expected to refer to ``myob``\n }\n }\n\n $(document).ready(function() {\n // old way of binding\n bdajax.binders.myob_binder = myob.binder;\n\n // new way of binding if context of ``this`` should be kept\n bdajax.register(myob.binder.bind(myob));\n });\n\n })(jQuery);\n\n\nBrowsers\n========\n\nbdajax is tested with common modern browsers:\n\n- Firefox\n- IE\n- Edge\n- Chome\n- Safari\n\nIf you find bugs or inconsistencies please report them on github.\n\n\nContributors\n============\n\n- Robert Niederreiter (Author)\n- Attila Ol\u00e1h\n- Johannes Raggam\n\n\n\nChangelog\n=========\n\n1.12 (2019-09-06)\n-----------------\n\n- Support for async loading\n [agitator]\n\n\n1.11 (2018-11-07)\n-----------------\n\n- Prevent X scrolling when overlay is shown in conjunction with bootstrap\n styles.\n [rnix, 2018-10-04]\n\n\n1.10 (2017-09-17)\n-----------------\n\n- Hidden form response iframe gets created on the fly and removed after form\n processing. This is necessary to prevent a useless entry in browser history.\n\n WARNING: This change breaks the server implementation. Take a look at\n Ajax forms documentation how to adopt your code to this change. Also make\n sure to remove the hidden iframe from bdajax markup if you don't use the\n templates shipped with this package.\n [rnix, 2017-09-12]\n\n\n1.9 (2017-08-28)\n----------------\n\n- Introduce ``bdajax.register`` which should be used for registering\n binder functions instead of manipulating ``bdajax.binders`` manually.\n [rnix, 2017-07-19]\n\n- Catch and log exceptions thrown when executing bdajax binder callback\n functions.\n [rnix, 2017-07-19]\n\n- Use ``jQuery.on`` and ``jQuery.off`` for event binding instead of ``bind``\n and ``unbind`` (jQuery 1.7+ required).\n [rnix, 2017-07-19]\n\n- ``bdajax.parsetarget`` includes ``query`` as string in returned object.\n [rnix, 2017-07-19]\n\n- ``bdajax.parsepath`` accepts optional ``include_query`` boolean argument.\n [rnix, 2017-07-19]\n\n- ``bdajax.parsequery`` accepts optional ``as_string`` boolean argument.\n [rnix, 2017-07-19]\n\n- Consider query string in ``bdajax._handle_ajax_path`` if ``ajax:path`` is\n ``target``.\n [rnix, 2017-07-19]\n\n\n1.8.1 (2017-07-18)\n------------------\n\n- Consider query string in ``bdajax._handle_ajax_path`` if ``ajax:path`` is\n ``href``.\n [rnix, 2017-07-06]\n\n\n1.8 (2017-05-15)\n----------------\n\n- Add support for setting additional CSS classes to overlays.\n [rnix, 2017-05-12]\n\n\n1.7.2 (2017-05-11)\n------------------\n\n- Reset ``window.location.hash`` if ``bdajax.request`` error callback gets\n unauthorized HTTP response code when redirecting to login page.\n [rnix, 2017-05-11]\n\n\n1.7.1 (2017-03-29)\n------------------\n\n- Use ``bdajax`` object instead of ``this`` in ``bdajax._do_dispatching``.\n If called as callback by ``bdajax.dialog``, ``this`` is undefined.\n [rnix, 2017-03-29]\n\n\n1.7 (2017-03-28)\n----------------\n\n- ``target`` option passed to ``bdajax.overlay`` is also accepted as JS object.\n [rnix, 2017-03-28]\n\n- Handle empty target in ``bdajax.parsetarget``.\n [rnix, 2017-03-27]\n\n- Introduce ``close`` option in ``bdajax.overlay``.\n [rnix, 2017-03-27]\n\n- Introduce ``on_close`` callback option in ``bdajax.overlay``.\n [rnix, 2017-03-27]\n\n- Add support for browser history navigation. Introduce ``ajax:path-target``,\n ``ajax:path-action``, ``ajax:path-event`` and ``ajax:path-overlay``\n attributes.\n [rnix, 2017-03-22]\n\n- ``bdajax.request`` supports ``method`` in options, defaults to ``GET``.\n [rnix, 2016-10-11]\n\n\n1.6.3 (2015-11-22)\n------------------\n\n- Fix ``bdajax.parseurl``.\n [rnix, 2015-11-21]\n\n\n1.6.2 (2015-07-31)\n------------------\n\n- Check path starts with '/' via ``indexOf`` function instead of\n IE-unsupported ``startsWith`` function in ``bdajax.parseurl``.\n [rnix, 2015-07-29]\n\n- Fix license in JS files.\n\n\n1.6.1 (2015-06-27)\n------------------\n\n- Fix Internet Explorer 11 problem, where the pathname attribute on URL parsing\n on an \"a\" element doesn't start with '/'.\n [thet]\n\n\n1.6.0 (2015-06-25)\n------------------\n\n- Resolve JSHint errors and warnings.\n [thet]\n\n- Add wrapper with class ``bdajax-overlays`` around ``bdajax`` browser views.\n That way, all structures can be selected at once with Diazo.\n [thet]\n\n- JSHint.\n [thet]\n\n- Change order of available overlays in template.\n [rnix, 2014-07-24]\n\n- Add ``ajax:path functionality``.\n [rnix, 2014-07-22]\n\n- Add bdajax integration template and styles and overlay hook script for\n Twitter Bootstrap 3.\n [rnix, 2014-07-04]\n\n- Update Ajax Spinner Image.\n [rnix, 2014-07-03]\n\n\n1.5.2\n-----\n\n- Do not display error message if XHR request gets aborted (e.g. click\n a url while request is pending)\n [rnix]\n\n\n1.5.1\n-----\n\n- Ajax forms are now marked via ``ajax:form``. Setting ``ajax`` CSS class still\n works, but is deprecated.\n [rnix, 2013-02-04]\n\n\n1.5.0\n-----\n\n- Refactor ``bdajax.trigger`` to create a separate event instace for each\n element returned by selector.\n [rnix, 2013-08-14]\n\n- Include customized ``overlay.js`` of jquery tools. Two Reasons; We only need\n overlay of jquery tools; jquery tools development is pretty slow in migrating\n newer jQuery versions and not compatible with jquery >= 1.9 (yet).\n [rnix, 2013-08-13]\n\n- Update to Jquery 1.9.x\n [rnix, 2013-08-13]\n\n1.4.2\n-----\n\n- ``bdaja.trigger`` also accepts object as returned by ``bdajax.parsetarget``\n as target argument.\n [rnix, 2012-10-28]\n\n1.4.1\n-----\n\n- Explicit render ``about:blank`` in hidden form response iframe src.\n [rnix, 2012-08-06]\n\n1.4\n---\n\n- Nicer spinner image.\n [rnix, 2012-05-21]\n\n- Add ``overlay`` continuation support.\n [rnix, 2012-05-04]\n\n- Extend ``ajax:overlay`` to accept an optional overlay and content selector.\n [rnix, 2012-05-04]\n\n- Add AJAX form support.\n [rnix, 2012-05-04]\n\n1.3\n---\n\n- All overlays not positional fixed for now.\n [rnix, 2011-12-02]\n\n- jQuery 1.6.4 and jQuery Tools 1.2.6.\n [rnix, 2011-12-01]\n\n- Add ``ajax:overlay`` functionality.\n [rnix, 2011-11-30]\n\n- Call ``event.stopPropagation`` in ``bdajax._dispatching_handler``.\n [rnix, 2011-11-23]\n\n1.2.1\n-----\n\n- Use CSS 'min-width' instead of 'width' for messages.\n [rnix, 2011-09-07]\n\n1.2\n---\n\n- Add ``bdajax.fiddle`` function.\n [rnix, 2011-04-28]\n\n- Delete overlay data from DOM element before reinitializing.\n [rnix, 2011-04-21]\n\n- Add ``ajax:confirm`` functionality.\n [rnix, 2011-04-20]\n\n- Strip trailing '/' in ``bdajax.parseurl`` to avoid double slashes.\n [rnix, 2011-04-19]\n\n- Add continuation messages.\n [rnix, 2011-04-12]\n\n1.1\n---\n\n- Set focus on ok button for dialog boxes, so a user can dismiss the button by\n pressing return key.\n [aatiis, 2011-03-25]\n\n- Don't define a default error callback twice, just rely on the default handler\n prowided by ``bdajax.request``.\n [aatiis, 2011-03-25]\n\n- Add default 403 error page redirect.\n [aatiis, 2011-03-25]\n\n- Hide spinner after 'Empty response' message.\n [aatiis, 2011-03-25]\n\n- Used ``request.status`` and ``request.statusText`` in default error if they\n are defined.\n [aatiis, 2011-03-25]\n\n- Continuation action and event support for ajaxaction.\n [rnix, 2011-03-21]\n\n- Better default error output.\n [rnix, 2011-03-13]\n\n- Remove ``ajaxerrors`` and ``ajaxerror`` from bdajax.\n [rnix, 2011-03-13]\n\n- Remove bfg.zcml and zope.zcml, switch to pyramid in configure.zcml with\n conditional resource registration.\n [rnix, 2011-02-07]\n\n1.0.2\n-----\n\n- Rebind bdajax global if element is not found by selector after replace\n action.\n [rnix, 2011-01-14]\n\n1.0.1\n-----\n\n- Add spinner handling.\n [rnix, 2010-12-13]\n\n- Return jquery context by ``jQuery.bdajax``.\n [rnix, 2010-12-13]\n\n1.0\n---\n\n- Remove call behaviour.\n [rnix, 2010-12-04]\n\n- Browser testing.\n [rnix, 2010-12-04]\n\n1.0b4\n-----\n\n- Add ``configure.zcml`` containing all configuration using\n ``zcml:condition``.\n [rnix, 2010-11-16]\n\n- Remove overlay data of modal dialog before reloading. otherwise callback\n options are cached.\n [rnix, 2010-11-09]\n\n- Disable ajax request caching by default in ``bdajax.request``.\n [rnix, 2010-11-09]\n\n- Add modal dialog to bdajax.\n [rnix, 2010-11-09]\n\n- Mark ``ajax:call`` API deprecated. Will be removed for 1.0 final.\n [rnix, 2010-11-09]\n\n1.0b3\n-----\n\n- Add class ``allowMultiSubmit`` to fit a plone JS contract.\n [rnix, 2010-07-01]\n\n- Fix bug in bdajax.request when finding url including query params.\n [rnix, 2010-07-01]\n\n1.0b2\n-----\n\n- Switch to jQuery tools 1.2.3.\n [rnix, 2010-07-01]\n\n- Call binders with correct context.\n [rnix, 2010-05-16]\n\n- Add overlay helper function and corresponding styles.\n [rnix, 2010-05-16]\n\n1.0b1\n-----\n\n- Make it work.\n [rnix]\n\n\n\n\nLicense\n=======\n\nCopyright (c) 2010-2019, BlueDynamics Alliance, Austria\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this \n list of conditions and the following disclaimer.\n* Redistributions in binary form must reproduce the above copyright notice, this \n list of conditions and the following disclaimer in the documentation and/or \n other materials provided with the distribution.\n* Neither the name of the BlueDynamics Alliance nor the names of its \n contributors may be used to endorse or promote products derived from this \n software without specific prior written permission.\n \nTHIS SOFTWARE IS PROVIDED BY BlueDynamics Alliance ``AS IS`` AND ANY\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL BlueDynamics Alliance BE LIABLE FOR ANY\nDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/bluedynamics/bdajax", "keywords": "", "license": "Simplified BSD", "maintainer": "", "maintainer_email": "", "name": "bdajax", "package_url": "https://pypi.org/project/bdajax/", "platform": "", "project_url": "https://pypi.org/project/bdajax/", "project_urls": { "Homepage": "https://github.com/bluedynamics/bdajax" }, "release_url": "https://pypi.org/project/bdajax/1.12/", "requires_dist": null, "requires_python": "", "summary": "Ajax convenience.", "version": "1.12" }, "last_serial": 5792329, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "e18f79695820a2ebbd398874a9fe896f", "sha256": "e7da1e57e68612c7bfd7d3b735a3a797e22ca8a638573f65423da876c252c16d" }, "downloads": -1, "filename": "bdajax-1.0.tar.gz", "has_sig": false, "md5_digest": "e18f79695820a2ebbd398874a9fe896f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20683, "upload_time": "2010-12-04T11:15:42", "url": "https://files.pythonhosted.org/packages/71/88/26fb123ea175b2ddb818fddf52dbb6bb7a0541315ece914fdba47f15de7b/bdajax-1.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "c29b5204068b8d4d18fc670e7d659aed", "sha256": "4fa3bc73e807a11b89ba1d85af3b7ab72910f78e5281943eb852aa318cdeb054" }, "downloads": -1, "filename": "bdajax-1.0.1.tar.gz", "has_sig": false, "md5_digest": "c29b5204068b8d4d18fc670e7d659aed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23458, "upload_time": "2010-12-14T09:05:53", "url": "https://files.pythonhosted.org/packages/6c/b2/ea86a23c8348c7018e80047384e6cc54734dd5cdc5c18ed4125968095ebc/bdajax-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "01e33bea175a92afe17de346bb1be270", "sha256": "d75da5def35285d784a9b82988ff8d462cf37bf4f7da8c2450e8518e92843b8c" }, "downloads": -1, "filename": "bdajax-1.0.2.tar.gz", "has_sig": false, "md5_digest": "01e33bea175a92afe17de346bb1be270", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23506, "upload_time": "2011-01-14T11:37:36", "url": "https://files.pythonhosted.org/packages/36/ee/89f3c81b868b94f08b72ac8666a6771ae80467605a8ea3faf0323e35dff8/bdajax-1.0.2.tar.gz" } ], "1.0b1": [ { "comment_text": "", "digests": { "md5": "6516ffe66d3e12ea83219f809f578aa7", "sha256": "9d53430fde27490b6ca642b3c90ec94b273cded4abaf5acfdf68567e64cf50f8" }, "downloads": -1, "filename": "bdajax-1.0b1.tar.gz", "has_sig": false, "md5_digest": "6516ffe66d3e12ea83219f809f578aa7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17293, "upload_time": "2010-05-13T18:29:41", "url": "https://files.pythonhosted.org/packages/b6/71/831a0c8d107c30bd17a45a7a5c8a62e5934f3f7ccce7090b05f22dd2835d/bdajax-1.0b1.tar.gz" } ], "1.0b2": [ { "comment_text": "", "digests": { "md5": "dd7a140849d9afa26157a844f8340e7a", "sha256": "0a155b89b1272c06189710b2b094e8f4ddc4642cf8663f58fd2a526e602a70f8" }, "downloads": -1, "filename": "bdajax-1.0b2.tar.gz", "has_sig": false, "md5_digest": "dd7a140849d9afa26157a844f8340e7a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19834, "upload_time": "2010-07-01T12:05:29", "url": "https://files.pythonhosted.org/packages/81/5c/025bd70342eb31b67472b1f22be4ade1cc4b0fe1c1f74fc67956f832fd3f/bdajax-1.0b2.tar.gz" } ], "1.0b3": [ { "comment_text": "", "digests": { "md5": "3b9f25b54d829ed84fa2ea4e84c348b0", "sha256": "47f8705450f845caf9552b64a2751307b5d602ed8674af6915db44836cee30a4" }, "downloads": -1, "filename": "bdajax-1.0b3.tar.gz", "has_sig": false, "md5_digest": "3b9f25b54d829ed84fa2ea4e84c348b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19988, "upload_time": "2010-07-02T07:52:51", "url": "https://files.pythonhosted.org/packages/7f/70/84f625273e5ce975817b778e925c7233a528456425f6d445f598b00f0de0/bdajax-1.0b3.tar.gz" } ], "1.0b4": [ { "comment_text": "", "digests": { "md5": "1977c9da02d8d1b90219b15feb1f0070", "sha256": "a065676bab8bcd3470ed6bda7076735c9a0a76dd2924928d825166dfc76cd4a1" }, "downloads": -1, "filename": "bdajax-1.0b4.tar.gz", "has_sig": false, "md5_digest": "1977c9da02d8d1b90219b15feb1f0070", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21137, "upload_time": "2010-12-04T10:34:59", "url": "https://files.pythonhosted.org/packages/8f/d0/a67ef177a732aa86c47cff1fd7684f303fa07f1b658f7199a1519de30c58/bdajax-1.0b4.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "540fb9fd885a9890dc7cfdaa35c94d7c", "sha256": "4e20d74213e82fb8494ceaa4f7c0c6b8d10ba26a12f1771721912929b2901bc5" }, "downloads": -1, "filename": "bdajax-1.1.tar.gz", "has_sig": false, "md5_digest": "540fb9fd885a9890dc7cfdaa35c94d7c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25793, "upload_time": "2011-03-28T15:27:52", "url": "https://files.pythonhosted.org/packages/ac/22/c6c48c5cafb28cb652937a55ce2b4fab0ce9ebe9c7beb1408878b39ad283/bdajax-1.1.tar.gz" } ], "1.10": [ { "comment_text": "", "digests": { "md5": "817ac23bc5dfa5dd07d64ce7084e668a", "sha256": "c1775fae99651d12b3a60f1493cf716f79231bc639ea5e6cf5a27d2a7ef219e1" }, "downloads": -1, "filename": "bdajax-1.10.tar.gz", "has_sig": false, "md5_digest": "817ac23bc5dfa5dd07d64ce7084e668a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51665, "upload_time": "2017-09-17T09:57:15", "url": "https://files.pythonhosted.org/packages/27/ee/48de9af94a4f5cdfcc9825f7d2da14ab1c286faaf3ba27daaa566d909d38/bdajax-1.10.tar.gz" } ], "1.11": [ { "comment_text": "", "digests": { "md5": "0b3be566711ac0a642f2b981d4cb45ce", "sha256": "3a362872db76fdd9c6d1ff14beea1e858abf46305dea6a8bb9af732901b8a31d" }, "downloads": -1, "filename": "bdajax-1.11.tar.gz", "has_sig": false, "md5_digest": "0b3be566711ac0a642f2b981d4cb45ce", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51582, "upload_time": "2018-11-07T07:27:36", "url": "https://files.pythonhosted.org/packages/8a/47/486de0ddfaec3ab34dbd66e40fff72a80ccc7bdf96362bca27ab635f671f/bdajax-1.11.tar.gz" } ], "1.12": [ { "comment_text": "", "digests": { "md5": "3dff3de6bd4a904435d223a1ff4ed025", "sha256": "f39cb3ae99aac4ce3b30f2cc7661fc54674d7ea9c74435d2174b1aeaa1e08718" }, "downloads": -1, "filename": "bdajax-1.12.tar.gz", "has_sig": false, "md5_digest": "3dff3de6bd4a904435d223a1ff4ed025", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51685, "upload_time": "2019-09-06T13:42:13", "url": "https://files.pythonhosted.org/packages/7a/3a/041d5e904cf2355fc1473e1165af34ebb460bcd58f8c7455dd9caccf7d27/bdajax-1.12.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "b5cbac96a7043eaab5ec1eed2f6c93c2", "sha256": "0e5747be3f5bd1e9aa6544ac5930a105429eaf8e19a837eb01f4007f384250e7" }, "downloads": -1, "filename": "bdajax-1.2.tar.gz", "has_sig": false, "md5_digest": "b5cbac96a7043eaab5ec1eed2f6c93c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27048, "upload_time": "2011-04-28T09:10:00", "url": "https://files.pythonhosted.org/packages/2a/e7/255b630648b9ac95ac1b6acc8b905701a1beb64756338cc11eda5d7141cc/bdajax-1.2.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "7af3673c1a2fd2b431b18bfd2b1dd43f", "sha256": "c16190b1245930b05bce898233939ef1ba8c576d2933b605aec0f9bc9a64e15b" }, "downloads": -1, "filename": "bdajax-1.2.1.tar.gz", "has_sig": false, "md5_digest": "7af3673c1a2fd2b431b18bfd2b1dd43f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26085, "upload_time": "2011-09-15T07:52:23", "url": "https://files.pythonhosted.org/packages/5d/28/943d782ea05ccc23dd257de9a164c26d8a2d5268ff7d5c224cd33e2e5bde/bdajax-1.2.1.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "61a2de96f8899cf5914344a74d70420d", "sha256": "9af12db2c94958b359ca2a58fe5bdee08dd537b342edbd97d0dae56fe6684fe1" }, "downloads": -1, "filename": "bdajax-1.3.tar.gz", "has_sig": false, "md5_digest": "61a2de96f8899cf5914344a74d70420d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24936, "upload_time": "2011-12-13T15:43:21", "url": "https://files.pythonhosted.org/packages/1f/bf/1baca7f4c9dd1cb31969a521c402b0d4e7d46f81077c8e0568c750d72ed0/bdajax-1.3.tar.gz" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "90f7cccc7b0eaf79e1886a4ad3e14a1e", "sha256": "4306ae4d9cd1611b792fcd391b1e447e1dd9d5960e913a1cf85ff869d7dd3519" }, "downloads": -1, "filename": "bdajax-1.4.tar.gz", "has_sig": false, "md5_digest": "90f7cccc7b0eaf79e1886a4ad3e14a1e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32758, "upload_time": "2012-05-30T11:29:02", "url": "https://files.pythonhosted.org/packages/cf/04/dfbdca3f5c2a51196a7c09d59c3f4cc4f7bf1e42d1d0d7e3aaeacf76c2d8/bdajax-1.4.tar.gz" } ], "1.4.1": [ { "comment_text": "", "digests": { "md5": "b5f2c14fefaebbc3675cffb2e754edaa", "sha256": "d32c991b936fa9d1ffe0ecce111874deb57c4569884e84b3ed0c21d1128c8c3e" }, "downloads": -1, "filename": "bdajax-1.4.1.tar.gz", "has_sig": false, "md5_digest": "b5f2c14fefaebbc3675cffb2e754edaa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26109, "upload_time": "2012-10-07T08:49:03", "url": "https://files.pythonhosted.org/packages/b5/3f/27797db059d318b0a78d31cac6984a950dcb96bda0b8093bd1dd0452b1a0/bdajax-1.4.1.tar.gz" } ], "1.4.2": [ { "comment_text": "", "digests": { "md5": "f4962a223a76f802ee22160a5a88ebdd", "sha256": "62a676f3274f67df1536e34c26fa286e9be35299ab8728888d1befed254b1a0b" }, "downloads": -1, "filename": "bdajax-1.4.2.tar.gz", "has_sig": false, "md5_digest": "f4962a223a76f802ee22160a5a88ebdd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26227, "upload_time": "2012-11-05T20:30:36", "url": "https://files.pythonhosted.org/packages/6f/6a/92c0e3474fae3a2a580826d310e5d13db14830605e3683499c770bd448a2/bdajax-1.4.2.tar.gz" } ], "1.5.0": [ { "comment_text": "", "digests": { "md5": "fd86162162a708a09d046b432bae5625", "sha256": "ac1bef9207a17fe02aad1358d1eff86fb16f4085fd281222e495ed705712e8f5" }, "downloads": -1, "filename": "bdajax-1.5.0.tar.gz", "has_sig": false, "md5_digest": "fd86162162a708a09d046b432bae5625", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37748, "upload_time": "2013-10-08T08:48:32", "url": "https://files.pythonhosted.org/packages/a0/da/23f1d0c7034ae9360d296667de768d47f84561f9aefd7f0f61a4be6455c6/bdajax-1.5.0.tar.gz" } ], "1.5.1": [ { "comment_text": "", "digests": { "md5": "e07ab820dfdd8d8559c854c6695a36d1", "sha256": "3da5fcee8ff7963eee8dd7929ff901edc3829b486521ee61e46c89db54632e03" }, "downloads": -1, "filename": "bdajax-1.5.1.tar.gz", "has_sig": false, "md5_digest": "e07ab820dfdd8d8559c854c6695a36d1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39099, "upload_time": "2014-02-04T17:41:55", "url": "https://files.pythonhosted.org/packages/50/32/cd938528d29e943fde3cb92c496fb0de41495624ae825d93432d5d0b175c/bdajax-1.5.1.tar.gz" } ], "1.5.2": [ { "comment_text": "", "digests": { "md5": "7c71b15b68333e59f381a7827fbe707a", "sha256": "3195fdc28530fbd1c4ae3a68bd36dd288087477df781c860f087ca8013c7fb61" }, "downloads": -1, "filename": "bdajax-1.5.2.tar.gz", "has_sig": false, "md5_digest": "7c71b15b68333e59f381a7827fbe707a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39250, "upload_time": "2014-05-16T15:04:45", "url": "https://files.pythonhosted.org/packages/ab/f0/cb4501fea3487c92657f23e9af8d612ad0be53911c7da9be350c6a2f4dcb/bdajax-1.5.2.tar.gz" } ], "1.6.0": [ { "comment_text": "", "digests": { "md5": "c4bb6219f39d503b8b979bfc29f22fae", "sha256": "ae70fbfb1947cb6352dde7076a47f6163deb8b5808ae93485a08cd5409951e72" }, "downloads": -1, "filename": "bdajax-1.6.0.tar.gz", "has_sig": false, "md5_digest": "c4bb6219f39d503b8b979bfc29f22fae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43064, "upload_time": "2015-06-25T14:03:44", "url": "https://files.pythonhosted.org/packages/3e/79/6da3d74adcc1090d5fa20525e9f7b51eb3bdda284a0caaf57d940400b1b6/bdajax-1.6.0.tar.gz" } ], "1.6.1": [ { "comment_text": "", "digests": { "md5": "d4906fab4c438b92c928ee19e601bb95", "sha256": "d5117b71a46732adfe59f9f74d702c0b2bba257c4e9a3b0da931ce11b155ab01" }, "downloads": -1, "filename": "bdajax-1.6.1.tar.gz", "has_sig": false, "md5_digest": "d4906fab4c438b92c928ee19e601bb95", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42019, "upload_time": "2015-06-27T17:20:18", "url": "https://files.pythonhosted.org/packages/7f/42/99410770b7cdf4e35f6cd585ce59cfe9a70af901d4d8ebc53ade24e9ad69/bdajax-1.6.1.tar.gz" } ], "1.6.2": [ { "comment_text": "", "digests": { "md5": "d412c5660929155e98b00d168fdd1ef7", "sha256": "f03ca5aa8f640c5ecce5ab48371e95f0139369052e2c7b76da2b9c8dcb4e923d" }, "downloads": -1, "filename": "bdajax-1.6.2.tar.gz", "has_sig": false, "md5_digest": "d412c5660929155e98b00d168fdd1ef7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42515, "upload_time": "2015-07-31T09:53:13", "url": "https://files.pythonhosted.org/packages/4b/4c/56510793e9a79a7cb122e9c8e62fca2a2d676d54ebdf838474efd3e016ff/bdajax-1.6.2.tar.gz" } ], "1.6.3": [ { "comment_text": "", "digests": { "md5": "0f3d965065ac27458a7b326dda238284", "sha256": "b9beffa250a9b3b9128661b96cffb7049d7da6642e5477ba45f1bfda7212142f" }, "downloads": -1, "filename": "bdajax-1.6.3.tar.gz", "has_sig": false, "md5_digest": "0f3d965065ac27458a7b326dda238284", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42573, "upload_time": "2015-11-22T08:35:42", "url": "https://files.pythonhosted.org/packages/e2/2d/25e2d3de04c1bec7f94ca02bc5cdef75ac5d5ba7ae47416f0c231463647e/bdajax-1.6.3.tar.gz" } ], "1.7": [ { "comment_text": "", "digests": { "md5": "8cb920ced47f13f420e65439685d21ff", "sha256": "c639eb019994287aec6bd51fdd3f938b636a6ec1f8b8caea49ca2ca1c7fd0587" }, "downloads": -1, "filename": "bdajax-1.7.tar.gz", "has_sig": false, "md5_digest": "8cb920ced47f13f420e65439685d21ff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47765, "upload_time": "2017-03-28T16:18:10", "url": "https://files.pythonhosted.org/packages/3d/04/4dc5ed4103f5cc6827d6d755aaac8c65d27262c4ad314f44b0f7f9be2b52/bdajax-1.7.tar.gz" } ], "1.7.1": [ { "comment_text": "", "digests": { "md5": "b7abe56a81b772285b95226496f2c48b", "sha256": "a862ddc1218d0efb4a28df03b5e91767635524a08bd3b8b04cbd8dd4b9021cb1" }, "downloads": -1, "filename": "bdajax-1.7.1.tar.gz", "has_sig": false, "md5_digest": "b7abe56a81b772285b95226496f2c48b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47970, "upload_time": "2017-03-29T11:45:13", "url": "https://files.pythonhosted.org/packages/b0/28/b65de4410b2958dcec05f78eacb2d2099e26af640e05a9a3c73a96ad16ac/bdajax-1.7.1.tar.gz" } ], "1.7.2": [ { "comment_text": "", "digests": { "md5": "3a4053b9e0e6f127f6e0d65cf5fa9991", "sha256": "b0f848c83f696af5beb5489d7c19bb360b9013b5e440c6ceb73fc1c42274223c" }, "downloads": -1, "filename": "bdajax-1.7.2.tar.gz", "has_sig": false, "md5_digest": "3a4053b9e0e6f127f6e0d65cf5fa9991", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48180, "upload_time": "2017-05-11T12:19:40", "url": "https://files.pythonhosted.org/packages/a0/5b/890a82b676deda1352bcb70692b739d25923c1ab445ae5fe7c235a00e04c/bdajax-1.7.2.tar.gz" } ], "1.8": [ { "comment_text": "", "digests": { "md5": "2a238c15c0ce6c618f788c9ef8406d68", "sha256": "bba9f93107a055fe929ad66436acd1734ec8bab8ada8e2d3f1124ea78d97ae7c" }, "downloads": -1, "filename": "bdajax-1.8.tar.gz", "has_sig": false, "md5_digest": "2a238c15c0ce6c618f788c9ef8406d68", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48887, "upload_time": "2017-05-15T07:17:19", "url": "https://files.pythonhosted.org/packages/39/f2/9a4cec862af6edcb3df0985213bb31d79c5678ec94fedbfdd139ea8b15ba/bdajax-1.8.tar.gz" } ], "1.8.1": [ { "comment_text": "", "digests": { "md5": "e5a77c4234ad592cfd276dce24ff757d", "sha256": "bd11b6d68a1876403519e6bc04530bc19a39bd68d3e10955022381f49416940d" }, "downloads": -1, "filename": "bdajax-1.8.1.tar.gz", "has_sig": false, "md5_digest": "e5a77c4234ad592cfd276dce24ff757d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50183, "upload_time": "2017-07-18T08:20:27", "url": "https://files.pythonhosted.org/packages/40/9b/2b12375edf056495139ed232df0f84ee910c8ff529a815fccf461b2e379f/bdajax-1.8.1.tar.gz" } ], "1.9": [ { "comment_text": "", "digests": { "md5": "d43e0f2b9dc8feecdf1339232892da02", "sha256": "2c18ee3946cb38b04450ac84a5e79a21a199c0e76494f68f352896fcfb73ebbd" }, "downloads": -1, "filename": "bdajax-1.9.tar.gz", "has_sig": false, "md5_digest": "d43e0f2b9dc8feecdf1339232892da02", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50591, "upload_time": "2017-08-28T07:44:51", "url": "https://files.pythonhosted.org/packages/23/17/2dcb0c488bf17fb52decd4c6aee3977216bb2e472ca36d5763f929510880/bdajax-1.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3dff3de6bd4a904435d223a1ff4ed025", "sha256": "f39cb3ae99aac4ce3b30f2cc7661fc54674d7ea9c74435d2174b1aeaa1e08718" }, "downloads": -1, "filename": "bdajax-1.12.tar.gz", "has_sig": false, "md5_digest": "3dff3de6bd4a904435d223a1ff4ed025", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51685, "upload_time": "2019-09-06T13:42:13", "url": "https://files.pythonhosted.org/packages/7a/3a/041d5e904cf2355fc1473e1165af34ebb460bcd58f8c7455dd9caccf7d27/bdajax-1.12.tar.gz" } ] }