For the Cookies you have Prototype.Tidbits on livepipe:
http://livepipe.net/projects/prototype_tidbits/
And I know someone had done Moo's Assets for Prototype, but can't find the link.

Best,
-Nicolas

On Nov 21, 2007 8:35 AM, Mislav Marohnić <[EMAIL PROTECTED]> wrote:
> These are useful, but I don't think most of them deserve their place in core. 
> The ones I'd like to have are:
>
>
> dynamic SCRIPT element
> injecting CSS contentAlso, cookies could make an excellent add-on. Tobie, did 
> you have some code ready for cookie support? I think I can recall you 
> mentioning it several months ago.
>
> - M
>
>
>
>
>
> On Nov 21, 2007 11:29 AM, tbela99 <[EMAIL PROTECTED]> wrote:
>
> >
> > hello all the guys from the prototype core.
> >
> > I really adore what you're doing. it changed the way I was programming
> > javascript for a while. anyway I have some features that will please
> > me if they are incorporated in the prototype.js file.
> >
> > the first is the ability to dynamically load javascript and css into
> > the page. i was looking for a solution a i used script from the google
> > web toolkit, and a few days ago, while inspecting the code of
> > mootools.js (http://mad4milk.net, an MIT-licence library, i saw a
> > class implementing these fonctionnalities.
> > here is the code:
> >
> >
> > /*
> > Script: Assets.js
> >        provides dynamic loading for images, css and javascript files.
> >
> > License:
> >        MIT-style license.
> > */
> >
> > var Asset = new Abstract({
> >
> >        /*
> >        Property: javascript
> >                Injects a javascript file in the page.
> >
> >        Arguments:
> >                source - the path of the javascript file
> >                properties - some additional attributes you might want to 
> > add to the
> > script element
> >
> >        Example:
> >                > new Asset.javascript('/scripts/myScript.js', {id: 
> > 'myScript'});
> >        */
> >
> >        javascript: function(source, properties){
> >                properties = $merge({
> >                        'onload': Class.empty
> >                }, properties);
> >                var script = new Element('script', {'src': 
> > source}).addEvents({
> >                        'load': properties.onload,
> >                        'readystatechange': function(){
> >                                if (this.readyState == 'complete') 
> > this.fireEvent('load');
> >                        }
> >                });
> >                delete properties.onload;
> >                return 
> > script.setProperties(properties).inject(document.head);
> >        },
> >
> >        /*
> >        Property: css
> >                Injects a css file in the page.
> >
> >        Arguments:
> >                source - the path of the css file
> >                properties - some additional attributes you might want to 
> > add to the
> > link element
> >
> >        Example:
> >                > new Asset.css('/css/myStyle.css', {id: 'myStyle', title:
> > 'myStyle'});
> >        */
> >
> >        css: function(source, properties){
> >                return new Element('link', $merge({
> >                        'rel': 'stylesheet', 'media': 'screen', 'type': 
> > 'text/css', 'href':
> > source
> >                }, properties)).inject(document.head);
> >        },
> >
> >        /*
> >        Property: image
> >                Preloads an image and returns the img element. does not 
> > inject it to
> > the page.
> >
> >        Arguments:
> >                source - the path of the image file
> >                properties - some additional attributes you might want to 
> > add to the
> > img element
> >
> >        Example:
> >                > new Asset.image('/images/myImage.png', {id: 'myImage', 
> > title:
> > 'myImage', onload: myFunction});
> >
> >        Returns:
> >                the img element. you can inject it anywhere you want with
> > <Element.injectInside>/<Element.injectAfter>/<Element.injectBefore>
> >        */
> >
> >        image: function(source, properties){
> >                properties = $merge({
> >                        'onload': Class.empty,
> >                        'onabort': Class.empty,
> >                        'onerror': Class.empty
> >                }, properties);
> >                var image = new Image();
> >                 image.src = source;
> >                var element = new Element('img', {'src': source});
> >                ['load', 'abort', 'error'].each(function(type){
> >                        var event = properties['on' + type];
> >                        delete properties['on' + type];
> >                        element.addEvent(type, function(){
> >                                this.removeEvent(type, arguments.callee);
> >                                 event.call(this);
> >                        });
> >                });
> >                if (image.width && image.height) element.fireEvent('load', 
> > element,
> > 1);
> >                return element.setProperties (properties);
> >        },
> >
> >        /*
> >        Property: images
> >                Preloads an array of images (as strings) and returns an 
> > array of img
> > elements. does not inject them to the page.
> >
> >        Arguments:
> >                sources - array, the paths of the image files
> >                options - object, see below
> >
> >        Options:
> >                onComplete - a function to execute when all image files are 
> > loaded
> > in the browser's cache
> >                onProgress - a function to execute when one image file is 
> > loaded in
> > the browser's cache
> >
> >        Example:
> >                (start code)
> >                new Asset.images(['/images/myImage.png', 
> > '/images/myImage2.gif'], {
> >                        onComplete: function(){
> >                                alert('all images loaded!');
> >                        }
> >                });
> >                (end)
> >
> >        Returns:
> >                the img elements as $$. you can inject them anywhere you 
> > want with
> > <Element.injectInside>/<Element.injectAfter>/< Element.injectBefore>
> >        */
> >
> >        images: function(sources, options){
> >                options = $merge({
> >                        onComplete: Class.empty,
> >                        onProgress: Class.empty
> >                }, options);
> >                if (!sources.push) sources = [sources];
> >                var images = [];
> >                var counter = 0;
> >                sources.each(function(source){
> >                        var img = new Asset.image(source, {
> >                                'onload': function(){
> >                                        options.onProgress.call(this, 
> > counter);
> >                                        counter++;
> >                                        if (counter == sources.length) 
> > options.onComplete();
> >                                }
> >                        });
> >                        images.push(img);
> >                });
> >                return new Elements(images);
> >        }
> >
> > });
> > it is very easy to turn it into prototype based script.
> >
> > another great functionnality will be the ability to inject javascript
> > code from an ajax request (not to evaluate it, but to create a
> > <script> element) in the head section. let me explain:
> > if you create a function in a script that is evaluated, using the
> > function will cause an error beacuse the funtion does not exists. but
> > injecting it in the head will make it visible and will no longer cause
> > problem
> >
> > the following code will not work
> >
> > function multiply() { return arugments[1] * arguments[2]; }
> > alert(multiply(2, 3));
> >
> > if you already load a function performing that injection, it will
> > work:
> >
> > injectScript('function multiply() { return arugments[1] *
> > arguments[2]; }');
> > alert(multiply(2, 3));
> >
> > the other thing is the support for cookies (also provided by
> > mootools):
> >
> > the code from mootools
> >
> >
> > /*
> > Class: Cookie
> >        Class for creating, getting, and removing cookies.
> > */
> >
> > var Cookie = new Abstract({
> >
> >        options: {
> >                domain: false,
> >                path: false,
> >                duration: false,
> >                secure: false
> >        },
> >
> >        /*
> >        Property: set
> >                Sets a cookie in the browser.
> >
> >        Arguments:
> >                key - the key (name) for the cookie
> >                value - the value to set, cannot contain semicolons
> >                options - an object representing the Cookie options. See 
> > Options
> > below. Default values are stored in Cookie.options.
> >
> >        Options:
> >                domain - the domain the Cookie belongs to. If you want to 
> > share the
> > cookie with pages located on a different domain, you have to set this
> > value. Defaults to the current domain.
> >                path - the path the Cookie belongs to. If you want to share 
> > the
> > cookie with pages located in a different path, you have to set this
> > value, for example to "/" to share the cookie with all pages on the
> > domain. Defaults to the current path.
> >                duration - the duration of the Cookie before it expires, in 
> > days.
> >                                        If set to false or 0, the cookie 
> > will be a session cookie that
> > expires when the browser is closed. This is default.
> >                secure - Stored cookie information can be accessed only from 
> > a
> > secure environment.
> >
> >        Returns:
> >                An object with the options, the key and the value. You can 
> > give it
> > as first parameter to Cookie.remove.
> >
> >        Example:
> >                > Cookie.set('username', 'Harald'); // session cookie 
> > (duration is
> > false), or ...
> >                >Cookie.set('username', 'JackBauer', {duration: 1}); // save 
> > this
> > for 1 day
> >
> >        */
> >
> >        set: function(key, value, options){
> >                options = $merge(this.options, options);
> >                value = encodeURIComponent(value);
> >                if (options.domain) value += '; domain=' + options.domain;
> >                if (options.path) value += '; path=' + options.path;
> >                if (options.duration){
> >                        var date = new Date();
> >                        date.setTime (date.getTime() + options.duration * 24 
> > * 60 * 60 *
> > 1000);
> >                        value += '; expires=' + date.toGMTString();
> >                }
> >                if (options.secure) value += '; secure';
> >                document.cookie = key + '=' + value;
> >                return $extend(options, {'key': key, 'value': value});
> >        },
> >
> >        /*
> >        Property: get
> >                Gets the value of a cookie.
> >
> >        Arguments:
> >                key - the name of the cookie you wish to retrieve.
> >
> >        Returns:
> >                The cookie string value, or false if not found.
> >
> >        Example:
> >                > Cookie.get("username") //returns JackBauer
> >        */
> >
> >        get: function(key){
> >                var value = document.cookie.match('(?:^|;)\\s*' + 
> > key.escapeRegExp()
> > + '=([^;]*)');
> >                return value ? decodeURIComponent(value[1]) : false;
> >        },
> >
> >        /*
> >        Property: remove
> >                Removes a cookie from the browser.
> >
> >        Arguments:
> >                cookie - the name of the cookie to remove or a previous 
> > cookie (for
> > domains)
> >                options - optional. you can also pass the domain and path 
> > here. Same
> > as options in <Cookie.set>
> >
> >        Examples:
> >                >Cookie.remove('username') //bye-bye JackBauer, cya in 24 
> > hours
> >                >
> >                >var myCookie = Cookie.set('username', 'Aaron', {domain:
> > 'mootools.net'}); // Cookie.set returns an object with all values need
> > to remove the cookie
> >                >Cookie.remove(myCookie);
> >        */
> >
> >        remove: function(cookie, options){
> >                if ($type(cookie) == 'object') this.set(cookie.key, '',
> > $merge(cookie, {duration: -1}));
> >                else this.set(cookie, '', $merge(options, {duration: -1}));
> >        }
> >
> > });
> >
> >
> > in the hope my request will have a positive response, i'll thank you
> > again for all the good job you're doing.
> > > >
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Prototype: Core" group.
To post to this group, send email to prototype-core@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/prototype-core?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to