Perl Template Toolkit. Scalable Templating for the Web
- Autorzy:
- Darren Chamberlain, Dave Cross, Andy Wardley
- Ocena:
- Bądź pierwszym, który oceni tę książkę
- Stron:
- 592
- Dostępne formaty:
-
ePubMobi
Opis ebooka: Perl Template Toolkit. Scalable Templating for the Web
Among the many different approaches to "templating" with Perl--such as Embperl, Mason, HTML::Template, and hundreds of other lesser known systems--the Template Toolkit is widely recognized as one of the most versatile. Like other templating systems, the Template Toolkit allows programmers to embed Perl code and custom macros into HTML documents in order to create customized documents on the fly. But unlike the others, the Template Toolkit is as facile at producing HTML as it is at producing XML, PDF, or any other output format. And because it has its own simple templating language, templates can be written and edited by people who don't know Perl. In short, the Template Toolkit combines the best features of its competitors, with ease-of-use and flexibility, resulting in a technology that's fast, powerful and extensible, and ideally suited to the production and maintenance of web content and other dynamic document systems.In Perl Template Toolkit you'll find detailed coverage of this increasingly popular technology. Written by core members of the technology's development team, the book guides you through the entire process of installing, configuring, using, and extending the Template Toolkit. It begins with a fast-paced but thorough tutorial on building web content with the Template Toolkit, and then walks you through generating and using data files, particularly with XML. It also provides detailed information on the Template Toolkit's modules, libraries, and tools in addition to a complete reference manual.Topics in the book include:
- Getting started with the template toolkit
- The Template language
- Template directives
- Filters
- Plugins
- Extending the Template Toolkit
- Accessing databases
- XML
- Advanced static web page techniques
- Dynamic web content and web applications
Wybrane bestsellery
-
If you're just getting started with Perl, this is the book you want—whether you're a programmer, system administrator, or web hacker. Nicknamed "the Llama" by two generations of users, this best seller closely follows the popular introductory Perl course taught by the authors since 1991. Th...(186.15 zł najniższa cena z 30 dni)
186.15 zł
219.00 zł(-15%) -
This practical XGBoost guide will put your Python and scikit-learn knowledge to work by showing you how to build powerful, fine-tuned XGBoost models with impressive speed and accuracy. This book will help you to apply XGBoost’s alternative base learners, use unique transformers for model d...
Hands-On Gradient Boosting with XGBoost and scikit-learn. Perform accessible machine learning and extreme gradient boosting with Python Hands-On Gradient Boosting with XGBoost and scikit-learn. Perform accessible machine learning and extreme gradient boosting with Python
-
f you’re ready to get started with Raku (formerly Perl 6), this is the book you want, whether you’re a programmer, system administrator, or web hacker. Raku is a new language—a modern reinvention of Perl suitable for almost any task, from short fixes to complete web applications...
Learning Perl 6. Keeping the Easy, Hard, and Impossible Within Reach Learning Perl 6. Keeping the Easy, Hard, and Impossible Within Reach
(186.15 zł najniższa cena z 30 dni)186.15 zł
219.00 zł(-15%) -
Perl is a family of high-level, general-purpose, interpreted, dynamic programming languages consisting of Perl 5 and Perl 6. Perl 6 helps developers write concise and declarative code that is easy to maintain. This book is an end-to-end guide that will help non-Perl developers get to grips with t...
Perl 6 Deep Dive. Data manipulation, concurrency, functional programming, and more Perl 6 Deep Dive. Data manipulation, concurrency, functional programming, and more
-
Want to learn how to program and think like a computer scientist? This practical guide gets you started on your programming journey with the help of Perl 6, the younger sister of the popular Perl programming language. Ideal for beginners, this hands-on book includes over 100 exercises with multip...
Think Perl 6. How to Think Like a Computer Scientist Think Perl 6. How to Think Like a Computer Scientist
(186.15 zł najniższa cena z 30 dni)186.15 zł
219.00 zł(-15%) -
Many programmers would love to use Perl for projects that involve heavy lifting, but miss the many traditional algorithms that textbooks teach for other languages. Computer scientists have identified many techniques that a wide range of programs need, such as:Fuzzy pattern matching for text (id...
Mastering Algorithms with Perl. Practical Programming Through Computer Science Mastering Algorithms with Perl. Practical Programming Through Computer Science
(118.15 zł najniższa cena z 30 dni)118.15 zł
139.00 zł(-15%) -
Take the next step toward Perl mastery with advanced concepts that make coding easier, maintenance simpler, and execution faster. Mastering Perl isn't a collection of clever tricks, but a way of thinking about Perl programming for solving debugging, configuration, and many other real-world proble...(143.65 zł najniższa cena z 30 dni)
143.65 zł
169.00 zł(-15%) -
Perl. Mistrzostwo w programowaniu" to wyjątkowa książka pomagająca w samodzielnej nauce, przeznaczona dla programistów, którzy używali już Perla i znają jego podstawy. Podążając za radami z tego przewodnika, nauczysz się definiować procedury i odwracać zwykły model programowania proceduralnego. B...(14.90 zł najniższa cena z 30 dni)
22.00 zł
44.00 zł(-50%) -
Dzięki książce odkryjesz mało znane i mniej typowe zastosowania tego języka. Czytając ją, dowiesz się, w jaki sposób wykorzystać Perl do różnych zadań.(9.90 zł najniższa cena z 30 dni)
19.50 zł
39.00 zł(-50%) -
This book picks up right where Learning Perl leaves off. With Intermediate Perl, you’ll graduate from short scripts to much larger programs, using features that make Perl a general-purpose language. This gentle but thorough guide introduces you to modules, complex data structures, and objec...
Intermediate Perl. Beyond The Basics of Learning Perl. 2nd Edition Intermediate Perl. Beyond The Basics of Learning Perl. 2nd Edition
(143.65 zł najniższa cena z 30 dni)143.65 zł
169.00 zł(-15%)
Ebooka "Perl Template Toolkit. Scalable Templating for the Web" przeczytasz na:
-
czytnikach Inkbook, Kindle, Pocketbook, Onyx Boox i innych
-
systemach Windows, MacOS i innych
-
systemach Windows, Android, iOS, HarmonyOS
-
na dowolnych urządzeniach i aplikacjach obsługujących formaty: PDF, EPub, Mobi
Masz pytania? Zajrzyj do zakładki Pomoc »
Audiobooka "Perl Template Toolkit. Scalable Templating for the Web" posłuchasz:
-
w aplikacji Ebookpoint na Android, iOS, HarmonyOs
-
na systemach Windows, MacOS i innych
-
na dowolnych urządzeniach i aplikacjach obsługujących format MP3 (pliki spakowane w ZIP)
Masz pytania? Zajrzyj do zakładki Pomoc »
Kurs Video "Perl Template Toolkit. Scalable Templating for the Web" zobaczysz:
-
w aplikacjach Ebookpoint i Videopoint na Android, iOS, HarmonyOs
-
na systemach Windows, MacOS i innych z dostępem do najnowszej wersji Twojej przeglądarki internetowej
Szczegóły ebooka
- ISBN Ebooka:
- 978-14-493-1323-4, 9781449313234
- Data wydania ebooka:
- 2003-12-23 Data wydania ebooka często jest dniem wprowadzenia tytułu do sprzedaży i może nie być równoznaczna z datą wydania książki papierowej. Dodatkowe informacje możesz znaleźć w darmowym fragmencie. Jeśli masz wątpliwości skontaktuj się z nami sklep@ebookpoint.pl.
- Język publikacji:
- angielski
- Rozmiar pliku ePub:
- 1.7MB
- Rozmiar pliku Mobi:
- 5.1MB
Spis treści ebooka
- Perl Template Toolkit
- A Note Regarding Supplemental Files
- Preface
- Audience
- About this Book
- Conventions Used in This Book
- Comments and Questions
- Acknowledgments
- Andy Wardley
- Darren Chamberlain
- David Cross
- 1. Getting Started with the Template Toolkit
- What the Template Toolkit Does
- The Templating Ecosystem
- The Template Toolkit Is for More Than HTML
- The Template Toolkit Lets You Choose Your Separation
- Nonprogrammers Can Maintain Templates
- The Template Toolkit Is Easy to Extend
- Installing the Template Toolkit
- Downloading
- Installing
- Documentation and Support
- Viewing the Documentation
- Overview of the Documentation
- Accessing the Mailing List
- Using the Template Toolkit
- tpage
- ttree
- The Template Module
- Template configuration options
- Apache::Template Module
- The Template Toolkit Language
- Template Variables
- Complex Variables
- Lists
- Hashes
- Nesting list and hash definitions
- Dynamic Variables
- Virtual Methods
- Template Directives
- Variable Directives
- Template Processing Directives
- Loops
- Conditionals
- Filters, Plugins, and Macros
- Integrating and Extending the Template Toolkit
- 2. Building a Complete Web Site Using the Template Toolkit
- Getting Started
- A Single Page
- A Hello World HTML Template
- Processing Templates with tpage
- Getting Started
- Template Components
- Headers and Footers
- The PROCESS directive
- The INSERT directive
- Headers and Footers
- Benefits of Modularity
- Defining Variables
- Configuration Template
- Comments
- Variable values
- Configuration Template
- Loading the Configuration Template
- Merging directives
- Generating Many Pages
- Creating a Project Directory
- ttree Configuration File
- Running ttree for the First Time
- Using a Build Script
- ttree Configuration Directory
- Calling ttree Through the Build Script
- A Place for Everything, and Everything in Its Place
- Running the Build Script
- Skipping Unmodified Templates
- Adding Headers and Footers Automatically
- Defining META Tags
- More Template Components
- The INCLUDE Directive
- Setting Default Values
- The DEFAULT directive
- Expressions
- = versus = =
- Setting variables using expressions
- Setting variables using directives
- The IF Directive
- Wrapper and Layout Templates
- The WRAPPER Directive
- Using an Automatic Wrapper Template
- Using Layout Templates
- Layout Example
- Side-effect wrappers
- Separating layout concerns
- Plugins and the USE directive
- Menu Components
- Simple Menu Template
- The BLOCK directive
- Simple Menu Template
- Component Libraries
- The EXPOSE_BLOCKS option
- The FOREACH Directive
- Defining and Using Complex Data
- Structured Configuration Templates
- Layered Configuration Templates
- Choosing Global Variables Wisely
- Passing Around Data Structures
- Assessment
- 3. The Template Language
- Template Syntax
- Text and Directives
- Template parser
- Parse errors
- Caching templates
- Flexible syntax
- Text and Directives
- Template Tags
- Interpolated Variables
- Comments
- Whitespace Chomping
- Chomping flags
- Chomping options
- Chomping constants
- Template Syntax
- Multiple Directive Tags
- Side-Effect Notation
- Capturing Directive Output
- Template Filenames
- Template Variables
- Whats in a Name?
- Simple Data Types
- Complex Data Types
- Lists
- Hashes
- Dot Operator
- Compound dot operations
- Interpolated variables names
- Private variables
- Dynamic Data Types
- Subroutines
- Objects
- Passing arguments
- Pointless arguments
- Named parameters
- Mixing dynamic and static data
- Returning values
- Error handling
- Special Variables
- template
- component
- loop
- error
- content
- global
- view, item
- Variable Scope
- Compile-Time Constant Folding
- Virtual Methods
- Scalar Virtual Methods
- chunk(size)
- defined
- hash
- length
- list
- match(pattern)
- repeat(n)
- replace(search, replace)
- size
- split(pattern)
- Scalar Virtual Methods
- List Virtual Methods
- first(n)
- grep(pattern)
- join(delimiter)
- last(n)
- max
- merge(list)
- pop
- reverse
- shift
- size
- slice(from, to)
- sort, nsort
- splice(offset, length, list)
- unique
- unshift(item)
- push(item)
- Hash Virtual Methods
- defined(key)
- each
- exists(key)
- import(hash)
- item(key)
- keys
- list
- size
- sort, nsort
- values
- Defining New Virtual Methods
- Stash package variables
- Stash and context methods
- 4. Template Directives
- Accessing Variables
- GET
- SET
- CALL
- DEFAULT
- Accessing Variables
- Accessing External Templates and Files
- INSERT
- INCLUDE
- PROCESS
- WRAPPER
- Defining Local Template Blocks
- Loops
- FOREACH
- Complex data
- Importing hash array items
- Iterating over entries in a hash array
- The loop iterator object
- Nested FOREACH loops
- FOREACH
- WHILE
- Flow control: NEXT and LAST
- Conditionals
- IF, ELSIF, ELSE, and UNLESS
- SWITCH and CASE
- Filters
- Plugins
- USE
- Macros
- MACRO
- Template Metadata
- META
- Exception Handling
- TRY / THROW / CATCH / FINAL
- CLEAR
- Flow Control
- RETURN
- STOP
- NEXT
- LAST
- Debugging
- Perl Blocks
- PERL
- RAWPERL
- 5. Filters
- Using Filters
- Standard Template Toolkit Filters
- collapse
- eval / evaltt
- format(fmt)
- html
- html_break / html_para_break
- html_entity
- html_line_break
- html_para
- indent(pad)
- latex(outputType)
- lcfirst
- lower
- null
- perl / evalperl
- redirect(file, options)
- remove(string)
- repeat(iterations)
- replace(search, replace)
- stderr
- stdout(options)
- trim
- truncate(length)
- ucfirst
- upper
- uri
- 6. Plugins
- Using Plugins
- Standard Template Toolkit Plugins
- Autoformat
- CGI
- Datafile
- Date
- Directory
- DBI
- Dumper
- File
- Format
- GD
- HTML
- Image
- Iterator
- Pod
- String
- Table
- URL
- Wrap
- XML::DOM
- XML::RSS
- XML::Style
- XML::XPath
- 7. Anatomy of the Template Toolkit
- Template Modules
- Template::Service
- Template::Context
- Template::Stash
- Template::Provider
- Template::Parser
- Template::Grammar
- Template::Directive
- Template::Namespace::Constants
- Template::Document
- Template Modules
- The Runtime Engine
- Module Interfaces
- Templates process Method
- The process method
- Input template
- Template variables
- Redirecting template output
- Processing options
- The process method
- The error method
- Templates process Method
- Template::Config
- load
- preload
- instdir
- Template::Constants
- :status
- :error
- :chomp
- :debug
- Template::Base
- new
- error
- debug
- Template::Context
- stash
- insert, include, and process
- template
- plugin and filter
- define_filter
- Template::Provider
- fetch($name)
- store($name, $template)
- paths
- Template::Stash
- get, set
- clone, declone
- Template::Filters
- new
- fetch
- store
- Template::Plugin
- load
- new
- error
- Template::Plugins
- new
- fetch
- Template::Parser and Template::Grammar
- Template::Directive
- Template::Document
- new
- process
- write_perl_file
- AUTOLOAD
- Template::Exception
- Template::Iterator
- 8. Extending the Template Toolkit
- Using and Implementing Noncore Components
- A Provider That Can Fetch Files over HTTP
- Restricting Access to Plugins
- A chrooted Provider
- Using and Implementing Noncore Components
- Creating Filters
- Static Filters
- Dynamic Filters
- Template::Plugin::Filter
- Writing New Filters
- Digest::MD5
- Text::Bastardize
- Text::FIGlet
- Normalizing HTML: HTML::Clean
- Creating Plugins
- The Template::Plugin Module
- Installing Functions into the Stash from Within a Plugin
- Defining Filters from Within a Plugin
- Defining New Virtual Methods from Within a Plugin
- Writing New Plugins
- A simple wrapper plugin
- A more complex wrapper plugin
- A plugin that sends mail
- GoogleSearch
- Normalizing URLs
- Building a New Frontend
- Mail::Template
- Custom Apache Handlers
- Changing the Language
- Building the Grammar
- Extending the Existing Grammar
- Replacing the Default Grammar
- Template::Simple
- The Template::Simple grammar
- 9. Accessing Databases
- Using the DBI Plugin
- Simple Database Access with the DBI Plugin
- A More Complex Example: Web Access Logs
- Using the DBI Plugin
- Using Class::DBI
- Using DBIx::Table2Hash
- Writing Your Own Database Abstraction Layer
- 10. XML
- Simple XML Processsing
- Creating XML Documents
- Modeling Data About a TV Show
- DTD for a TV Show
- XML Template
- Processing RSS Files with XML.RSS
- Processing XML Documents with XML.DOM
- Processing XML Documents with XML.XPath
- Processing XML Documents with XML.LibXML
- Using Views to Transform XML Content
- 11. Advanced Static Web Page Techniques
- Getting Started
- Directory Structure
- Web Server Configuration
- ttree Configuration
- Simple pre_process and wrapper Templates
- Creating the Build Script
- A First HTML Page
- Automating the Project Configuration Process
- Getting Started
- Library Templates
- Configuration Templates
- Layout Templates
- Page wrappers
- Layout components
- Content Templates
- HTML Pages
- CSS and Other Non-HTML Pages
- Content Components
- Debugging Pages
- Navigation Components
- Adding Site Structure
- Map nodes
- XML site map
- Selective mapmaking
- Adding Site Structure
- Walking the Structure
- Building a Nested Menu
- A Stacked Menu
- Bread-Crumb Trail
- Previous and Next Pages
- Structuring Page Content
- Defining Sections
- Section headers
- Section wrappers
- Sections and subsections
- Defining Sections
- A Table of Contents
- Anchor points
- Better page macros
- Generating the table of contents
- Reusing menu components
- Adding the table of contents automatically
- Declarative Markup Using XML
- XML page content
- XML page wrapper
- XML view templates
- Creating a New Skin
- Creating a Skin
- Custom Navigation Components
- Nested menu
- Menu elements
- Stacked menu
- Other page components
- 12. Dynamic Web Content and Web Applications
- CGI Scripts
- Simple CGI Script
- Using standard templates
- Simple CGI Script
- Using the DATA Section
- Using the CGI Module
- Setting cookies
- CGI Scripts
- CGI Script Web Application
- CGI script
- Preparation
- Application
- Presentation
- CGI script
- Template components
- Page templates
- CGI Templates
- Using the CGI Plugin
- Web Programming in Templates
- Dispatching CGI script
- Main control template
- Additional control templates
- Perl or template?
- Apache and mod_perl
- Apache::Template
- Custom Apache Handler
- A Complete Web Application
- Storage
- TTBook::H2G2::Database
- Storage
- Configuration
- Application
- Apache mod_perl Interface Module
- Apache Configuration
- A. Appendix: Configuration Options
- Template Toolkit Configuration Options
- ABSOLUTE
- ANYCASE
- AUTO_RESET
- BLOCKS
- CACHE_SIZE
- COMPILE_EXT
- COMPILE_DIR
- CONSTANTS
- CONSTANT_NAMESPACE
- NAMESPACE
- CONTEXT
- DEBUG
- DEBUG_FORMAT
- DEFAULT
- DELIMITER
- ERROR
- EVAL_PERL
- FACTORY
- FILTERS
- GRAMMAR
- INCLUDE_PATH
- INTERPOLATE
- LOAD_FILTERS
- LOAD_PERL
- LOAD_PLUGINS
- LOAD_TEMPLATES
- OUTPUT_PATH
- OUTPUT
- PARSER
- PLUGIN_BASE
- PLUGINS
- PRE_CHOMP, POST_CHOMP
- PRE_DEFINE, VARIABLES
- PRE_PROCESS, POST_PROCESS
- PROCESS
- RECURSION
- RELATIVE
- SERVICE
- STASH
- START_TAG, END_TAG
- TAG_STYLE
- TOLERANT
- TRIM
- VARIABLES, PRE_DEFINE
- V1DOLLAR
- Template Toolkit Configuration Options
- Apache::Template Configuration Options
- TT2Tags
- TT2PreChomp
- TT2PostChomp
- TT2Trim
- TT2AnyCase
- TT2Interpolate
- TT2IncludePath
- TT2Absolute
- TT2Relative
- TT2Delimiter
- TT2PreProcess
- TT2PostProcess
- TT2Process
- TT2Default
- TT2Error
- TT2EvalPerl
- TT2LoadPerl
- TT2Recursion
- TT2PluginBase
- TT2AutoReset
- TT2CacheSize
- TT2CompileExt
- TT2CompileDir
- TT2Debug
- TT2Headers
- TT2Params
- TT2ServiceModule
- Index
- About the Authors
- Colophon
- Copyright
O'Reilly Media - inne książki
-
Software as a service (SaaS) is on the path to becoming the de facto model for building, delivering, and operating software solutions. Adopting a multi-tenant SaaS model requires builders to take on a broad range of new architecture, implementation, and operational challenges. How data is partiti...(237.15 zł najniższa cena z 30 dni)
245.65 zł
289.00 zł(-15%) -
Great engineers don't necessarily make great leaders—at least, not without a lot of work. Finding your path to becoming a strong leader is often fraught with challenges. It's not easy to figure out how to be strategic, successful, and considerate while also being firm. Whether you're on the...(118.15 zł najniższa cena z 30 dni)
126.65 zł
149.00 zł(-15%) -
Data science happens in code. The ability to write reproducible, robust, scaleable code is key to a data science project's success—and is absolutely essential for those working with production code. This practical book bridges the gap between data science and software engineering,and clearl...(211.65 zł najniższa cena z 30 dni)
220.15 zł
259.00 zł(-15%) -
With the massive adoption of microservices, operators and developers face far more complexity in their applications today. Service meshes can help you manage this problem by providing a unified control plane to secure, manage, and monitor your entire network. This practical guide shows you how th...(194.65 zł najniższa cena z 30 dni)
211.65 zł
249.00 zł(-15%) -
Get practical advice on how to leverage AI development tools for all stages of code creation, including requirements, planning, design, coding, debugging, testing, and documentation. With this book, beginners and experienced developers alike will learn how to use a wide range of tools, from gener...(164.25 zł najniższa cena z 30 dni)
186.15 zł
219.00 zł(-15%) -
Rust's popularity is growing, due in part to features like memory safety, type safety, and thread safety. But these same elements can also make learning Rust a challenge, even for experienced programmers. This practical guide helps you make the transition to writing idiomatic Rust—while als...(164.25 zł najniższa cena z 30 dni)
186.15 zł
219.00 zł(-15%) -
Advance your Power BI skills by adding AI to your repertoire at a practice level. With this practical book, business-oriented software engineers and developers will learn the terminologies, practices, and strategy necessary to successfully incorporate AI into your business intelligence estate. Je...(211.65 zł najniższa cena z 30 dni)
220.15 zł
259.00 zł(-15%) -
Microservices can be a very effective approach for delivering value to your organization and to your customers. If you get them right, microservices help you to move fast by making changes to small parts of your system hundreds of times a day. But if you get them wrong, microservices will just ma...(203.15 zł najniższa cena z 30 dni)
211.65 zł
249.00 zł(-15%) -
JavaScript gives web developers great power to create rich interactive browser experiences, and much of that power is provided by the browser itself. Modern web APIs enable web-based applications to come to life like never before, supporting actions that once required browser plug-ins. Some are s...(186.15 zł najniższa cena z 30 dni)
186.15 zł
219.00 zł(-15%) -
How will software development and operations have to change to meet the sustainability and green needs of the planet? And what does that imply for development organizations? In this eye-opening book, sustainable software advocates Anne Currie, Sarah Hsu, and Sara Bergman provide a unique overview...(169.14 zł najniższa cena z 30 dni)
177.65 zł
209.00 zł(-15%)
Dzieki opcji "Druk na żądanie" do sprzedaży wracają tytuły Grupy Helion, które cieszyły sie dużym zainteresowaniem, a których nakład został wyprzedany.
Dla naszych Czytelników wydrukowaliśmy dodatkową pulę egzemplarzy w technice druku cyfrowego.
Co powinieneś wiedzieć o usłudze "Druk na żądanie":
- usługa obejmuje tylko widoczną poniżej listę tytułów, którą na bieżąco aktualizujemy;
- cena książki może być wyższa od początkowej ceny detalicznej, co jest spowodowane kosztami druku cyfrowego (wyższymi niż koszty tradycyjnego druku offsetowego). Obowiązująca cena jest zawsze podawana na stronie WWW książki;
- zawartość książki wraz z dodatkami (płyta CD, DVD) odpowiada jej pierwotnemu wydaniu i jest w pełni komplementarna;
- usługa nie obejmuje książek w kolorze.
Masz pytanie o konkretny tytuł? Napisz do nas: sklep[at]helion.pl.
Książka, którą chcesz zamówić pochodzi z końcówki nakładu. Oznacza to, że mogą się pojawić drobne defekty (otarcia, rysy, zagięcia).
Co powinieneś wiedzieć o usłudze "Końcówka nakładu":
- usługa obejmuje tylko książki oznaczone tagiem "Końcówka nakładu";
- wady o których mowa powyżej nie podlegają reklamacji;
Masz pytanie o konkretny tytuł? Napisz do nas: sklep[at]helion.pl.
Książka drukowana
Oceny i opinie klientów: Perl Template Toolkit. Scalable Templating for the Web Darren Chamberlain, Dave Cross, Andy Wardley (0) Weryfikacja opinii następuję na podstawie historii zamówień na koncie Użytkownika umieszczającego opinię. Użytkownik mógł otrzymać punkty za opublikowanie opinii uprawniające do uzyskania rabatu w ramach Programu Punktowego.