text:
<ac:macro ac:name="unmigrated-inline-wiki-markup"><ac:plain-text-body><![CDATA[
<ac:macro ac:name="unmigrated-inline-wiki-markup"><ac:plain-text-body><![CDATA[
This proposal is simply an alternative to the Zend_Filter_Input proposal. Bill Karwin and others have put a lot of time and energy into that work, and I'd like to take this opportunity to thank them. This work is built upon those, and I'd like to acknowledge that up front.
This was originally inspired by Christopher Thompson's Zend_FilterChain proposal, and provides a vaguely similar interface. This takes quite a different tact than the array-driven structure used by Zend_Filter_Input; some people may find the code-driven interface preferable. Here's a quick rundown of the major parts:
Zend Framework: Zend_Validate_Builder, Zend_Filter_Builder Component Proposal
Proposed Component Name
Zend_Validate_Builder, Zend_Filter_Builder
Developer Notes
http://framework.zend.com/wiki/display/ZFDEV/Zend_Validate_Builder, Zend_Filter_Builder
Bryce Lohr
0.3 (wiki revision: 50)
Table of Contents
1. Overview
2. References
<ac:macro ac:name="unmigrated-inline-wiki-markup"><ac:plain-text-body><![CDATA[
This proposal is simply an alternative to the Zend_Filter_Input proposal. Bill Karwin and others have put a lot of time and energy into that work, and I'd like to take this opportunity to thank them. This work is built upon those, and I'd like to acknowledge that up front.
This was originally inspired by Christopher Thompson's Zend_FilterChain proposal, and provides a vaguely similar interface. This takes quite a different tact than the array-driven structure used by Zend_Filter_Input; some people may find the code-driven interface preferable. Here's a quick rundown of the major parts:
This proposal is simply an alternative to the Zend_Filter_Input proposal. Bill Karwin and others have put a lot of time and energy into that work, and I'd like to take this opportunity to thank them. This work is built upon those, and I'd like to acknowledge that up front.
This was originally inspired by Christopher Thompson's Zend_FilterChain proposal, and provides a vaguely similar interface. This takes quite a different tact than the array-driven structure used by Zend_Filter_Input; some people may find the code-driven interface preferable.
Here's a quick rundown of the major parts:
3. Component Requirements, Constraints, and Acceptance Criteria
- Zend_Validate_Builder manages exactly one responsibility: validating sets of data in arrays
- Zend_Filter_Builder manages exactly one responsibility: filtering sets of data in arrays
- Zend_Validate_Builder_ErrorManager is responsible for defining and reporting error messages for validators
- Neither component handles any other aspect of form processing
- No mechanism for statically calling filters or validators is provided (out of scope)
- This solution is not designed to make it easier to use single filters or validators; rather, it automates using many filters/validators together on whole sets of data
- This is compatible with the existing Zend_(Validate|Filter)_Interface API; i.e., existing Framework filters and validators will work without being modified
4. Dependencies on Other Framework Components
- Zend_Validate_Interface
- Zend_Filter_Interface
- Zend_Validate_*
- Zend_Filter_*
- Zend_Validate_Exception
5. Theory of Operation
Essentially, Zend_Validate_Builder and Zend_Filter_Builder use the Builder and Composite patterns to construct a recursive tree structure of Zend_Validate_* or Zend_Filter_* instances, which is then applied wholesale to an array of input data. In the case of Zend_Filter_Builder, the result is the original input array after having each of the constituent filters applied to each input array element. In the case of Zend_Validate_Builder, the result is a boolean value indicating whether any single element in the input data was deemed invalid by any of the constituent Zend_Validate_* instances.
In addition to the Builder classes, there are also Zend_Validate_Builder_FluentFacade and Zend_Filter_Builder_FluentFacade. These classes provide a very elegant and easy to use fluent interface to the Builder classes, and their use is totally optional. The Builder classes in no way depend on these.
Error messages are a vital part of data validation. If your code decides that something the user entered is not acceptable, you must be able to tell the user why. The Zend_Validate_Builder_ErrorManager class addresses this concern. It provides a way for the Zend_Validate_* classes, Zend_Validate_Builder, and your application code to define and communicate error messages. The Zend_Validate_* classes all have built-in error messages which, for a variety of reasons, are often not suitable to display directly to users. Therefore, the error messages for validators can be overridden. However, this must be done manually, on each individual instance with the built-in validators. Zend_Validate_Builder_ErrorManager allows you to define all the error messages for any arbitrary set of validators, by data field. This way, you can easily set up each error message for a field, and also easily retrieve any error messages by field for display.
6. Milestones / Tasks
- Milestone 1: [DONE] Design interface and test feasibility
- Milestone 2: [DONE] Write proposal
- Milestone 3: [DONE] Gather feedback and revise design as necessary (done, but more feedback is always welcomed)
- Milestone 4: [DONE] Develop full implementation and unit tests
- Milestone 5: Write documentation (this proposal actually is the current documentation)
7. Class Index
- Zend_Validate_Builder
- Zend_Validate_Builder_FluentFacade
- Zend_Validate_Builder_FluentAdder
- Zend_Validate_Builder_ValidatorFactory
- Zend_Validate_Builder_ValidatorFactory_Interface
- Zend_Validate_Builder_ErrorManager
- Zend_Validate_Builder_ErrorManager_Interface
- Zend_Filter_Builder
- Zend_Filter_Builder_FluentFacade
- Zend_Filter_Builder_FluentAdder
- Zend_Filter_Builder_FilterFactory
- Zend_Filter_Builder_FilterFactory_Interface
8. Use Cases
For all of these use cases, assume that the code shown is extracted from a class that is processing a form, with the intention of saving the data to the database. Assume that methods referenced after $this-> exist and are valid; variables such as $post pretty obviously refer to the user-submitted data. In most of these examples, I refer to Zend_Validate_* classes that don't exist in the Framework. Many of them are available in the Laboratory, along side ZVB and ZFB; as for the others--just assume they exist for now.
Some very basic examples. First, Zend_Filter_Builder:
This filters out all non-digit characters from the phone_no field, and strips HTML tags from the description field. The filter() method takes an array of data, and runs the specified filters on the matching keys.
Next, Zend_Validate_Builder:
Here, the phone_no field is checked to make sure it's numeric, and description field is checked to make sure it's less than 255 characters long. Since the Zend_Validate_* classes will usually fail an empty value, all fields are required by default. The add method takes an optional third argument, which are flags for that specific combination of field and validator. We're passing the OPTIONAL flag for the description field, so Zend_Validate_Builder will skip over it when it's empty, and the StringLength validator will never see it unless it has a value.
Note the phone_no example: the order the validators are added to the field is preserved; that is, the IsNumeric validator will be run before the Between validator. All the validators assigned to a field will always be executed. Therefore, a single field might generate several error messages, depending on how many validators it fails. Since these error messages are built up in the Error Manager object, your application code can decide which errors to display to the user; you need not display all of them.
This demonstrates a little more advanced usage.
Pattern matching:
Specifying the PATTERN flag causes the Builder classes to interpret the field name argument as a PCRE regex to be matched against input field names. The given validator or filter is applied to each matching field.
Validating each field in a list:
Processing arrays of patterns (i.e., array in 2nd parm, with PATTERN flag in 3rd) is currently not supported. However, it is possible (and likely) to be added in the future.
Since this follows the Composite pattern, you can nest validators to do some neat things. In this example, assume we're trying to validate a mailing address. Suppose, for organizational purposes, you structured the form so the mailing address was in a sub-array, something like this:
You could validate this nested structure like so:
If you have a situation where the entire address is optional, you might be temped to pass the OPTIONAL flag to the address field. However, that won't work: when the OPTIONAL flag is set, the Builder checks the value of the current field, and if it's blank, the Builder never calls the validator. Here, the current field would be a six-element array, which will never be considered empty. The elements might be empty, but the array itself won't be. Therefore, the entire address field will always be validated against the sub-validator. In this situation, what you actually need is conditionally optional fields, which requires completely different logic.
Password confirmation, catpcha validation, etc. This uses the PASS_GROUP flag, and a pair of similar validators called Zend_Validate_Equals and Zend_Validate_AllEqual. Zend_Validate_Equals takes a scalar value and compares it to a standard value passed to the constructor. Zend_Validate_AllEqual takes an array, and returns true if all of its elements equal each other. Both of these can be found in the Laboratory, and both optionally support strict type checking, which is false by default. The PASS_GROUP flag allows you to tell the Builder to pass all the fields named in the second parameter as a single array to the validator. This is handy for validators like Zend_Validate_AllEqual, which examine the contents of several fields in the input to decide if they are valid.
Password Confirmation:
Catpcha validation:
In order to handle a situation like the optional address mentioned above, you'd need something like this. This uses another new validator called Zend_Validate_AllOrNone. It allows you to make some fields conditionally required. You pass it a set of fields, and will consider them valid under two distinct cases: if either all of them are empty, or if all of them are filled. If only some are filled, then it considers the set invalid. To get the most benefit from this, combine it with other validators. The example may clarify things a bit. This validator can be found in the Laboratory, with the Builder classes.
Here, the OPTIONAL flag is passed to all the validators after the AllOrNone validator. This is so those validators don't fail the field in the case when the field is omitted (the fields are still opitonal; albeit conditionally optional).
Zend_Validate_Builder and Zend_Filter_Builder really promote composing together validators to do interesting things. Here are some examples that show some of neat things that can be done with custom "Decorator" validators. Keep in mind that a Zend_Validate_Builder instance counts as a validator that can be decorated; if you're creative, you can probably come up with some really cool things to do with this.
Most validators only take a scalar value to isValid. Zend_Validate_Array turns an exisiting scalar validator into an array validator. You pass a validator to the constructor, and an array value to isValid. It will then iterate over all the elements of the array, performing the given validator on each one. Obviously, you could nest these as much as you needed to, provided that you know the structure of the input array ahead of time.
Zend_Validate_AtLeastN and Zend_Validate_AtMostN
These two are decorating array validators. They expect an array passed to isValid, a validator instance passed to the constructor, and check that at least (or at most) n elements in the array pass the validator. This works great with the PASS_GROUP flag when your input data doesn't already have an array in it.
I haven't come up with a good, realistic example for this, but there's a lot of creative potential here. Also remember that you don't have to always use these two together as I have here. All three of these validators are in the Laboratory.
I used to build forms that mimiced my table structure, with the ability to edit multiple records for multiple tables in one form. In this example, assume we want to validate a CRUD form for a simple contact table, but the user can add multiple contacts on the form (with the help of some Javascript in UI). The form fields are laid out in a three-dimensional array, where the first key is the table name, the second key is the row number, and the third key is the field name. It would result in post data that looks something like this:
Assume that the user actually entered several contacts, so the 'contacts' array would have several sub-arrays, one for each record, just like a DB query result set.
Here's how to set up a filter/validator that would process all of the records:
So where have the error messages from all these validators been going all this time? To the Error Manager! This shows how to use the Error Manager both to retrieve raised errors, and define custom error messages.
The Zend_Validate_Interface interface defines the method getMessages, which returns an array of all the error messages raised by the validator, indexed by error code. Zend_Validate_Builder implements this method (albeit, with an incompatible return value), which you can use to retrieve all the error messages that have been raised during the entire validation run. Internally, it delegates this work to the Error Manager; so for retrieving messages, you don't need to touch it directly. You only need to access the Error Manager directly when you want to use it set up custom error messages, or want more control over which errors are returned.
Retreiving errors
Normally, calling getMessages on a validator returns a flat array of error messages. But because the Builder manages a whole collection of fields and validators, it's return value is slightly different. It returns a three-dimensional array, indexed by field name, validator class name, and failure reason code. Say the user entered a value in the name field that was too short:
Of course, if there were other fields and validators that failed, their messages would all be in the returned array, under the appropriate index.
Custom error messages
You can grab an instance of the Error Manager object to set any number of custom error messages for any combination of field, validator, and failure reason code.
The Error Manager provides a hasMessages method, in addition to getMessages. Both of these methods take optional arguments that allow you to filter down to a particular subset of the error messages you might be interested in.
One key benefit of all this is that it allows you to completely separate your error messages from the code that does validation. You could put all your messages in a separate file, or use a Zend_Config object to load all the error messages for a form at once. Among other things, this should make I18N much easier.
Here's one possible way to store errors in an INI file, and set them via Zend_Config. The setTemplates method makes this possible, since it accepts an entire array structure of error messages.
This use case is more real-world. I'm writing a financial system which consists of individual applications for General Ledger, Accounts Payable, Accounts Receiveable, etc., along with some applications, such as Privilege Licenses, which are designed for local governments. These examples are adapted from some of the Privilege Licenses code (obviously, it's not the actual application code).
This is from a form that allows entry of new License Codes. There are quite a few complex validation requirements on this form. The amount and rate_schedule fields are mutually exclusive. There are seven account number fields, where each account number field actually consists of two fields: one for the Entity (Company) and one for the Account Number. Account numbers are only valid by Entity.
The seven account fields have several complex requirements. The Cash and Revenue accounts are always required. The Due To and Due From accounts are required only if the Cash Ent and Revenue Ent are different, or (if given) the Cash Ent and AR Ent are different. If present, the Cash Ent and Due To Ent must match each other, and the AR Ent, Reserve AR Ent, Due From Ent, and Prepaid Ent must all match.
I've omitted all but the validate() method for the sake of clarity.
The fluent interface. This demonstrates the fluent Facade by re-writing UC-07. A lot of the "fluency" of the interface depends quite a bit on the naming of the filter and validator classes.
And finally, the big one, re-written with the fluent Facade. A bit less big now.
|Namespaces and Class names
The factories used by the fluent Facades attempt to find classes by searching through an array of namespace prefixes. If you have filter or validator classes with the same "base name" in two different namespaces, only the first one found will be returned. There's no way to pick which namespace to use on a call-by-call basis. You can easily replace the factories with your own in order to implement different instantiation rules. The standard Builder classes are not affected by this problem.
9. Class Skeletons
|Get the Code!
The full implementation of these classes can be checked out from the Zend Laboratory SVN repository: http://framework.zend.com/svn/laboratory. The source code is in the library/Zend/Filter and library/Zend/Validate directories. The unit tests are in tests/Zend/Filter and tests/Zend/Validate.
May 13, 2007

First of all Bryce thank you for working on this. It's very interesting and I think it could be a good solution. I did put some work into my solution, but if it is scrapped in favor of a better solution I'm okay with that, and I'll know that my work served as a step towards the best solution.

Some initial thoughts:

The fluent interface and the builder patterns are nice. My solution uses a declarative syntax, which I also like, but your interface is more object-oriented and it supports IDE type tools somewhat better.

Your design above makes developers call require_once on every Filter or Validate class that they use. One of the primary objections I saw to the "atomic" nature of having all individual filters and validators is that people don't like the three-step process: 1. require_once, 2. new <class>, 3. calling the call method.

I suppose you could borrow my solution in yours, that is to allow developers to specify a filter or validator as a string as well as an object. Then map the string to a classname within the Zend class namespaces, or in user-specified alternative namespaces. Thus it can load the class and create a new object automatically. It's also easy in your interface that one could specify both the validator class and its constructor args easily:

<ac:macro ac:name="code"><ac:plain-text-body><![CDATA[
$validate->addValidator('description', array('StringLength', 255));

Another feature that is missing from your solution, my solution, and the current set of classes is the ability for the developer to specify validator error messages. This might be outside the scope of your proposal, so I will post a new proposal and get the ball rolling on that feature.

May 13, 2007

Ok, I have begun to write up a proposed solution for the error messages requirement.
http://framework.zend.com/wiki/x/kHM

May 16, 2007

Great, Bryce. I really like your proposal but there is this one little thing I find disturbing:

"The most drastic change to the existing Zend_Validate_* classes that I propose here, is to make them all consider omitted fields valid."

I am strongly opposing to this. This means that if you want to use one validator for one value only , you need to instantiate two validators or use some kind of special case 'if' logic for an empty value in your controllers. This introduces a hidden and unexpected feature to validators and a change for existing applications.

I see a need to omit empty in form processing, yes. But it's not the only case when you use validators. You may wish to validate incoming soap request/response, csv data or anything else where such handling of empty values is just not acceptable.

What I would propose to solve this, is to use some kind of a flag for the builders to tell them how to handle empty elements. Like:

<ac:macro ac:name="code"><ac:plain-text-body><![CDATA[$validator = new Zend_Validate_Builder(Zend_Validate_Builder::SKIP_EMPTY_ELEMENTS)]]></ac:plain-text-body></ac:macro>
May 16, 2007

I see what your saying. I actually didn't consider processing SOAP or CSV, etc. Honestly, I would rather like not to make such a drastic, non-backward compatible change to the existing validators, if there's a better way to acheive the goal.

The reason I came up with that is because, in any given form, there may several required fields and several optional fields. Adding a specific validator to a field that makes it required ensures that even if that field is left empty, it gets caught. At the same time, other fields aren't forced to be required.

How about this: Change the signature of addValidator(), so the third paramter is a more generic flags specification, then allow usage like so:

<ac:macro ac:name="code"><ac:plain-text-body><![CDATA[
$validator->addValidator('my_field', new Zend_Validate_Between(5, 10), Zend_Validate_Builder::OPTIONAL);

Assuming the optional flag would be off by default, and the existing validators retained their current behaviour, this would result in most fields being required by default.

The fluent Facade could theoretically provide special methods for setting the flags, but that would effectively reserve those names so that no validators could ever be added with those names (if they wanted to be accessible through the fluent Facade).

<ac:macro ac:name="code"><ac:plain-text-body><![CDATA[
$validator->my_field->between(5, 10)->optional();

If this sounds good, I'll update the proposal.

May 16, 2007

Fine with me, Bryce. My "solution" was just an example, anyways.

But, what could may not have been clear, my way allows you to use both of the worlds without any bigger changes to interfaces. You can leave the option at a default, which would mean validators would behave like they always behaved; or you could turn the "skip" option at a builder level to skip all empty elements but those which are supplied a Zend_Validate_Required making them, in fact, required.

The effect is exactly the same, so whatever is more convenient for you. Thanks.

May 16, 2007

Oh, OK. I see what you're saying now, thanks for clearing that up. <ac:emoticon ac:name="smile" /> That's a good idea, and a lot easier to implement. I'll go ahead and update the proposal to add this kind of feature.

May 16, 2007

This'll teach me to think before posting... When I went to add the code for this, I realized that the builder-level "skip" option, no matter what form it takes, will never allow you to decide which fields are required/optional on a field-by-field basis, which is what I was alluding to in my first reply.

The problem is that if a Validator is supposed to make the decision about whether a field is required, then the Builder has to pass the value to the Validator, right? But with a Builder-level skip option, the Builder will always skip the empty fields, and the Validators will never see them. I'm not willing to add some kind of class-name check to the code (that would create an unnecessary dependency), so the next best option seems to have a field-by-field flag that specifies whether or not it's required.

May 18, 2007

I was thinking about this today and came up with the following solution.

<ac:macro ac:name="code"><ac:plain-text-body><![CDATA[
public function requiredFields($fields = array())
$this->_requiredFields = $fields;
function isValid()
$valid = true;
foreach($this->_requiredFields as $field)
$value = $this->_dataSet[$field];
if ($value == '')Unknown macro: { call_user_func($this->_errorCallback, 'ZEND_VALIDATE_BUILDER_REQUIRED', $field, $value); $valid = false; }
foreach ($this->_validator as $field => $validator_list)
$value = $this->_dataSet[$field];
if ($value != '')
foreach ($validator_list as $validator)
if ($validator->isValid($value, $field))Unknown macro: { $this->_data[$field] = $value; }
elseUnknown macro: { $valid = false; }

To sum it up, required fields are declared using the "requiredFields" method. These fields are checked prior to traversing through all the validators with the Zend_Validate_Builder triggering the error callback. The validator rules, on the other hand, are only run on fields that contain input, otherwise they are skipped.

This approach solves the need for Zend_Validate_* to return true on empty strings.

thoughts? opinions?

May 19, 2007

With regard to needing the validators to pass empty strings, I beleive that requirement is no longer necessary with the current version of the propoasl, as it stands. As I mentioned on the mailing list, I thought more about it, and realized that just having the OPTIONAL flag did in fact work as expected. As soon as I can, I'm actually going to start writing some unit tests for this stuff so I have more than just speculation to back my words up. <ac:emoticon ac:name="smile" />

Separately specifying the required fields is a pretty good idea on its own, though. Of course, I'd rather not change the API any more than I have to, but I can see how it would be nice to have an explicit, specific error raised when a required field is missing (as opposed to "'' is not an integer", for example).

May 16, 2007

Great.I like your proposal very much.It is much better if it can work with Zend_Config component.

May 16, 2007

It already works with Zend_Config, in a manner of speaking. Zend_Validate_Builder takes an options array as the second argument to the constructor, which can easily be set via Zend_Config:

<ac:macro ac:name="code"><ac:plain-text-body><![CDATA[
$config = new Zend_Config_Ini('path/to/file.ini');
$validate = new Zend_Validate_Buidler(null, $config->asArray());

If you're talking about adding validation rules via Zend_Config, that's a little different. It's actually a pretty good idea. It would be relatively straight-forward to build another Facade on top of Zend_Validate_Builder whose job was just to take a Zend_Config object and add a bunch of validators with addValidator().

If enough people chime in and say they want this feature, we could add it to the proposal.

May 17, 2007

If you're talking about adding validation rules via Zend_Config, that's a little different. It's actually a pretty good idea. It would be relatively straight-forward to build another Facade on top of Zend_Validate_Builder whose job was just to take a Zend_Config object and add a bunch of validators with addValidator().

I'd love to see it - but I don't want to throw in too many requirements until the basic interface has settled in.

Other than that my only comment would be the error handling. I've commented over on Bill's error messages proposal so no point repeating it here. I suppose the guts of my argument is that I don't want the controller defining and manipulating errors. I would prefer if the Controller treated the main Validation object more like a Model, querying for error messages which which were defined at the setup stage. Most of my error messages are going to be accompanying the Validation rules in a config file (likely XML) so everything is centralised. They should all be using the sprintf style placeholder syntax so Rule values/params can be integrated into them (or their translations) easily.

May 17, 2007

I think we're both in agreement about error messages being in the Controller – I want them to live somewhere else, as well.

I currently use my own ErrorCollection class, whose error messages have sprintf paramters in them, so I'm definitely with you on that point.

Have another look at the handleError() method in UC-07. In the comment above that message, I touch on what could be with it. You can't tell it from that method, but the $this->errors->raise() method takes a third argument, which is an array of values to be passed through sprintf into the error message.

You can see how you can have your own error manangement class that does a similar thing: read in th error messages from a DB table, a config file (even the same one the validators are defined in), etc. Anything you want that can map a field name and reason code to an error message will work. And you also get the field value, as well (which may theoretically be an array, depending on the validator).

May 19, 2007

UC-07 is now UC-08.

May 21, 2007

A couple of comments:

1.) Adding "field" to the Zend_Validate_? isValid interface is making less sense to me now than when I originally read the proposal. When you think about what the purpose of the Zend_Validate_? class you realize that "field" does not make sense in the context of if a value is valid or not. The only purpose of "field" is for the error callback. Why don't we move that responsibility to the Zend_Validate_Builder? All the Zend_Validate_? classes need to do is provide the reason(s) code for the failure. The Zend_Validate_Builder should be able to take that error code, the field, and the value and call the corresponding error callback.

2.) Another problem that I see with this current implementation is that Zend_Validate_Builder has artifically imposed that the Zend_Validate_? classes all receive a single scalar value to validate. I'd like to propose a change so that the following call:

addValidator(array('name', 'address', 'city', 'state', 'zip'), Zend_Validate_AllOrNone());

would send an array of input comprised of (name, address, city, state, zip) to the validator Zend_Validate_AllOrNone as opposed to the current implementation which would add the Zend_Validate_AllOrNone to the validator chain for all the fields specified.

The benifit of such a change would allow developers to build custom Zend_Validate_? classes that could perform very complex form validation.

May 22, 2007

About point #2, Zend_Validate_Builder doesn't actually force the validators to receive scalars; if the value of a field is an array, it will just pass the array as-is to the validator (see the proposed Zend_Validate_Array class). Ironically, when I first thought up this thing, I wanted the grouping functionality to pass the entire group as an array to the validator, just as you described here. But at that time, I couldn't really figure out how to implement that and the other stuff, like globbing and nested validators, without it getting really complicated. So I opted to simplify it.

As for point #1, I conceptually agree with you; the field name parameter has little use outside of the Builder. Right now the code for Zend_Validate_Builder is quite simple, but making the Builder take over dealing with all of the errors will obviously make it quite a bit more complicated. So, I'm not really against making this change, but it's a lot of work to add.

These are good ideas. I don't have time at the moment to analyze it any further (I still haven't put together unit tests), but hopefully I will in the next few days. Of course, I'd always welcome seeing some code. <ac:emoticon ac:name="smile" />

May 24, 2007
<ac:macro ac:name="note"><ac:parameter ac:name="title">Zend Comment</ac:parameter><ac:rich-text-body>

This proposal is a powerful solution for many use cases regarding running multiple filters and validators against multiple inputs. However, it still has some maturation to go, and the bottom line is that the proposal came in too close to our deadline to make it into Zend Framework 1.0.

We would like to offer you space in the Zend Framework Laboratory to continue exploring this solution. Specific comments we have are:

Some of the individual filters and validators you mention tangentially in this proposal are interesting and could be useful independently of the Builder proposal.

On the other hand, some other validators proposed (e.g. Zend_Validate_Switch) have too much coupling between the class and the data representation.

Altering the method signature for isValid() to accept a field name creates coupling between the class and the data representation.

The user requirement to be able to instantiate filters/validators without use of require_once and new for each class has not been satisfied in the Builder class. The FluentFacade class does this, but the usage is confusing and feels like a duplicate solution to the same problem (even though it utilizes the Builder class).

The user requirement to store filter/validation rules as data has not been satisfied in this proposal. If one stores filter/validation rules in a config file, one needs to implement an additional solution (a "Builder Builder") to convert config data into a validation Builder class.

The usage of error callbacks is not clear, and also this solution requires a developer to write more code. Our feedback suggests that people want to write less code.

Overall, this solution is very powerful and follows object-oriented principles and design patterns faithfully – but it does so to its own detriment. Simple scenarios require too much application code to set up. The proposed design therefore doesn't satisfy the Zend Framework goal of "extreme simplicity". This goal of ZF to be simple is a higher priority than the goal of OOP purity.

Aug 07, 2007

This proposal is now updated to its second version. I believe that the majority of issues raised above have been dealt with, particularly with respect to API compatibility.

With regard to "The user requirement to store filter/validation rules as data", I have made the design decision in this code to deliberately push that off to user-land code. The reasoning is that the Builder-style API makes creating such a solution very straight-forward, and frees this code up to concentrate on its core functionality.

Also, this version of the proposal includes Factory classes that may be used to instantiate Filters and Validators without having to require_once/new them individually. Once you have an instance of a Factory, you can easily create many filters and validators. These Factories are independent of the Builder classes, so they may be used in a variety of situations. Also, they may easily replaced by the user.

May 30, 2007

What about To add an addValidators() method which can take a config array as an argument :

$validators = arrays ( 'phone_no' => 'Numeric',

'phone_no' => array('Between',false,1000000, 9999999)),

'description' => array('StringLength', true, 255)

$validator = new Zend_Validate_Builder;

$validator->addValidators($validators);

if ($validator->isValid($post)){

// do your stuff

}

I'm more in favour of an error object instead of a callback function.

Otherwise I like your proposal.

Oct 03, 2007

I like your second revision specially the Error Manager who makes live really easier on i18n issues.

I have a couple of suggestion though. But well, you probably not gona like them as they break OO purity <ac:emoticon ac:name="smile" />. But it's why I like ZF, it's is good trade-off between OO and Simplicity.

Error Manager

Is it possible to cut down the method signature of Zend_Validate_Builder_ErrorManager setMessage() to setMessage('name', 'Zend_Validate_StringLength::TOO_SHORT', 'Name must be less than %min% characters long.') instead of setMessage('name', 'Zend_Validate_StringLength', 'stringLengthTooShort', 'Name must be less than %min% characters long.')

Zend_Validate_Builder_ErrorManager::getMessages() and Zend_Validate_Builder_ErrorManager::getErrors() are confusing regards to the same methods in Zend_Validate_Interface may be Zend_Validate_Builder_ErrorManager::getMessageTemplates() or Zend_Validate_Builder_ErrorManager::getRawMessages() would be more appropriate and lese confusing.

For the shake of simplicity It would be good to have the possibility to add a error message with Zend_Validate_Builder ::addValidator. Separation of concern between the view end logic is a best practice but this kind of component is a bit in-between the two world.

I first thought that your class could be totally Locale aware but it's probably better to left it to Zend_Validate_*

Nested structure

For validation of nested structure instead of inner and outer would it be possible to do something like:

<ac:macro ac:name="code"><ac:plain-text-body><![CDATA[
$validator->addValidator(array('address/addr1', ' address /city'), $string100);
$validator->addValidator(array(''address/addr2', ''address/addr3'), $string100, Zend_Validate_Builder::OPTIONAL);
$validator->addValidator(''address/state', new Zend_Validate_InArray($states));

About require fields

It seams to me that in a form, most of the time, there is more optional fields than required one. I suggest that the default behaviour of Zend_Validate_builder be all fields are optional or best as suggest by Michael Minicki the default behaviour could be defined by an option argument in the constructor.

Factory

I don't like the factory to instantiate filters/validators it's to much tapping and hard to read. I really prefer to specify a validator as a string as in other framework's components.

Config

It is probably easy to implement, but providing it, give a standard way of doing thing which I think is one of the goal of the framework.

My $0.0001

Oct 05, 2007

Thank you for the comments!

About your ErrorManager points, in order:

Yes, this can be shortened. This is a good idea, thank you! It would also cause all the methods that took the 3 filter parameters to be changed.

I don't really like the Zend_Validate_Interface for getErrors() and getMessages(), so I did it this way because it makes more sense to me. But I'd be willing to change it; I'm not attached.

If I did add a parameter to ZVB::addValidator() for an error message, it would have to be the 4th parameter; it already uses 3. Since the 1st parameter can be an array or a pattern string to match multiple fields, dealing with the error message parameter starts to get messy. Do you pass arrays to the 4 parameter, just duplicate the single message, or what? How about patterns matching variable fields? It becomes much less simple that it first appears, even for the user (let alone implementation).

One of the main points of this class is to help localization, so I'm not quite sure what you mean. I think if it's left to anything, it should be the application, not Zend_Validate_. This class is trying to relieve Zend_Validate_ of that responsibility (one that I don't believe it should have in the first place).

Nested structures:

Using sort-of "paths" like that is an interesting idea. I can't really see how it could be implemented right now, though. I could very possibly just not have enough brains for that. <ac:emoticon ac:name="smile" /> But I'll consider it. I don't know if you had any time to look at the actual implementation, but it's really very simple. There's not much code to it, but that very simplicity makes it hard to do stuff like this path thing, since the moving parts really don't have the right info available at the right times.

One of the things I really wanted to do was to provide a flag (3rd parm) so that the array passed to the first parm of addValidator() was passed as a whole to the given validator. Then you could do this:

<ac:macro ac:name="code"><ac:plain-text-body><![CDATA[
$zvb->addValidator(array('password1', 'password2'), new Zend_Validate_Equals);
// Assume Zend_Validate_Equals takes an array and returns true if all the elements are equal

That would drastically reduce or eliminate the need for nested Builders in the first place. And it would really convenient. However, implementing that just isn't feasible with the current simple architecture I used (it could very well triple the code size).

Required Fields:

Most of the forms I build have more required than optional fields. <ac:emoticon ac:name="smile" /> But adding a configure option for this would not be too hard. Another good idea!

Factory:

I don't like typing long names any more than anyone else, that's why I added the Fluent Facade. It hides the Factory and other stuff behind a nice, short, easy to remember, easy to type API. You effectively get to specify the names as strings that way. It would be fairly easy to change addValidator() to take a string in the 2nd arg, and run it through the Factory, but then you loose the nice type hinting, and given the Fluent Facade, doesn't really seem all that necessary. It's an idea worth considering, though.

Config:

It pretty much is already built in; that's what ErrorManager:setMessages() (note the plural) is for. You can do a toArray() on a config object straight into this. It's two lines of code, and in the doc comment as an example. I guess a convenience method could be added to take a config object and run the two lines of code...

Thank you again for the input! I'll probably update the API and this proposal in the near future to incorporate some of these ideas.

Oct 05, 2007

Note that I forgot to escape the asterisks in the randomly bold part of the line above... <ac:emoticon ac:name="smile" />


text:
In this section, you can search all our contents under the different periods of art history in Spain, including Baroque, Gothic, Mudéjar, and many more.
In this section you can search among all our contents by topic to find the different resources available in Spain, such as museums, routes, destinations, monuments and many, many more.
This section provides access to all the contents in a personalised way, according to your own particular interests and socio-demographic profile.
This section provides access to the contents in each autonomous region by browsing through maps.
There are no results
Save time and effort
All cultural resources at a glance

subset: commoncrawl


text:
Tall Twill Fitted Straight Leg Pants in Julie Fit
Tall Twill Fitted Straight Leg Pants in Julie Fit
$64 .88
Online Exclusive
 Done in our beautifully fluid, thicker weight twill—that drapes with the perfect amount of structure, every time—this have-to-have pair flaunts a slimmed down straight leg that narrows at the ankle, for clean-cut sleek. Our curvy fit, fits narrow at the waistband with a slightly curved shape at hips. Front zip with hook and bar closure. Wide belt loops. Besom coin pockets. Back button through besom pockets. 33 1/2" inseam.
Style #336434
47% Polyester, 47% Rayon, 6% Spandex
Machine Washable


text:
Baldwin 85350.RENT Right Handed Manchester Single Cylinder Handleset with Wave Interior Lever and Emergency Egress Function
The classic look of the Manchester handleset calls up images of rolling gardens, and the welcoming entrance of a stately English manor. With beauty and an attention to detail that is hard to miss, this handleset is sure to brighten your doorway! The single cylinder lock locks and unlocks on the outside with a key, and from the inside with a push turn. The emergency egress function allows the latch and bolt to be retracted at the same time by pulling the inside lever. The bolt will remain unlocked until locked with key or push turn.
- Grade 1 ANSI Rating
- Specially-designed reinforcing strike constructed of high grade steel for ultimate strength and durability
- The cylinder housing is protected with a free-turning exterior cylinder guard fabricated from solid brass to resist gripping or twisting
- Made of solid forged brass for a difference you can feel.
- Polished and Finished By Hand!
- Finishes match those of other Baldwin products for unity of design.
- Solid forged construction is done in the centuries old European tradition!
- Baldwin products features the highest quality and craftsmanship that has been respected for generations.
Additional Baldwin Links
- View Manufacturer Warranty
- Shop All Baldwin Products
- Shop All Baldwin Manchester Collection Products
Our SKU: Baldwin 85350.RENT
This product is listed under the following manufacturer number(s):
- Baldwin 85350151RENT
Antique Nickel
- Baldwin 85350452RENT
Distressed Antique Nickel
- Baldwin 85350402RENT
Distressed Oil Rubbed Bronze
- Baldwin 85350412RENT
Distressed Venetian Bronze
- Baldwin 85350003RENT
Lifetime Polished Brass
- Baldwin 85350055RENT
Lifetime Polished Nickel
- Baldwin 85350056RENT
Lifetime Satin Nickel
- Baldwin 85350031RENT
Non-Lacquered Brass
- Baldwin 85350102RENT
Oil Rubbed Bronze
- Baldwin 85350260RENT
Polished Chrome
- Baldwin 85350190RENT
Satin Black
- Baldwin 85350050RENT
Satin Brass and Black
- Baldwin 85350264RENT
Satin Chrome
- Baldwin 85350150RENT
Satin Nickel
- Baldwin 85350112RENT
Venetian Bronze
*Denotes a finish or option that has been discontinued
Manufacturer Resources
Installation Resource Center
Whether you are installing the product yourself or hiring a professional, our installation Resource Center has everything you need to get your project done. Visit the Installation Resource Center to get started.


text:
In Phases I and II of the Historic Resources Survey, a number of properties in the Downtown Master Plan area were identified as meriting historic designation. Phase II of the Survey also identified an area with a concentration of designated properties and suggested designating it as a new "East End" historic district. The City is currently contacting property owners to find out whether there is public support for designating additional historic landmarks or the potential historic district.
At the September 17, 2013 Historic Preservation Commission meeting there will be a presentation about the possibility of designating the new historic landmarks and district, immediately followed by a public information meeting. You are invited to meet with City staff members, view maps, receive take-home information, and ask questions. Please refer to the Historical Resource Survey page for more information.
For questions concerning this project, contact Senior Planner Joelle Jordan at 512-218-5422, or at the Department of Planning and Development Services, 301 W. Bagdad Avenue, Suite 210. Para información en español por favor llame al 512-218-5428.


text:
Elizabeth Angrnaqquaq
Canadian, 1916–2003
Untitled, 1981
wool felt, embroidery floss, cotton thread on wool duffle
66.5 x 97 cm
Collection of the Winnipeg Art Gallery
Fabric-collage wall hangings have been a distinctive art form in the Kivalliq community of Baker Lake since the early 1970s. Materials were often obtained by visiting art advisors Jack and Sheila Butler. Angrnaqquaq was one of the first women to use sewing skills to make fabric pictures instead of clothing. Her work has been shown in many group exhibitions since 1976, and she has had three solo exhibitions. Her style is distinctive as she uses the herringbone stitch almost exclusively. The stitches are adjusted to convey the varying textures of fur, feathers, moving water, and Arctic plants. In the WAG work the figures, as well as the spaces between them, are covered with stitches. Combined with a palette of lush colours, Angrnaqquaq's landscapes vibrate with energy.
Gallery Hours
- Tuesday 11am-5pm
- Wednesday 11am-5pm
- Thursday 11am-5pm
- Friday 11am-9pm
- Saturday 11am-5pm
- Sunday 11am-5pm
- Closed Monday
Open on the following days:
- Victoria Day
- Canada Day
- August Civic Holiday
- Labour Day
- Remembrance Day (open 1-5pm)
- Christmas Eve (close at 2pm)
- Boxing Day
- New Year's Day
- Louis Riel Day
- February 23 (open at 2pm)
- Easter
Closed on the following holidays:
- Good Friday
- Easter Monday
- Thanksgiving
- Christmas Day


text:
ChromaTemp is quality liquid tempera formulated for posters, windows, and crafts. Will not settle or separate. Brilliant, vibrant, and opaque colors are all intermixable and clean up with water. Some colors are also available in metallic or fluorescent. Use with brushes, rollers, fingers, or a sponge. High quality, pigment rich ChromaTemp is designed to be used full strength. Non-toxic CP seal-approved. Packaged in unbreakable plastic bottles.
Ask a question about ChromaTemp Artists' Tempera Paint Ask a question about this product
Average User Rating: Based on (9 Reviews)
5 9
cwb from raleigh,nc says:
I think the Chroma brand is my favorite paint of temperas. I use it to teach seniors in assisted living, and have used this paint for more than five years. The results are very satisfactory to the painters....[more]
Please wait...
You May Also Like...
How to get VIP Club Prices
Anyone can be a VIP Member with:
Only $25/year
Ask a Question About ChromaTemp Artists' Tempera Paint
Your email will not be shared. We will only use your email address to respond to your question. When asking your question, please be as descriptive as possible, it will allow us to give you the most accurate answer possible.
Please wait...
Please wait...


text:
Home » Sports » Basketball » Celtics/NBA
February 16. 2013 2:18AM
Bonner takes his (3-point) shot tonight; viewing party in Concord
San Antonio Spurs forward Matt Bonner (15) shoots during the second half against the Brooklyn Nets at the AT&T Center on Dec. 31. The Spurs won 104-73. (Soobum Im-USA TODAY Sports)
The Concord native and San Antonio Spurs forward will participate in the Three-Point Contest, which is scheduled to follow the Skills Challenge and precede the Slam Dunk competition.
Coverage begins at 8:30 p.m., so expect Bonner to start hoisting up shots sometime after 9.
Also, the Red River Theatres in Concord will host a viewing party. Admission is free, but there is a suggested $5 donation to Bonner's "Rock on Foundation."
- Should public schools in NH provide students with firearms safety instruction?
- Yes
- 65%
- No
- 35%
- Total Votes: 1958


text:
Ballet Ribbon Glassware
Ballet Ribbon Wine Goblets 20.1oz / 570ml
Out of stock
On Sale
Set of 2
Ballet Ribbon Glassware
The elegant Ballet Ribbon glassware collection from Waterford Crystal glassware makes the perfect glassware gift. This selection of handmade glasses, including handmade wine glasses, handmade champagne glasses, handmade tumblers and handmade carafe is finished with a beautiful swirl design.
Packaged in a gift box, the Ballet Ribbon glass collection includes Ballet Ribbon Tumbler Glasses, Ballet Ribbon Wine Goblets, Ballet Ribbon Champagne Flutes and Ballet Ribbon Carafe. Our range of Waterford wine glasses, Waterford champagne glasses, Waterford tumblers and Waterford carafes are available with fast UK delivery on our next day delivery service so you can have your crystal wine glasses, crystal champagne glasses, crystal tumblers or crystal carafe in no time.


text:
Pivotal SQLFire
Pivotal and VMware are partnering to deliver well-managed, agile and secure data and application infrastructure for VMware environments across public, private and hybrid clouds. Pivotal SQLFire, formerly known as VMware vFabric SQLFire, is now part of the Pivotal portfolio of products.
How to buy Pivotal SQLFire
Pivotal SQLFire Community Edition is FREE for developers
Developers writing applications that incorporate Pivotal SQLFire Community Edition can do so at no charge with a 3 server process limit, 12 core max limit and without wide-area network caching (WAN) capabilities. The Community Edition can be deployed in production with purchase of flat fee SnS.
Pivotal SQLFire has one commercial edition:
- Pivotal SQLFire Enterprise Edition
Pivotal SQLFire Enterprise Edition enables all capabilities of the product to manage relational data in SQLFire including Global WAN connectivity. A license is required for each node that joins a SQLFire Cluster.
|Product Purchased
|Perpetual License
|Pivotal SQLFire Enterprise Edition
|Cross Cloud (Per Core or vCPU or Amazon ECU)
Retail pricing for U.S. editions of Pivotal SQLFire is shown here.
|Price with Production Support (USD)
|Price with Basic Support (USD)
|Pivotal SQLFire Enterprise Edition – Cross Cloud (Per Core or vCPU or Amazon ECU)
Note: Retail pricing is for reference purposes only and is subject to change without notice. Pricing is suggested retail price for sales in the United States. Regional prices may vary. For detailed pricing, contact a reseller or Pivotal expert.
VMware offers a choice of support levels:
- Production Support entitles customers to 24/7 support.
- Basic Support entitles customers to 12/5 support.
Optional developer-only support is also available: https://www.vmware.com/support/services/vfabric-developer.html
*VMware Internal Study, April 2012. Results available upon request.


text:
Enthesitis-related juvenile idiopathic arthritis
Other Names for this Disease
- Enthesitis related arthritis, juvenile
- Juvenile enthesitis-related arthritis
News & Events
ORDR Co-Sponsored Conferences
The Spectrum of Caregiving and Palliative Care in Rare Diseases, Tuesday, June 09, 2015 - Wednesday, June 10, 2015
Location: NIH Natcher Conference Center, Bethesda, MD
Description: The findings and recommendations resulting from the Workshop will provide guidance to the extramural community as well as to NINR and other Institutes, Offices (e.g., ORDR), and agencies in developing strategies for advancing the science of palliative care and caregiving in rare disease and research programs. It is anticipated that a funding opportunity announcement will result from the Workshop.
- Enthesitis related arthritis, juvenile
- Juvenile enthesitis-related arthritis


text:
Deuter Packs
ACT Lite 65+10 Backpack
In Stock Product Number: 21246
These athletic, sleek packs remain true to their lightweight credentials: with their minimal weight and purist, technical look, the ACT Lite models are good-looking, light, yet reliable companions on any tour. Twin lid buckles and a stretch front compartment provide more options to store all your kit. Front gear loops also mean you can easily attach a sleeping mat to the outside. The slimline body of the pack and the compact hip belt allow plenty of freedom of movement when trekking or mountaineering. The SL models offer sportswomen best in class carry comfort, thanks to the narrower SL shoulder straps with their double 'Soft-Edge' trim and conically shaped hip fins.
* This product does not qualify for shipping to all countries.
Gender: Unisex
Weight: 3 lb 14 oz
Material: Deuter-Ripstop 210, Deuter-Duratex-Lite
Dimensions: 31 x 14 x 13" / 80 x 36 x 33 cm
Volume: 4550 cu in / 75 L
Suspension: AIRCONTACT Back System, VARIQUICK
Torso: Adjustable, 15-21"/ 38-53 cm
Season: S14
Vendor ProductId: 43770
Review ProductId: 21246
REVIEW SNAPSHOT®by PowerReviews
- Great value (3)
- Lightweight (3)
- Well constructed (3)
Best Uses
- Was this a gift?:
- No (3)
Reviewed by 3 customers
Sort by
- Compressible
- Durable
- Great Value
- Lightweight
- Stuff-able
- Versatile
- Well Constructed
- Brain Does Not Detach
Best Uses
- Backpacking
- Outdoors
- Recreation
- Trail Work
Comments about Deuter Packs ACT Lite 65+10 Backpack:
When I bought the pack my greatest concern was cost, so I bought this pack because it was the least expensive pack that would do what I needed. Since then I have been backpacking in Colorado, and California as well as locations in the Chattanooga area and I have been nothing but impressed with the Deuter ACT lite 65+10. It is both stuff-able and compressible making it useful for a wide variety of activities. The thick lightweight ripstop nylon that it's made of provides durability and rain resistance making it perfect for long treks or exploration. There are many pockets to make it easy to organize your equipment, and keep necessary items close at hand. The construction of the rest and shoulder straps allow airflow to prevent sweating so I can hick more comfortable and don't have to worry about any offensive odors - which is nice if you hike with friends or a girlfriend like I do. I love my pack, and honestly could not imagine using another, and I totally recommend it to everyone and anyone.
- Was this a gift?:
- No
- Cool in steamy weather
- Great Fit Comfortable
- Great Value
- Lightweight
- Well Constructed
Best Uses
Comments about Deuter Packs ACT Lite 65+10 Backpack:
This is my second year with this pack. Used it from hot humid MidAtlantic conditions to blowing snow. Excellent easy to adjust suspension system, much cooler than any of the 10+ packs I have used over the years. When properly adjusted nice and stable for off trail use. Only wish the stretch outer pocket were a tad bigger, but still a 5 star rating.
- Was this a gift?:
- No
- Cool
- Durable
- Great Value
- Lightweight
- Minimal contact with back
- Well Constructed
- Buckles seem fraglie
- Hard to balance pack
- Xtra lean if off balance
Best Uses
- Backpacking
- Overnight
Comments about Deuter Packs ACT Lite 65+10 Backpack:
Love the pack after a 2day trip. It feels great on the back. If you don't take the time to balance the pack well it may tend to lean more due to the design. Less back contact means less friction and heat but that can translate into slightly less wobble/lean stability. Other than that and the fragile buckles it's amazing. This is the best pack I've ever owned. I wouldn't use it for canyoneering because it'd hold water quite well if submerged. At least, it seems like it would.
- Was this a gift?:
- No


text:
Kevin Ding's series of 10 things each Lakers player could've done for the team to win a third consecutive NBA championship. This installment: Kobe Bryant.
Comments are encouraged, but you must follow our User Agreement
Keep it civil and stay on topic. No profanity, vulgarity, racial slurs or personal attacks. People who harass others or joke about tragedies will be blocked. By posting your comment, you agree to allow Orange County Register Communications, Inc. the right to republish your name and comment in additional Register publications without any notification or payment.


text:
a food used during early morning sex. when there is only one, you bite, chew, make out, regurgitate into your partners mouth, take another bite, lather, rinse, repeat.
no one knows how they can waffle so early in the morning, they believe the stamina is in the hot pocket
por yourmomeatswaffles 02 de Abril de 2007
The act of shitting inside a fold-out couch and then re-closing it, leaving it for an unsuspecting guest. (see similar terms: "upper-decker", "mexican waffle", "trunk muffin")
That drunk guy that slept over last night left us a hot pocket.
por Sam F 23 de Março de 2005
1. The most delicious form of evil. It tastes, looks, and smells good, but you practicly die of burns when you take a bite if you don't wait 5 minutes.
-What happened to your face?! Its all...charred!
-I had hot pockets last night.
-I had hot pockets last night.
por Ricky 27 de Fevereiro de 2004
name for a pastry that took after the pop tart. except it is filled with nasty meat. It can only be served 2 ways;
1. Warm outside, frozen inside.
2. boiling lava hot, will destroy your mouth.
usually given to patients suffering from constipation.
1. Warm outside, frozen inside.
2. boiling lava hot, will destroy your mouth.
usually given to patients suffering from constipation.
Hey Travis, would you like a hot pocket?
por Eric Franz 15 de Janeiro de 2007
White man who wears a red hat and is an ass hole
Go fuck yourself hot pocket!
por Aleksander12 15 de Fevereiro de 2014
When a girl is going down on a guy and his balls start kickin right before he's about to cum, you shove his balls in his anus and yell "HOT POCKET!"
"I'm about to cum..."
(She shoves his ballsac into his anus)
(She shoves his ballsac into his anus)
por PTSpice 06 de Julho de 2009
When the person you have sleeping over shits in your fold out sleeper couch, doesn't clean it up, and folds the couch back up without telling you.
I'm not friends with Rob anymore.
He made a hot pocket with my fold out couch.
He made a hot pocket with my fold out couch.
por xJcalx 16 de Abril de 2010
Prison term: two pieces of white bread with mayonnaise smothered in between. The mayo sandwhich is then placed in the microwave to heat it up so it resembles a woman's vagina. It is then fucked.
When I got done with my hot pocket I gave it to mikey. He likes it! Hey Mikey!
por berserker256 18 de Maio de 2003
- ← Anteriores
- 1
- …
- 19
- Próximos →


text:
The donations were made to Tshiawelo Primary School in Vuwani and Khakhanwa Drop In centre. These institutions feed 220 children on a daily basis. We were met with wonderful smiles and the children and staff at the institutions were overwhelmed with joy in receiving this very valuable donation. They danced and sang songs, include a happy birthday song wishing Tata Madiba a very happy birthday.
Problem Gambling Toll-Free Help Line 0860 006 008. Players must be 18 years or older. Winners know when to stop.


text:
Crain's webinars are live online seminars, offering a convenient way to learn about relevant industry topics and current trends. Audio, video, slide presentations, polling questions and Q&A sessions give attendees a dynamic, interactive communication experience, much like that of a live event. Register today for the upcoming webinars below!
Look forward to 2015 and nobody knows what health care will look like, but everyone knows things will be different. That's the starting point for HealthFacts, a project to provide facts for health care providers, employers of all size, and employees as they make near-term health care decisions.
With the combined resources of the Greater Detroit Area Health Council and Crain's Detroit Business, this series will present useful and informative webinars throughout the year aimed at employers, employees and providers.
You've got a small business, we've got strategies for you. Lunch and learn with Crain's Detroit Business, once-a-week, for three weeks in May and get real-world business strategy from experts. Managing growth, finding the right talent, hiring for diversity and engaging new supply chains are just a few of the topics.


text:
The Dunwoody Police Department routinely receives complaints about speeding motorists. We take these complaints seriously. Our goal is for all motorists, pedestrians and bicyclists to be able to travel throughout the City of Dunwoody safely. One of the tools we use to help combat the speeding problem is a Speed Monitoring Trailer.
The Speed Monitoring Trailer is a portable device which measures the speed of cars as they approach and flashes the driver's speed as they pass the trailer. The trailer utilizes a computer which collects data that can be analyzed to identify the severity of the speeding problem and the worst times for speeding. This helps the department deploy limited resources more efficiently.
Residents who would like the speed monitoring trailer placed in their neighborhood are invited to use our ONLINE SPEED TRAILER REQUEST FORM to notify us. Due to the high volume of requests for the speed monitoring trailer, placements will occur in the order in which requests are received.
Copyright © 2010 | City of Dunwoody, Georgia | 41 Perimeter Center East, Dunwoody, GA 30346 | Phone: 678-382-6700 | Employee Login | Site Map | Privacy Policy


text: Speed and Strength Cruise Missile Vintage Black Textile and Leather Jacket 10%! Sale Price: $179.96 Regularly: $199.95 Gold Club Price: What's This? The Gold Club is our premier membership program. For most items members receive 10% off every day, plus exclusive sales and benefits just for members. More Info $179.96 Product Description: Gender: Men'sMaterial: Combined Leather And AR-600 FrameClosure Type: ZipperConcealed Carry Pocket: YesDesign: Cruise MissileManufacturer Part Number: 877785 More Info Click MORE INFO to check availability More Info


text:
Healthcare Providers and Services
Company Overview of Eisenhower Medical Center, Inc.
BOARD MEMBERS AFFILIATED WITH William D. Calkins *
MOST CONNECTED PEOPLE TO William D. Calkins
|Kenneth M. Novack
|253 Relationships
|Alan Irwin Greene
|203 Relationships
|Joel E. Smilow
|194 Relationships
|James G. Cullen
|180 Relationships
|Richard Lyle Knowlton
|134 Relationships
Sponsored Financial Commentaries
Sponsored Links
To contact Eisenhower Medical Center, Inc., please visit . Company data is provided by Capital IQ. Please use this form to report any data issues.
Our data partners will research the update request and update the information on this page if necessary. Research and follow-up could take several weeks. If you have questions, you can contact them at email@example.com.


text:
Resource Types
Filter by article type:
- Post (17) Apply Post filter
- Travel Reports (14) Apply Travel Reports filter
- Event Spotlight (13) Apply Event Spotlight filter
- Interviews (10) Apply Interviews filter
- Product (10) Apply Product filter
- House Tours (7) Apply House Tours filter
- Shops (7) Apply Shops filter
- My House (6) Apply My House filter
- Design 101 (5) Apply Design 101 filter
- Latest (5) Apply Latest filter
- Product Reviews (5) Apply Product Reviews filter
- A Great Idea (4) Apply A Great Idea filter
- Outdoor (4) Apply Outdoor filter
- Profiles (4) Apply Profiles filter
- Books (3) Apply Books filter
- Finishing Touch (3) Apply Finishing Touch filter
- Gift Guides (3) Apply Gift Guides filter
- In The Modern World (3) Apply In The Modern World filter
- --The Future of (2) Apply --The Future of filter
- Houses We Love (2) Apply Houses We Love filter
- Rooms We Love (2) Apply Rooms We Love filter
- We Recommend (2) Apply We Recommend filter
- Green (1) Apply Green filter
- Hotels (1) Apply Hotels filter
- How To (1) Apply How To filter
- Renovation (1) Apply Renovation filter
- Rewind (1) Apply Rewind filter
- Superstructure (1) Apply Superstructure filter
Filter by post date:
Filter by product categories:
- Art (138) Apply Art filter
- Furniture (39) Apply Furniture filter
- Accessories (15) Apply Accessories filter
- Decorations (12) Apply Decorations filter
- Lighting (9) Apply Lighting filter
- Storage (9) Apply Storage filter
- Books (8) Apply Books filter
- Kitchenware (7) Apply Kitchenware filter
- Windows (7) Apply Windows filter
- Wallcoverings (6) Apply Wallcoverings filter
- Apparel (5) Apply Apparel filter
- Flooring (5) Apply Flooring filter
- Fabrics (3) Apply Fabrics filter
- Paper (3) Apply Paper filter
- Room Dividers (3) Apply Room Dividers filter
- Toys (3) Apply Toys filter
- Bedding (2) Apply Bedding filter
- Housecleaning (2) Apply Housecleaning filter
- Rugs/Carpeting (2) Apply Rugs/Carpeting filter
- Cabinets/Consoles (1) Apply Cabinets/Consoles filter
- Doors (1) Apply Doors filter
- Fixtures (1) Apply Fixtures filter
- Gardening (1) Apply Gardening filter
Filter by topics:
Filter by section:
Explore - Art
Composite Index
Corporate high-flyers and admitted neat freaks Bruce Thatcher and Kirsty Leighton couldn't handle the chaos anymore. With two small boys and demanding jobs (he works in hedge funds, she&rsquo...written by: Nicola Twilleyphotos by: Matthew Williams01.11.10
Free City Shop, Los Angeles
Nina Garduno recently opened her shop Free City—a mix between an actual store and a design commune–on Highland Avenue in Hollywood. She started the company in 2002, inspired by her ...11.01.10
Mies van der Rohe, Lafayette Park
High-rise superblocks and identical clusters of row houses set apart from the urban grid have been much maligned as some of the major wrongdoings of modernism, but Detroit's Lafayette Park&mdash...written by: Sam Grawephotos by: Raimund Koch01.14.09
Hot Houses
When Seattle's fire stations needed an overhaul, the city selected local architects to give these ultimate live/work spaces a modern-minded update. ...written by: Tim Newcomb09.27.11
Designer Jaime Hayon's Renovated Home in Spain
The internationally acclaimed designer Jaime Hayon takes us on a personal tour of his newly renovated home in Valencia, Spain, offering decorating tips along the way.written by: Zahid Sardarphotos by: Nienke Klunder05.23.12
A Tree Grows in the Dogpatch
Located in the Dogpatch neighborhood of San Francisco, Treehouse Gallery is part of a movement of contemporary artistic practice that reconsiders the gallery space as a place for community dialogue...written by: Meredith MacKenzie04.11.11
Play: Electric Slide
A group of Columbia University students have a good time reinventing the playground as a place to harness all that youthful energy.written by: Marc Kristal11.16.09
Floating Landscape Made of Net
I recently came across Numen's creative interactive installations, a mix between art and design, on the landscape architecture blog Landezine. These are the same guys who strung up an alien-like...03.05.12
Party-Friendly Apartment in Toronto
Dr. Kenneth Montague's Toronto loft is both home and art gallery—and the ultimate party house, thanks to two kitchens, a rooftop deck, and no shortage of conversation pieces.written by: Alex Bozikovicphotos by: Naomi Finlay08.09.12
Rhythms of Modern Life Exhibition
While I was in Miami for Art Basel Miami Beach and Design Miami a couple weeks back, I ducked into my favorite Miami Beach museum the Wolfsonian to have a look around.written by: Aaron Britt12.18.09
Park Life, San Francisco
I was in San Francisco's Inner Richmond neighborhood a few days ago, and stopped by one of my favorite shops: Park Life, a cool and highly unconventional gallery and shop. It opened in 2006, the...10.19.10
Salone Posters
In the beginning, there was Italy. When a handful of furniture manufacturers formed Cosmit in 1961, Salone Internazionale del Mobile was conceived to promote homegrown talent. In the subsequent...written by: Jordan Kushins03.07.11
Escape From New York
It was no exodus, of course, but when Kathleen Triem quit her job at a Manhattan design firm in July 1996, her associates were thunderstruck. Triem had decided to practice architecture in the more...written by: Eric Lawlorphotos by: Barbel Miebach01.16.09
Like a Kid in a Candy Store
For Parisian gallery director Didier Krzentowski, the art of collecting has become a career by design.written by: Sam Grawephotos by: Philippe Munda07.01.09
Ladles Not Labels
Fed up with men's fashion, Rachel Wythe-Moran and Simon Watkins of East London's Labour and Wait cooked up a plan to align their creative instincts and passion for practical design.written by: Miyoko Ohtake02.02.10
Nature's Graces
With the lightness and imagination of origami and the mathematical exactitude of digital design, this open-air chapel invites all creatures into its folds.written by: Sarah Richphotos by: Sarah Rich02.04.09
Tokujin Yoshioka
Two million plastic drinking straws fill an exhibition space like haystacks of spun silk; a chair is "grown" from crystals in a transparent tank—Tokujin Yoshioka's work is...written by: Jordan Kushins02.13.11
Seinfood Posters
No Soup for You, the marble rye, Junior Mints in the operating theater, Kenny Roger's chicken, Mackinaw peaches, the big salad. Seinfeld never skimped on the food jokes, and a new show of 20 prints...written by: Aaron Britt02.28.12
Surveying Frieze New York
Fact #1: New Yorkers are more allergic to bridges and tunnels than plants and trees. Fact #2: Manhattanites generally enjoy exploring other boroughs as much as they like the Times Square...written by: Faith-Ann Young05.12.12
New Olds at Israeli Design Museum
There's an interesting new museum in Israel, just south of Tel Aviv, with a corkscrewing exterior of rust-red Cor-Ten steel: Design Museum Holon, designed by Ron Arad. Their forthcoming exhibition...05.13.11


text:
For those of you who have never seen the 1970 movie "Little Big Man" starring Dustin Hoffman, it's about a 121-year-old man living in a rest home and telling his life story about being a captive of the Cheyenne, a gunslinger, a friend of Wild Bill Hickok, a storekeeper, a scout for General Custer, and losing a wife and family.Living in Grand Junction in 1923, there was a man with tales to tell like the movie. His name was Uncle Billy Hildreth, and this is his story.THE TALE BEGINSIt started on March 31,1923, in Grand Junction, Colo., when Alfred B. "Uncle Billy" Hildreth had his 100th Birthday Party at the Oxford Hotel at the northwest corner of Second and Colorado Ave. in Grand Junction (now the parking lot of Two Rivers Convention Center); the party then moved on to the Grand Junction Elks Club on the corner of Fourth and Ute. The local Elks Club gave Uncle Billy a huge party as the oldest Elk in the world. Uncle Billy claimed to have known Abe Lincoln while living in Illinois, before Abe became president. Billy said of Lincoln: "He was the homeliest, ganglingest, most awkward man I have ever seen," but he also thought "Lincoln was one of the smartest men he ever met."Uncle Billy said he was born in Mt. Vernon, Ohio, on March 31, 1823. He also stated he came to Denver with a team of oxen in 1858, when it was a colony of three tents surrounded by Indians. He claimed that during his life he scouted with Buffalo Bill, Kit Carson, Jim Baker and other famous Western heroes. A different account said he came to Estes Park by wagon train in 1859, with a man named Speers. Then in the same year, returned to Santa Fe, by pony, through country thickly settled by hostile Indians the same year.His best tale was of scouting for Gen. Custer and being within two miles of Little Big Horn in 1876, and one hour after the last shot was fired, he had gone among the victims of the famous Custer massacre. He said he had been in the Civil War, serving on the Union side, and wounded at Shiloh, he was an Indian Scout with General Oliver Howard, and helped stem the tide of the Nez Perce Indians through the Yellowstone Park Area in 1877. He also had familiarity with the development of the whole Rocky Mountains and plains region.Uncle Billy's stories were always interesting, and he would share them to all that would listen. He didn't sit by on the sidelines and watch other men do things, but was an actor on life's stage. Billy said when he was born in 1823; Napoleon died two years before his birth; he was 14 when Queen Victoria began her reign; and was 21 when the telegraph and telephone was invented; and Karl Marx, the German Socialist was just five years older than him. He said he never got ill because he smoked half a dozen to 20 strong cigars each day and took a daily portion of whiskey, which always kept him in good trim.Billy was an active member the local Grand Army of the Republic, John A. Logan Post 21, and loved to walk in all the Grand Junction parades.About five months after his 100th Birthday on August 1, 1923, Uncle Billy died in the hospital in Ouray, Colo., while visiting his adopted daughter, Mrs. Edna Corn. Billy had taken ill 10 days earlier from a combination of all his diseases. According to the records of the local G.A.R. Post, his next of kin was his daughter, Alice Hildreth Outland of Iowa, and granddaughter Gertrude Reed of Denver. Sgt. Alfred B. Hildreth of Company C, 41st Illinois Infantry, was buried in the Rawlins, Wyo., cemetery by his comrades and according to his wishes.SETTING THE RECORD STRAIGHTA man of such interesting stories needs a second look at his life; more than what he told the newspaper, the Elks, the local Civil War Post and the citizens of Mesa County.Thus starts our review of documented facts of this 5'9", hazel-eyed, 100-year-old soldier, scout, pathfinder and trailblazer of the West, who looked out on the face of the new American frontier.Alfred Blaine Hildreth was born in Mt. Vernon, Ohio, on March 31, 1830, the son of Arnold W. Hildreth and Mary Beardsley. By 1850, 19-year-old Alfred was living in his parents' home in Miller, Knox County, Ohio, learning his life trade as a carpenter. On Jan. 19, 1857, he married Matilda "Mattie" Rose Rowley in Mahaska, Iowa; they had two children, a daughter, Alice V. born in 1857 in Iowa, and a son, William "Willie" A. Hildreth born March 7, 1862, in Clinton, Ill.When the Civil War broke out, Alfred with other men from Clinton answered the call to serve in the Union and joined Company C, 41st Illinois Infantry on May 8, 1861. During his time in the service he saw some of the worst battles of the western campaigns of the Civil War. He was present at Fort Donelson and the Battle of Shiloh, or as he called it, "Pittsburg Landing." There he was wounded, shot in the right shoulder and arm.In the first day of fighting at the "Hornets Nest" his unit helped keep the Confederates from the Union gunboats on the Tennessee River. After the battle they moved on to Corinth, Oxford and Vicksburg, Miss., where the 41st Illinois marched across Tennessee to Marietta, Ga. For a short time, Billy was on detached service in the Pioneer Corps (Seabee's of the Civil War) at La Grange, and Grand Junction, Tenn. These soldiers built roads and bridges for Army units. They also tore up railroads and telegraph lines to stop the Confederates from moving men and supplies.Sgt. Alfred B. Hildreth was honorably discharged on Aug. 20, 1864; his regiment the 41st Illinois had seen many causalities of the war and was merged with the 53rd Illinois to form one regiment. Alfred returned to his wife, Mattie, daughter Alice and new son Willie at Clinton, Ill., where the family lived until 1870. For some reason in 1874, Alfred moved out West without his family. According to Alfred's Civil War pension record, he moved to Rawlins, Wyo., in 1874, and then on to the Black Hills of Dakota in 1877. The following year he was in Montana working as a gold miner, carpenter and clerking in stores. He returned to Chicago and lived in a boarding house from 1879 to 1880 where he did carpentry work. At this time he and Mattie divorced. Mattie and son Willie were still living in Clinton, Ill., and daughter Alice was married by then and living in Iowa with her husband, Joel Outland.By 1881, Alfred is now becoming known as Uncle Billy and he moved back to Rawlins, where he homesteaded a section of land that used to be an old military outpost. Billy received the patent from President Glover Cleveland in 1895.Later, Billy sold his land to the Hamilton family. Here Uncle Billy was hurt helping the Hamiltons clear trees in the Ferris Mountains of Wyoming. A falling tree hit him in the head and body.In 1882, Billy went to the Bear River area in Colorado for two years to recover from his injuries. He then went back to Rawlins. There he was a member of the C.W. Collins, Post 58 of the G.A.R. Uncle Billy might have first come to Grand Junction, Colo., for a Department of CO/WY meeting on May 13, 1910. Over 800 Union veterans of Colorado /Wyoming attended during this week-long meeting.Uncle Billy remained in Rawlins until 1913 when he got sick and was taken to The Old Soldier's Home in Sawelle, Calif. There Billy probably met many Union veterans from Grand Junction. Billy's stay in the hospital was from 1913 to 1915, and then he was released to return home to Wyoming.We know, from his records, he was in Rawlins in 1918 and then appears in the Grand Junction records of the local G.A.R. John A. Logan Post 21 in December 1920. In Grand Junction, he kept a room at the Oxford Hotel and his pension checks were sent to the GJ post office. The post office and Elks Lodge, where he was a member, were just a few blocks away from the hotel and within walking distance for Uncle Billy. Sometime during his time here in GJ he stumbled and fell and was hit by a truck. But this durable soul survived his brush with death.It seems ironic that he lived in the Oxford Hotel - Oxford and Grand Junction being two places in Tennessee and Mississippi where he fought in the Civil War. Living here must have brought memories of the battles of his youth.Uncle Billy liked to winter in GJ and go to Ouray in the summer to visit his friends, Mr. and Mrs. Graves Corn, whom he met in Grand Junction. They had moved to Ouray and opened their home to him for visits.During his time here in GJ, Uncle Billy took the town by storm with his great stories, marching in parades, and his activities in the G.A.R. Post and the Elks Lodge. He told everyone he was going to be 100 years old on March 31 1923. Frank Dean took his photo and the Elks gave him a huge party, which he loved. However, all of Billy's records - his military and pension records, medical records, records from the Old Soldier's Home and Census records from 1840 to 1920 show his birth year was 1830. Therefore, Uncle Billy was only 93 years old.But who cares? Uncle Billy wanted to be 100 years old and have a big celebration. Well, he got his wish, his picture was in the paper, a big party was given in his honor and everybody showed up! We should all be so lucky!While some of his tales may be a little far-fetched, his real life was full and fascinating. The actual facts were as exciting as the tales he told to all who would listen. Quoting the aged Indian "Old Lodge Skins" from the movie "Little Big Man" when he was waiting for death, "Sometimes the magic works and sometimes it doesn't." Let's give Alfred "Uncle Billy" Hildreth a cigar and a shot of whiskey, because he made the magic work for him and we all believed.------------------Garry Brewer is storyteller of the tribe; finder of odd knowledge and uninteresting items; a bore to his grandchildren; a pain to his wife on spelling; but a locator of golden nuggets, truths and pearls of wisdom. Email Garry at firstname.lastname@example.com.============SOURCES & PHOTOS: Museum of Western Colorado, Loyd Files Room; Michael Menard; Bill & Linda Buvinger; Wanda Allen; Snap Photo; Grand Junction News records; Daily Sentinel records; Grand Army of the Republic, John A. Logan Post 21; C.W. Collins Post 58, Department of CO/WY; Pension Records of Sgt. Alfred B. Hildreth; Lodge No. 575 Benevolent and Protective Order of Elks book "Our First Fifty Years, 1900 to 1950"; Dennis M. Edelin, chief, Forms Reference Section, Archival Operations - Washington, D.C.; Frank Dean photo; Iowa State Marriage Records, 1834 to 1900.
Back to: News
March 29, 2013
Follow News


text:
The Westin Pasadena
Located in the heart of Pasadena and within walking distance of the Pasadena Convention Center, Old Pasadena's 200 shops and restaurants and top cultural attractons.
350 guestrooms and suites with Heavenly Bed and Heavenly Bath
26,000 sq. ft of flexible meeting and banquet space and a private boardroom
Wireless, high-speed Internet access throughout hotel
191 N. Los Robles Ave
Pasadena, CA 91101


text:
No posts were found. Sorry!
No posts were found. Sorry!
Get Your Free, No- Obligation Price Information for Propertyware Now
Call Today! 1-866-655-6641
Fill out this form to attend our Live Demonstration to help you choose the right software for you and your property management firm.
Sign up for our weekly live demo of Virtual Maintenance Manager that takes place every Wednesday, at 1pm Central time (11am Pacific).×
Find out how Propertyware's property management software can help you streamline operations, cut costs, and help you grow your business.
Call Today! 1-844-329-2793


text:
A city rich in culture, undergoing exponential growth, Doha is home to a diverse multicultural community. Fly with Qatar Airways; 5-star service awaits you onboard.
Souq Waqif is a shopping destination renowned for selling traditional Arabic handicrafts and goods, including spices, pashmina's, rugs and souvenirs. It also encompasses restaurants offering international cuisines; Soak up the atmosphere at dusk from one of the rooftop terraces. Participate in Shisha; a traditional water pipe using unique tobacco flavours including grape, strawberry, apple and mint.
Visit the Museum of Islamic Art, the Singing Sand Dunes and Katara where you can immerse yourself in the cities rich and diverse culture.
Exquisite malls can be found all over Doha. Villagio is designed in the style of an Italian city and encompasses a cinema, bowling alley, children's amusement park, ice rink, go karting track, restaurants and a 500-meter long canal with gondolas. City Centre houses an ice rink, cinema, climbing wall, restaurants and over 300,000 sq.m. of shops.
If you seek a more upscale and sophisticated shopping environment; "The Pearl", an old pearl diving site, depicting Qatar's rich past in the pearling industry awaits you with 5-star dining and exclusive designer boutiques.
Enjoy a symphony or orchestra at Katara Cultural village, pack a picnic and drive over the dunes to the Inland Sea (a naturally formed inlet of the Gulf). Forget you're in the desert and visit the Gulf's most awe-inspiring park. With 88 hectares Aspire Park is the largest in Doha and has the only lake in Qatar, it's a great place for families.
On Friday celebrate the weekend with the residents of Doha at one of Doha's luxury 5-star hotels; presenting a feast of divine international cuisines with delicacies like foise gras, sushi and sumptuous deserts.
Currency: Qatari Riyal (QR)
Voltage: 240 V
Plugs: 3 square pin
Language: Arabic, English
Timezone: UTC + 3 hours
International dialing code: +97 4


text:
Under The Sea Decorations- Printable Ocean Party Birthday Party Decorations PDF/JPEG
Product Info
Under The Sea Decorations- Printable Ocean Party Birthday Party Decorations PDF/JPEG
This listing is for the entire UNDER THE SEA party:
1. 2" Cupcake Toppers (17 designs)
2. 4" Cake Toppers/Decorators (17 designs matching Cupcake Toppers)
3. Thank you Cards (1 design)
4. Favor Tags (1 design)
5. Tent Labels (4 designs)
6. Blank Favor Bag Toppers (1 design)
7. Happy Birthday Banner with name (1 design-5x7 pennants)
8. Cupcake Wrappers (1 design)
9. Personalized Invitation (5x7 size)
10. Straw Flags (9 designs)
11. Water Bottle Wraps (4 designs)
12. Mini Banner "Goldfish Bar" (1 design)
13. Blank Sign (1 design)
14. Mini Name Banner (1 design)
15. Welcome Sign (1 design)
16. 2" Food Labels Blank and Pre-Labeled (as shown in photos)
17. Centerpieces (9 designs)
All files come with instructions and paper recommendations.
Looking for just the invitation: https://www.etsy.com/listing/153243974/under-the-sea-invitation-ocean?ref=shop_home_active&ga_search_query=under
Individual Files can be purchased in this section of my shop: https://www.etsy.com/shop/MimisDollhouse?section_id=11602812
INSTRUCTIONS for Purchasing:
1) Add this item to your cart
2) In "NOTES TO SELLER" please include:
- Child's name as you would like it appear on all personalized pieces.
- Age
- Date, Time and Location of party for Invitation
-RSVP Information for Invitation
3) If you would like a picture included on the invitation, please send it WITH YOUR ETSY USERNAME IN THE SUBJECT LINE to holly [!at] mimisdollhouse.com
4) Upon receipt of your complete information and receipt of payment, we will begin customizing the design. If you choose not to have any of the above information included on your invitation or wish not to use the included invitation, please include that in the NOTE TO SELLER. Incomplete information can increase your turnaround time.
Package A LA CARTE Options:
The package price reflects a huge savings over the total retail price. You may also purchase items separately from this section:
Are you purchasing this party for a FIRST BIRTHDAY? Don't forget the 1st birthday package which includes a 12 month picture banner, a smash cake for those cute little cake shots and a high chair banner. This pacakge is made to match ANY Mimi's Dollhouse party design and available in this listing: http://www.etsy.com/listing/89774959/
For FAQ, printing and assembly recommendations and detailed instructions: www.mimisdollhouse.com/faq/
For Printed 5x7 Invitations (with envelopes): https://www.etsy.com/listing/110209404/25-professionally-printed-5x7
****Please note that Color, Font and Layout Changes are not included in this listing.****
Customized text can be added to any non personalized item (such as blank signs and tent labels) at extra cost. Please contact us if you are interested.
All files are formatted to print on 8.5" x 11" matte photo paper. (Cardstock will also work, but print quality is best on thick matte photo paper. Other tools required include: 2' punch (circle or scalloped circle), hole punch, scissors, glue, and coordinating ribbon.
This PDF file can not be altered, however you may print it as many times as you need for personal use. To open the PDF file, you will need Adobe Reader, which is a free download at adobe.com. NO ITEM WILL BE MAILED. THIS LISTING IS FOR A DOWNLOADABLE PDF FILE ONLY.
File(s) will be sent to the email address on file with Etsy according to the current turnaround time frame. For current turnaround times, please see the shop announcement.
PLEASE NOTE: This file is for personal use only. You may not forward, share, sell or distribute the file. Mass Production of these file is NOT allowed. It is for noncommercial use only. Mimi's Dollhouse retains all rights.
Thank you for shopping with Mimi's Dollhouse. Check out our website at www.mimisdollhouse.com


text:
Showing 1-24 of 118 items found in Shopping
44th Rockford RV, Camping and Travel Show
The 2015 RV, Camping, & Vacation Show offers the best brands, best deals and prices, and best place to buy. Come take a look at the new RV models and who knows--you may find the best fit for you and your family. The show will have fifth wheels, travel trailers, motor homes, pop-ups, toy haulers, class A, B, & C and even 4 wheelers. You also can have one-on-one time with campground and lodging representatives to help you plan your next exciting trip. Come alone or with your whole family and enjoy the show. Located at Indoor Sports Center.
CITY: Loves Park
35th Annual Rockford Home Show
The first sign of spring for thousands of home owners and families is the 35th Annual Home Show at the Indoor Sports Center where they see what's new for the home and garden. The Home Show is the ideal place to shop for new products, services, ideas, concepts and expertise on interior and exterior design. This exciting event provides the perfect atmosphere to attend free seminars of interest to the home owners at no additional cost plus fun entertainment for the kids.
CITY: Loves Park
44th Rockford Boat, Vacation & Fishing Show
The 2015 Boat, Vacation, & Fishing Show at the Indoor Sports Center will continue be your one stop shop. Whether you are interested in buying a boat or pontoon, looking for the perfect charters, guides, or lodging, or just needing to buy the right fishing tackle, the show will have exactly what you are looking for. We have some of the most experienced Illinois and Wisconsin anglers and guides giving seminars. They will talk to you about what baits and lures to use, teach you different fishing techniques, and much more.
CITY: Loves Park
One More Time Antiques
Repurposed furnishings, antiques, and primitives fill this unique shop in historic downtown Freeport.
CITY: Freeport
Luecke Jewelers Vintage Jewelry and Antiques
Largest collection of pre-owned estate jewelry and antiques in northern Illinois. Opened Monday thru Thursday and Saturday: 9 am - 5 pm; Friday: 9 am - 6 pm.
CITY: Freeport
T and D Toy & Hobby
T and D Toy & Hobby specializes in diecast toys, both old and new, but also offers new and old model kits, including resin kits, hobby paints and tools, and model railroading items. Open: Monday thru Friday: 11 am - 12:30 pm; 3 pm - 5:30 pm; Saturday: 10 am - 3 pm
CITY: Freeport
Blown Away Art & Framing Destination
Blown Away specialize in custom framing pictures. There is a large variety of art for sale in the gallery from limited editions, famous art prints, and art from local artists. Open: Sunday and Saturday: 10 am - 2 pm; Tuesday thru Friday: 10 am - 6 pm.
CITY: Lena
Honey Hill Orchard
Apples, cider, donuts, apple bread, pure apple cider, caramel apples, honey, jams, jellies, apple butter, syrup, pumpkins and gourds. Late Aug.-Nov.
CITY: McConnell
Wagner's Business Products/Furniture
This is a full-service office products store with gift and luggage department, including special stationery items.
CITY: Freeport
Generations Boutique
Generations Boutique is a blend of fabulous name brand fashions and gifts for the home. Open: Monday thru Friday: 10 am - 5 pm; Saturday: 10 am - 4 pm
CITY: Freeport
Stones Hallmark
Beautiful Hallmark gift store offering cards, Christmas ornaments, collectibles, ladies accessories, Fannie May and much more. Open: Sunday; 11 am - 5 pm; Monday thru Friday: 9 am - 8 pm; Saturday: 9 am - 5:30 pm.
CITY: Freeport
Engel's Jewelry and Gifts
Complete line of fine jewelry featuring engagement rings and colored stones in all designs. Gifts for every occasion including wedding, anniversary, baby and inspirational. Home decor, unique clocks and many collectibles. Fashion jewelry in the most popular designs featuring sterling silver and semi-precious stones. The store also features a complete repair department for jewelry, watches, clocks and antique items. Open: Monday thru Friday: 9 am - 5 pm; Saturday: 9 am - 3 pm
CITY: Lena
Jennings Cards and Currency
Coins, sport cards, books, postcards, stamps, gold and silver. We buy, sell, trade and appraise.
CITY: Freeport
Merle Norman Cosmetic Studio
Quality skin care and cosmetics, Vera Bradley quilted bags and accessories, and fun watches. Complimentary makeover/lessons. Call for an appointment.
CITY: Freeport
Lily Pad Gardens And Nursery
Discover this shop offering annuals, perennials, aquatic plants, hanging baskets, traditional and unique flowering containers, garden seeds, a full garden center and garden-themed gifts, including bean pod candles, home decor, Dionis goat's milk bath products, Rhapsody candles, garden flags, and mailbox covers, willow benches and outdoor furniture. Fresh-cut Christmas trees, wreaths, and garland are available during winter season.
CITY: Lena
Napa Valley Salvage Company
Reimagined Vintage Furniture and home decor. California Shabby Chic. Join Napa Valley Salvage on Face Book, to see new reimagined furniture listed daily. Open: Monday thru Friday: 10 am 4 pm; Saturday: 9 am - 3 pm.
CITY: Freeport
Dragon Popcorn
Visit this quirky little shop and fall in love with gourmet popcorn in a huge variety of flavors, nuts, fruit, chocolate, and soft drinks including frozen concoctions. Friend us on Facebook at Dragon Popcorn. Open: Tuesday thru Friday: 10 am - 6 pm; Saturday: 10 am 4 pm.
CITY: Freeport
Baileyville Christmas Trees
Christmas trees - cut your own or pre-cut, wreaths, roping, decorations, ornaments, gifts, crafts and complimentary cider, coffee and cookies
CITY: Baileyville
Serendipity Candy
Browse the selection of gourmet chocolates, nostalgic candy, Jelly Belly's, M&M colorworks, candy bouquets, and the large offering of sugar-free candy. Visit us on Facebook.
CITY: Freeport
Frank Jewelers
Frank Jewelers in downtown Freeport is the destination for diamonds, distinctive jewelry and fine gifts. The galleries feature diamonds from Natalie K, IDDEAL Diamonds, Everlon, Love Story, Forever 10, and the new Ideal2 Square-Cut Hearts and Arrows diamond – a Frank Jewelers exclusive – displayed in a relaxing atmosphere where guests can find style, brilliance and excellent value each and every day. Frank Jewelers complete Pandora Shop-in-Shop offers the collection of internationally acclaimed Pandora charms, bracelets, necklaces and earrings – with millions of combinations. You'll also find distinctive jewelry from designers Belle Etoile, East2West, Rhythm of Love, LeVian, as well as an impressive collection of Citizen Signature, SEIKO, Accutron and Wittnauer fine timepieces and wall clocks. Frank Jewelers Swarovski gallery is the area's most extensive and features many limited edition pieces. The in-store design and repair department features the talents of a Master Goldsmith who can customize an original piece of jewelry that fits your personality and budget, from traditional to fashion forward. Frank Jewelers will help you create jewelry that is as unique as you are.
CITY: Freeport
Torkelson Cheese Company
"World Champion" Brick and Muenster Cheese, along with 45 other varieties of quality cheeses, sold at factory direct prices. Watch cheese-making through demonstration window; best viewing is 8 am - 10 am. Open: Monday thru Friday: 8 am - 3 pm; Saturday: 8 am - 1 pm.
CITY: Lena
Rite-Way Furniture and Appliance
Home furnishings, accessories, furniture, appliances, bedding and carpet.
CITY: Freeport
Busy B Embroidery
Custom embroidery, sports clothing, iron-ons, gifts, candles, crafts, candy, popcorn and cookie bouquets
CITY: Lena
Conover Bakery
The very best breads, bagels, donuts, muffins, cinnamon rolls, scones, coffee cakes and cookies baked fresh each day. Soups and sandwiches also available.
CITY: Oregon