Commit Graph

1425 Commits

Author SHA1 Message Date
Fabien Potencier ac7907abab simplified code 2012-04-25 08:37:17 +02:00
Fabien Potencier 67c71201e6 added a way to change the default escaping strategy after creating the Twig environment 2012-04-25 08:24:12 +02:00
Fabien Potencier d458e8c892 tweaked doc for the escape filter 2012-04-25 07:35:12 +02:00
Fabien Potencier 9ecf090ae8 simplified usage of the autoescape tag; the only argument is now the escaping strategy or false 2012-04-25 07:30:52 +02:00
Fabien Potencier 423c827093 tweaked an error message 2012-04-25 07:12:38 +02:00
Fabien Potencier 1f00c33acd added a way to dynamically change the auto-escaping strategy according to the template filename 2012-04-25 07:12:38 +02:00
Fabien Potencier 109db731ca changed the autoescape option to also accept a supported escaping strategy (for BC, true is equivalent to html) 2012-04-25 07:12:34 +02:00
Fabien Potencier b0c435979f fixed CS 2012-04-25 06:17:05 +02:00
Fabien Potencier 02f1c567b9 fixed markup in the doc 2012-04-24 13:12:09 +02:00
Fabien Potencier 49c5d51eac merged branch fabpot/inline (PR #709)
Commits
-------

07f13df fixed typo
0f623a1 added the parent as an argument to the embed tag (removes the need to use extends)
fab21d8 renamed the inline tag to embed
1b54780 tweaked examples
955726a changed the inline examples to not use even/odd to avoid confustion
fb07f3a renamed indice to index
fafde80 added more info in the docs
2fa8224 added the inline tag

Discussion
----------

added the inline tag

At Sensio, we manage websites with many mostly-static pages that share almost the same structure (with different content of course), but with some subtle differences. After trying many different possibilities (external templates, inheritance, macros, and some ugly ones that I won't even tell you about ;)) to structure our templates, we came to the conclusion that we needed a new concept.

This new concept is implemented via a new tag, `inline`, which I want to include in Twig 1.8 (not for the upcoming 1.7 which is due this week). But before merging this code into master, I want to gather some feedback from the community. One of my questions being: Will you use this new possibility?

I won't tell you more here as the tag is fully documented in the diff.

---------------------------------------------------------------------------

by oojacoboo at 2012-04-23T17:58:59Z

odd/even?  What other potential uses do you see?  I think I can see a couple, but generally speaking, unless it's a content site (ie. blog), the odd/even isn't very useful.  Reusing blocks even with minor customizations on a per page level is highly needed for our development processes, but an odd/even scenario is certainly not.

Maybe I'm missing something here.  What about passing attributes to a block or something?

---------------------------------------------------------------------------

by fabpot at 2012-04-23T18:02:51Z

@oojacoboo odd/even is just an example. Of course, this is not a real use case, this was just an attempt to find an example.

---------------------------------------------------------------------------

by stof at 2012-04-23T18:03:53Z

@oojacoboo there is no reference to odd/even in the code, only in the doc

---------------------------------------------------------------------------

by simensen at 2012-04-23T18:20:10Z

I think that it would be useful in some cases. I can't think of any places I could use it *right now* but I know I've had to jump through hoops on more than a few occasions to get things to work correctly. Being able to keep functionality like this in mind at the design stage might have made things easier in a few of those cases.

---------------------------------------------------------------------------

by lyrixx at 2012-04-23T18:21:34Z

I think it's a good idea.

---------------------------------------------------------------------------

by tyomo4ka at 2012-04-23T18:25:07Z

I think it will be great. Each time when I need to include templat that simple extends another one and replace one small block I think: "Why I should to create new template for it?". Thanks, @fabpot

---------------------------------------------------------------------------

by bmatzner at 2012-04-23T18:28:23Z

Right on. +1

---------------------------------------------------------------------------

by cranberyxl at 2012-04-23T18:40:17Z

I believe the concept is a good one, but the example using even and odd will confuse frontend developers because it's usually used in the context of loops and table striping. even changing it to styleA.twig and styleB.twig would be more understandable.

---------------------------------------------------------------------------

by lyrixx at 2012-04-23T19:01:32Z

@cranberyxl  +1

---------------------------------------------------------------------------

by fabpot at 2012-04-23T19:24:21Z

ok, I've just changed the examples to not used even/odd.

---------------------------------------------------------------------------

by jorgelbg at 2012-04-23T19:27:53Z

I think that the inline tag is a valid concept, but still I can't get it landed on a real case!

---------------------------------------------------------------------------

by sirowl at 2012-04-23T19:35:07Z

As a webdesigner with a steady foundation in CSS I find the term inline very confusing, I had to consult a developer to actually understand what was the idea of the tag as I so heavily associated it with CSS's terminology of inline.
The CSS terminololigy got me on the wrong track in terms of what the tag was supposed to be used for.
I have no good suggestion for a name for it, but inline could probably get very confusing for a lot of webdesigners making use of twig.

---------------------------------------------------------------------------

by fabpot at 2012-04-23T19:41:48Z

@sirowl `inline` was the best term I could come up with but I'm open to any other suggestion.

---------------------------------------------------------------------------

by sirowl at 2012-04-23T19:47:30Z

The best I could come up with is embed, as it is an embedded document of sorts.. or something along those lines.

---------------------------------------------------------------------------

by bschussek at 2012-04-23T19:48:54Z

I like `embed`.

---------------------------------------------------------------------------

by bmatzner at 2012-04-23T19:55:37Z

Hi Fabien, inline makes sense to me, although I understand @sirowl's comment, but I even find the concept quite comparable to the CSS display:block/display:inline logic. @sirowl's suggestion of "embed" would be just as fine, as it's just a matter of learning what this particular tag refers to. The ambiguation against the import tag is probably the most crucial, explaining the advantages of "inline" (or whatever) over doing an import

---------------------------------------------------------------------------

by Baachi at 2012-04-23T20:03:26Z

I lke ```embed```, too.

---------------------------------------------------------------------------

by Nami-Doc at 2012-04-23T20:11:42Z

I like `embed`, but `inline` is fine too.

---------------------------------------------------------------------------

by tijuan at 2012-04-23T20:36:39Z

I like the feature
I like embed

---------------------------------------------------------------------------

by pulse00 at 2012-04-23T20:56:41Z

+1 for `embed`

---------------------------------------------------------------------------

by mickaelandrieu at 2012-04-24T00:35:01Z

I like embed, inline for me is an CSS behavior

---------------------------------------------------------------------------

by matheo at 2012-04-24T04:29:05Z

+1 for `embed`

---------------------------------------------------------------------------

by fabpot at 2012-04-24T05:35:06Z

I've just renamed the `inline` tag to `embed`.

---------------------------------------------------------------------------

by sirowl at 2012-04-24T06:55:17Z

@fabpot agreed, much more clear to me now. Look forward to using it.

---------------------------------------------------------------------------

by pvanliefland at 2012-04-24T07:20:35Z

I would like to use this feature as well

---------------------------------------------------------------------------

by tristanbes at 2012-04-24T07:38:57Z

So if I take another example, to help me understand better

I do have a common structure stated as follows :
   ```
 <body>
    <div class="row">
        <div class="main">
            <div id="homepage">
               {% block content %}
            </div>
       </div>
    </div>
    </body>
```
Let's say for the other pages, the `id="homepage"` is replaced by `id="innerPage"` `id="specialLayout"`

So far I created 3 base template with those changes, so with the new `embed` tag, does this concept fits here or I misunderstood the function of `embed` feature ?

---------------------------------------------------------------------------

by ruian at 2012-04-24T07:47:38Z

@tristanbes with `embed`, you can "include" another twig template and modify directly these differents `block`.
If you want to understand you can read `embed` tests https://github.com/fabpot/Twig/blob/0f623a11129ce28a897dbd5b812241d8b3ea9730/test/Twig/Tests/Fixtures/tags/embed/

---------------------------------------------------------------------------

by samuelmichaud at 2012-04-24T08:02:42Z

Yes ! I will definitely use this ! Thanks

---------------------------------------------------------------------------

by michelsalib at 2012-04-24T08:05:47Z

As @samuelmichaud said we have some uses cases (such as menu generation, breadcrumbs or quick action embedding). So this feature makes total sense.
2012-04-24 13:09:06 +02:00
Fabien Potencier 0a3516c6e6 merged branch hason/fix_test5.2 (PR #710)
Commits
-------

28bd307 Fixed guess template info for PHP 5.2

Discussion
----------

Fixed guess template info for PHP 5.2
2012-04-24 11:25:12 +02:00
Martin Hasoň 28bd30714b Fixed guess template info for PHP 5.2 2012-04-24 11:01:43 +02:00
Fabien Potencier 07f13dfcb8 fixed typo 2012-04-24 10:36:52 +02:00
Fabien Potencier 0f623a1112 added the parent as an argument to the embed tag (removes the need to use extends) 2012-04-24 08:31:52 +02:00
Fabien Potencier 40c9668854 bumped version to 1.8.0-DEV 2012-04-24 07:50:52 +02:00
Fabien Potencier 6ac8791d15 prepared the 1.7.0 release v1.7.0 2012-04-24 07:40:10 +02:00
Fabien Potencier fab21d8a76 renamed the inline tag to embed 2012-04-24 07:35:39 +02:00
Fabien Potencier 833f3597d6 merged branch hason/travis (PR #633)
Commits
-------

e109233 set travis-ci icon to master
623fac0 Fixed test for "dump" function if xdebug>2.2 is loaded
bd89ec8 Added travis build file

Discussion
----------

Added travis build file

---------------------------------------------------------------------------

by stealth35 at 2012-02-14T14:23:44Z

you could add the twig extension install script

---------------------------------------------------------------------------

by stof at 2012-02-14T14:35:30Z

yeah, there should be 2 builds in the matrix, one with the C extension and one without

---------------------------------------------------------------------------

by hason at 2012-02-15T14:46:30Z

I created build file with matrix of builds. One with the C extension and one without. But I don't know why the C extension is not loaded for PHP 5.2.

---------------------------------------------------------------------------

by hason at 2012-02-16T10:29:02Z

@fabpot All tests passed [![Build Status](https://secure.travis-ci.org/hason/Twig.png?branch=travis)](http://travis-ci.org/hason/Twig)

---------------------------------------------------------------------------

by stof at 2012-04-01T10:30:01Z

@fabpot any reason not to merge it ?

---------------------------------------------------------------------------

by drak at 2012-04-02T02:01:44Z

+1, this helps with QA

---------------------------------------------------------------------------

by nikic at 2012-04-02T09:20:07Z

+1

---------------------------------------------------------------------------

by fabpot at 2012-04-20T09:41:50Z

Can you inline the .sh scripts into the travis file directly?

---------------------------------------------------------------------------

by hason at 2012-04-23T21:57:26Z

done
2012-04-24 07:25:17 +02:00
Martin Hasoň e109233b68 set travis-ci icon to master 2012-04-23 23:34:16 +02:00
Martin Hasoň 623fac04be Fixed test for "dump" function if xdebug>2.2 is loaded 2012-04-23 23:34:04 +02:00
Martin Hasoň bd89ec8c9b Added travis build file 2012-04-23 23:30:30 +02:00
Fabien Potencier 1b547807d2 tweaked examples 2012-04-23 21:26:07 +02:00
Fabien Potencier 955726a4a7 changed the inline examples to not use even/odd to avoid confustion 2012-04-23 21:23:37 +02:00
Fabien Potencier fb07f3a99c renamed indice to index 2012-04-23 20:32:33 +02:00
Fabien Potencier a512973f83 merged branch hhamon/parser_cleanup (PR #708)
Commits
-------

81a1049 [Parser] removed useless else clause.

Discussion
----------

[Parser] removed useless else clause.
2012-04-23 20:24:11 +02:00
Fabien Potencier fafde80874 added more info in the docs 2012-04-23 20:08:03 +02:00
Fabien Potencier 2fa8224be4 added the inline tag 2012-04-23 19:39:43 +02:00
Hugo Hamon 81a1049d7f [Parser] removed useless else clause. 2012-04-23 18:00:48 +02:00
Fabien Potencier f79a56b431 fixed compatibility with PHP 5.2 and simplify code a bit 2012-04-22 08:57:54 +02:00
Fabien Potencier e7313a7825 fixed template line number in some exceptions 2012-04-21 22:21:37 +02:00
Fabien Potencier cf73b64556 added unit tests to prove the issue with the current introspection exception code 2012-04-21 19:43:26 +02:00
Fabien Potencier 07a953e016 tweaked the iterable example in the docs 2012-04-21 15:46:26 +02:00
Fabien Potencier fa0b0985c3 tweaked the iterable example in the docs 2012-04-21 07:33:50 +02:00
Fabien Potencier a929d0336b merged branch martinml/master (PR #705)
Commits
-------

3eecc60 Silence chmod() warnings (operation not permitted) when using CIFS mounts and possibly other cases.

Discussion
----------

Silence chmod() warnings (operation not permitted) when using CIFS

When using chmod() in a CIFS mount (NTFS) in Linux, Twig 1.6.5 in PHP 5.3.3 throws a warning:

    Warning: chmod(): Operation not permitted in /smb/.../Twig/Environment.php on line 1052

There may be other combinations that trigger this warning. Related Symfony issue: https://github.com/symfony/symfony/issues/2125
2012-04-20 20:17:16 +02:00
Fabien Potencier efcd8c5f25 fixed doc 2012-04-20 20:14:01 +02:00
Fabien Potencier 48aae186c9 updated CHANGELOG 2012-04-20 20:12:57 +02:00
Fabien Potencier b20a74868b removed the array test and rename the traversable test to iterable 2012-04-20 20:12:41 +02:00
Fabien Potencier da9d2eb834 merged branch Seldaek/isarray (PR #700)
Commits
-------

c88f8e5 Micro-optimizations
70cca66 Simplify code
d78ed66 Add traversable test
5fd2f98 Add docs
b2e1675 Add is array test

Discussion
----------

is array/traversable tests

It's sometimes necessary to display arbitrary data to be able to know if we should recurse or not.

---------------------------------------------------------------------------

by stof at 2012-04-13T12:13:11Z

I'm not sure about the need for ``is array``. All Twig functions related to arrays also support traversable objects

---------------------------------------------------------------------------

by Seldaek at 2012-04-13T12:23:32Z

Well, I like to have both for explicitness and also because I would try is array without looking at the docs, and I don't think it's right to make is array return true for traversables.

---------------------------------------------------------------------------

by fabpot at 2012-04-20T09:38:33Z

One of the main goal of Twig is to abstract the "real" type of the variables. We have already discussed the introduction of many tests like these ones and I have always rejected them.

As many people seems to have a need for them (especially for arrays), I would consider adding the `traversable` test. But as @stof said, Twig tries to blur the difference between traversable objects and arrays, so I'm -1 for adding another test for arrays.

`traversable` is probably not the best name for web designers but I don't know what else we can use here.

---------------------------------------------------------------------------

by stof at 2012-04-20T09:41:05Z

In Jinja, there is a built-in test for this using ``iterable``: http://jinja.pocoo.org/docs/templates/#builtin-tests

---------------------------------------------------------------------------

by Seldaek at 2012-04-20T09:41:32Z

Ok. I can live with dropping the array test. Now for the name,  `is forloopable`? I am kind of at a loss as well apart from traversable. I think if it's clearly mentioned in the docs it's ok.

---------------------------------------------------------------------------

by Seldaek at 2012-04-20T09:52:12Z

iterable sounds ok to me, but just as confusing as traversable I guess to the unknowing. A sidenote, if I update the PR, any objection to adding the "undefined" test as well?

---------------------------------------------------------------------------

by fabpot at 2012-04-20T10:01:27Z

Let's use `iterable` as this is what Jinja already uses. Why would you want an `undefined` test as we already have `defined`? (`if foo is not defined` works well enough)

---------------------------------------------------------------------------

by Seldaek at 2012-04-20T11:16:26Z

I just saw jinja had it on that page, and I thought why not add it too? Still not a huge fan of the "not" for negation.

---------------------------------------------------------------------------

by fabpot at 2012-04-20T12:18:17Z

Well, let's first finish the `iterable` test first and let's discuss `undefined` in another PR or issue.

---------------------------------------------------------------------------

by fabpot at 2012-04-20T17:10:28Z

I can finish the PR is you want.

---------------------------------------------------------------------------

by Seldaek at 2012-04-20T17:13:11Z

If you like sure, it's mostly deleting code anyway. I just have to finish some work stuff now..
2012-04-20 20:09:05 +02:00
martinml 3eecc609f4 Silence chmod() warnings (operation not permitted) when using CIFS mounts and possibly other cases. 2012-04-20 21:01:06 +03:00
Fabien Potencier 944a014636 renamed preserve_safety to preserves_safety to be consisten with needs_context and needs_environment 2012-04-20 19:04:30 +02:00
Fabien Potencier 43245cbd34 merged branch stof/preserve_safe (PR #684)
Commits
-------

0cbf5a0 Added an option to mark filters as preserving the safeness

Discussion
----------

Added an option to mark filters as preserving the safeness

Closes #678

I haven't written a test for this yet as I don't know how to provide a stub filter (as none of the core filters use this option) for the setup of the testsuite.

---------------------------------------------------------------------------

by fabpot at 2012-04-07T20:15:36Z

@stof: Can you also add some information in the phpdoc with an example so that people understand more easily when and why you would want to use this new option? Thanks.

---------------------------------------------------------------------------

by fabpot at 2012-04-07T20:16:36Z

Also, adding a unit test that demonstrates the bug you had in #678 would be good.

---------------------------------------------------------------------------

by stof at 2012-04-20T08:33:58Z

@fabpot none of the core filters are using this options, so what is the right way to add a test ?

---------------------------------------------------------------------------

by fabpot at 2012-04-20T08:36:26Z

by defining a filter in the test that uses it.

---------------------------------------------------------------------------

by stof at 2012-04-20T08:39:06Z

but is it possible to register a filter from the tests with the custom stuff used by Twig ?

---------------------------------------------------------------------------

by fabpot at 2012-04-20T08:48:06Z

in integrationTest.php, we already have quite a few functions and filters registered. I would just be a matter of adding a new one.

---------------------------------------------------------------------------

by stof at 2012-04-20T16:17:01Z

@fabpot renamed, tested and squashed
2012-04-20 19:02:27 +02:00
Christophe Coevoet 0cbf5a004c Added an option to mark filters as preserving the safeness
Closes #678
2012-04-20 16:23:51 +02:00
Fabien Potencier 0add6e2377 added an error when defining two blocks with the same name in a template (closes #701) 2012-04-20 11:17:22 +02:00
Fabien Potencier 6cf147dc99 added some missing tests for nested blocks 2012-04-20 10:56:03 +02:00
Fabien Potencier 037f86aa55 added a note in the documentation about what the C exension does 2012-04-18 07:19:25 +02:00
Fabien Potencier 5799a889c0 added missing parameters to Twig_Error_Syntax 2012-04-16 09:04:57 +02:00
Jordi Boggiano c88f8e540e Micro-optimizations 2012-04-13 15:48:00 +02:00
Jordi Boggiano 70cca66c5a Simplify code 2012-04-13 14:22:03 +02:00
Jordi Boggiano d78ed667ad Add traversable test 2012-04-13 13:05:17 +02:00
Jordi Boggiano 5fd2f98720 Add docs 2012-04-13 12:58:41 +02:00