A tutorial from my blog http://jbkflex.wordpress.com on how to customize the look and feel of the default Sencha Touch List control and give it something of your own.
In a real life almost any project deals with the
tree structures. Different kinds of taxonomies,
site structures etc require modeling of
hierarchy relations.
Typical approaches used
● Model Tree Structures with Child References
● Model Tree Structures with Parent References
● Model Tree Structures with an Array of Ancestors
● Model Tree Structures with Materialized Paths
● Model Tree Structures with Nested Sets
Explains DOM and Events. HTML-Only DOM is explained and Form elements.
Events handling using element properties and event listeners is explained too.
A quick review on Cookies and referrer is briefed too
https://speakerdeck.com/willroth/50-laravel-tricks-in-50-minutes - origin
Laravel 5.1 raised the bar for framework documentation, but there's much, much more lurking beneath the surface. In this 50-minute session, we'll explore 50 (yes, 50!) high-leverage implementation tips & tricks that you just won't find in the docs: the IoC Container, Blade, Eloquent, Middleware, Routing, Commands, Queues, Events, Caching — we'll cover them all! Join us as we drink from the fire hose & learn to take advantage of everything that Laravel has to offer to build better software faster!
In a real life almost any project deals with the
tree structures. Different kinds of taxonomies,
site structures etc require modeling of
hierarchy relations.
Typical approaches used
● Model Tree Structures with Child References
● Model Tree Structures with Parent References
● Model Tree Structures with an Array of Ancestors
● Model Tree Structures with Materialized Paths
● Model Tree Structures with Nested Sets
Explains DOM and Events. HTML-Only DOM is explained and Form elements.
Events handling using element properties and event listeners is explained too.
A quick review on Cookies and referrer is briefed too
https://speakerdeck.com/willroth/50-laravel-tricks-in-50-minutes - origin
Laravel 5.1 raised the bar for framework documentation, but there's much, much more lurking beneath the surface. In this 50-minute session, we'll explore 50 (yes, 50!) high-leverage implementation tips & tricks that you just won't find in the docs: the IoC Container, Blade, Eloquent, Middleware, Routing, Commands, Queues, Events, Caching — we'll cover them all! Join us as we drink from the fire hose & learn to take advantage of everything that Laravel has to offer to build better software faster!
How else can you write the code in PHP?Maksym Hopei
Usually we are limited with our environment and habits. When we make changes to a product or when we work with a team we follow the coding standards and the existing approaches to make our life and life of our teammates easier.
But often we do the same when we start a new product on our own ruled by our habits and by the limitations of our horizon.
This talk is intended to introduce some uncustomary ways to write code.
Dig Deeper into WordPress - WD Meetup CairoMohamed Mosaad
Dig deeper into WordPress is a presentation made for Web Designers Meetup in Cairo taken place on 17th Dec 2012.
Signup at WPMonkeys.com to get notified when awesome new WordPress related content is published.
Presentation I gave at the Berkeley Drupal Users Group on February 27, 2012 covering entities in Drupal 7 including entity types, bundles, fields, nodes, the Entity API and the Schema API. I use TextbookMadness.com as an example of how to leverage entities.
Click on my name to find a newer (better!) version of these slides.
Con la versione 7 di Drupal è stato introdotto il concetto di Entity, poi evoluto con la versione 8, utilizzato come base di buona parte degli elementi core (nodi, tassonomie, utenti, ...), ma - soprattutto - è stata data la possibilità di costruire entity custom. L'utilizzo di queste apre le possibilità di personalizzazione dello strumento ad un livello superiore velocizzando notevolmente lo sviluppo.
Verranno mostrate le potenzialità nell'uso delle Entity custom e le integrazioni possibili.
PT.BUZOO INDONESIA is No1 Japanese offshore development company in Indonesia.
We are professional of web solution and smartphone apps. We can support Japanese, English and Indonesia.
We are hiring now at http://buzoo.co.id/
Introduction to Sencha Touch, some people said it is one of the best mobile web framework. Some people didn't say that though.. well this is democracy :D
How else can you write the code in PHP?Maksym Hopei
Usually we are limited with our environment and habits. When we make changes to a product or when we work with a team we follow the coding standards and the existing approaches to make our life and life of our teammates easier.
But often we do the same when we start a new product on our own ruled by our habits and by the limitations of our horizon.
This talk is intended to introduce some uncustomary ways to write code.
Dig Deeper into WordPress - WD Meetup CairoMohamed Mosaad
Dig deeper into WordPress is a presentation made for Web Designers Meetup in Cairo taken place on 17th Dec 2012.
Signup at WPMonkeys.com to get notified when awesome new WordPress related content is published.
Presentation I gave at the Berkeley Drupal Users Group on February 27, 2012 covering entities in Drupal 7 including entity types, bundles, fields, nodes, the Entity API and the Schema API. I use TextbookMadness.com as an example of how to leverage entities.
Click on my name to find a newer (better!) version of these slides.
Con la versione 7 di Drupal è stato introdotto il concetto di Entity, poi evoluto con la versione 8, utilizzato come base di buona parte degli elementi core (nodi, tassonomie, utenti, ...), ma - soprattutto - è stata data la possibilità di costruire entity custom. L'utilizzo di queste apre le possibilità di personalizzazione dello strumento ad un livello superiore velocizzando notevolmente lo sviluppo.
Verranno mostrate le potenzialità nell'uso delle Entity custom e le integrazioni possibili.
PT.BUZOO INDONESIA is No1 Japanese offshore development company in Indonesia.
We are professional of web solution and smartphone apps. We can support Japanese, English and Indonesia.
We are hiring now at http://buzoo.co.id/
Introduction to Sencha Touch, some people said it is one of the best mobile web framework. Some people didn't say that though.. well this is democracy :D
You understand the basics of jQuery to handle some events and maybe do some animation, but there's a lot more that you could be doing.
Local JavaScript experts Mark Casias and Brian Arnold will walk you through a few examples of using jQuery and JavaScript to tackle a couple of common issues, as well as how to create a simple application that utilizes information from other services.
"AchieversIT is offering best training in UI development, our training is based on conceptual with practical knowledge. Live Training & Corporate Training. 100% placement guarantee. learn HTML5, CSS3, Javascript, JQuery, React.JS, Bootstrap, Json.
"
JavaScript Objects and OOP Programming with JavaScriptLaurence Svekis ✔
Get this Course
https://www.udemy.com/javascript-objects-oop/?couponCode=SLIDESHARE
Use objects to create amazing things with JavaScript power up your applications OOP JavaScript coding
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024Neo4j
Neha Bajwa, Vice President of Product Marketing, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
GridMate - End to end testing is a critical piece to ensure quality and avoid...ThomasParaiso2
End to end testing is a critical piece to ensure quality and avoid regressions. In this session, we share our journey building an E2E testing pipeline for GridMate components (LWC and Aura) using Cypress, JSForce, FakerJS…
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Customizing the list control - Sencha Touch mobile web application
1. Customizing the List control – Sencha Touch
A post from my blog http://jbkflex.wordpress.com on how to customize the look and feel of the default Sencha List
control.
In this tutorial I am going to discuss and show you how to customize the look and feel of the default Sencha List
control. As you might know the normal list control that Sencha provides has a basic structure which looks like the
image on the left below. You can see that it has got individual list items which are laid down vertically and can be
scrolled down to see more items. List uses an Ext.XTemplate as its internal templating mechanism which defines the
look and feel. The data for the List comes from a Ext.data.Store which is bound to it. Whenever there is a change in
data in the Store the change is automatically reflected in the List since it is bounded. I have discussed about how to
create basic List in my previous tutorials. Now let’s modify the look of the List control. We will make a List that looks
like the image on the right. You can see in the new list, it is complete customization of each items. So, now we have
more of a <div> block with custom styles and images. Let’s see how this can be done.
Item Templates / XTemplates
If you have worked with Flex you might have heard of something called ItemRenderer. Ok, let me tell a little about
them if you have no idea. So, ItemRenderer’s are like custom templates using which you can customize the look of
your List items, or it can be any Data control for eg. a DataGrid as well. Here is a good tutorial on ItemRenderers. So,
we are going to do similar things in our Sencha List control.
2. Ok now, let’s talk a little about item templates before we move to the actual work in hand. Item templates are created
by using the Ext.XTemplate class and it will define the look and feel along with what fields you will be displaying in
each of your list item. This is how to create basic XTemplate
var tpl = new Ext.XTemplate(
'<p>Kids: ',
'<tpl for=".">', // process the data.kids node
'<p>{name}</p>', //display the name
'</tpl></p>'
);
As you can see in the simple example we have created a basic XTemplate. The tpl tag and the for operator are used
to process the provided data object. It is mainly meant for looping the data objects. Remember that your data is
provided by the Store and this can be a JSON data or an XML which has a hierarchical structure something like this
var data = { //JSON data object
name: 'Tommy Maintz',
title: 'Lead Developer',
company: 'Ext JS, Inc',
email: 'tommy@extjs.com',
address: '5 Cups Drive',
city: 'Palo Alto',
state: 'CA',
zip: '44102',
drinks: ['Coffee', 'Soda', 'Water'],
kids: [{
name: 'Joshua',
age:3
3. },{
name: 'Matthew',
age:2
},{
name: 'Solomon',
age:0
}]
};
As you can see the property kids is an array of objects (with properties name and age). So to loop around each kid
inside the data object we can write something like this in our XTemplate
var tpl = new Ext.XTemplate(
'<p>Name: {name}</p>',
'<p>Title: {title}</p>',
'<p>Company: {company}</p>',
'<p>Kids: ',
'<tpl for="kids">', // interrogate the kids property
within the data
'<p>{name}</p>',
'</tpl></p>'
);
You can see the value assigned to the for operator which is kids, so it will loop through each kid object and print the
name. Also you can see the {name} inside the tags, it is kind of a placeholder or rather a replacement of the object
property. This {name} field defined here actually comes from the model that the store has declared in it. Example
shown below
Ext.regModel('kidModel', {
fields: ['name'] //fields are declared here
});
4. var kidStore = new Ext.data.Store({
model: 'kidModel',
data: dataObj //that we have defined above
});
Ext.data.Storescan store inline data so we have assigned the value of dataObj that we have created earlier in our
tutorial to the data property inside our store. You can learn more on Ext.data.Stores, Models and XTemplates from
the Sencha Touch API docs. Also I will be posting some more tutorials on these soon. Now to put all these together in
a List, it will look something like this
var myList = new Ext.List({
id:'myList',
layout:'fit',
store:kidStore,
itemTpl: tpl,
emptyText:'Sorry, no data!'
});
Ok, we have seen some basic concepts and I will not deviate further away from our real topic on hand that is to
customize the List control.
Customization
To customize the List control, we will have to make changes mainly in our XTemplate where we will create new
HTML elements such as <div> for example, and wrap our data fields inside them and then style our <div>’s that we
have created using basic CSS. So here we go, this will be the data that we will show in our list
var productData = [
{"name": "iPod", "price": "$300", "image_url":
"images/ipod.png", "in_stock": "yes"},
{"name": "Toaster", "price": "$200", "image_url":
"images/toaster.png", "in_stock": "yes"},
5. {"name": "Clock", "price": "$120", "image_url":
"images/clock.png", "in_stock": "no"},
];
Lets define our model with all the fields we need
Ext.regModel('productModel', {fields: ['name','price','image_url','in_stock']});
Now lets create our store that will hold the data
var productStore = new Ext.data.Store({
model: 'productModel',
data: productData
});
Now, most important of all of them, lets create our XTemplate. Before writing code the image below shows the basic
layout structure of the block that we will design for each List item.
As you can see above we have a main <div> block which contains two <div> blocks inside it, the title <div> block and
the body <div> block that will hold the product image and other details. Here is the XTemplate for our custom block
var productTemplate = new Ext.XTemplate(
'<tpl for=".">',
'<div class="productBox">',
'<div class="productTitle">',
'{name}',
'<img class="nextIcon"
src="images/next.png"/>',
'</div>',
'<div class="productBody">',
'<img class="productImage"
src="{image_url}"/>',
6. '<ol>',
'<li>Price: {price}</li>',
'<li>In Stock: {in_stock}</li>',
'</ol>',
'</div>',
'</div>',
'</tpl>'
);
There are three items in the data so <tpl for=”.”> will loop three times each for one data object. And then it will put
the values of the corresponding fields in the placeholders. As you can see in the code block we have a div box
ofclassname = ‘productBox’. It holds two <div> blocks inside it, one for the title (class = ‘productTitle’) and the
other for the body (class=’productBody’). The styles for them are all defined in the CSS which I will show later. You
can also see in the code block the images that have been put together. Overall the code block is pretty simple and
self-explanatory. Now lets bind the store, template to our list. This is how to do it
var productList = new Ext.List({
styleHtmlContent:true,
store: productStore,
itemTpl: productTemplate,
layout:'fit',
height:"100%",
emptyText:'Oops! No data'
});
And then we can put our List in a Panel for it to display. Lets look at the full code and then I can explain more
<!DOCTYPE html>
<html>
<head>
<title>Custom List</title>
10. </body>
</html>
We have pretty much discussed the things needed to create our custom product list. However, in the productList
control above you can notice some CSS class properties that have been bolded. We have provided some CSS class
names (for eg. testOver) for specific purpose. Here they are
styleHtmlCls:'testHtml',
overItemCls:'testOver',
selectedItemCls:'testSelect',
pressedCls:'testPress',
You might ignore this for your custom List, but I will tell you that these are important. These are predefined CSS class
names for the List control and by setting custom classes you can further control the look of your custom List. These
are the definitions of the properties from the Sencha Touch API docs
styleHtmlCls : String
The class that is added to the content target when you set styleHtmlContent to true.
This means that this CSS class will define the overall look of your list.
overItemCls : String
A CSS class to apply to each list item on mouseover
selectedItemCls : String
A CSS class to apply to each selected item in the list
pressedCls : String
A CSS class to apply to an item in the list while it is being pressed
We will set the CSS styles for all these classes in our CSS block. Lets see our CSS block now
<style>
.productBox
{
border:1px solid #9a9a9a;
}
12. .productBody ol li
{
list-style:none;
}
.productImage
{
width:50px;
}
.testSelect
{
background-color:#efefef;
}
.testPress
{
/*I want that nothing should happen, so blank*/
}
.testHtml
{
font-family:'Helvetica Neue', HelveticaNeue, Helvetica-Neue, Helvetica,
'BBAlpha Sans', sans-serif;
13. font-size:15px;
}
.testOver
{
background-color:#aaaaaa;
}
</style>
Simple CSS code, nothing fancy here. Note the custom CSS classes testOver, testHtml, testPress,
testSelectdefined in the product List. We have put some CSS rules for them. Now, include this CSS block in your
index page and we are ready to go. You should be able to see this at the end
14. A Custom Product List
Here is the demo application. Open it in your touch phone or test it in http://www.iphonetester.com/ which is an online
iPhone simulator. This is it and we are good to go I guess.