text:
Latest Titles With Steve Kloves
- Job Types
- Movies or TV
- Genres
- Keywords
- IMDb Rating
- Instant Watch Options
- In Theaters
- On TV
- Release Year
1. Defending Jacob
Mystery, Thriller | Announced
A district attorney working to clear his teenage son in a murder case stumbles into a series of startling discoveries about his child.
Director: Steve Kloves
2. Fantastic Beasts and Where to Find Them 2 (2018)
Adventure, Family, Fantasy | Filming
The second installment of the 'Fantastic Beasts and Where to Find Them' series which follows the adventures of Newt Scamander.
Director: David Yates | Stars: Johnny Depp, Katherine Waterston, Zoë Kravitz, Ezra Miller
3. Jungle Book (2018)
Adventure, Drama | Post-production
An orphaned boy is raised in the wild.
Director: Andy Serkis | Stars: Andy Serkis, Benedict Cumberbatch, Christian Bale, Cate Blanchett
4. White Boy Rick (2018)
Crime, Drama | Post-production
The story of teenager, Richard Wershe Jr., who became an undercover informant for the police during the 1980s and was ultimately arrested for drug-trafficking and sentenced to life in prison.
Director: Yann Demange | Stars: Matthew McConaughey, Jennifer Jason Leigh, Rory Cochrane, Piper Laurie
5. Fantastic Beasts and Where to Find Them (2016)
PG-13 | 133 min | Adventure, Family, Fantasy
The adventures of writer Newt Scamander in New York's secret community of witches and wizards seventy years before Harry Potter reads his book in school.
Director: David Yates | Stars: Eddie Redmayne, Katherine Waterston, Alison Sudol, Dan Fogler
Votes: 249,424 | Gross: $234.02M
6. The Amazing Spider-Man (2012)
PG-13 | 136 min | Action, Adventure
After Peter Parker is bitten by a genetically altered spider, he gains newfound, spider-like powers and ventures out to solve the mystery of his parent's mysterious death.
Director: Marc Webb | Stars: Andrew Garfield, Emma Stone, Rhys Ifans, Irrfan Khan
Votes: 479,972 | Gross: $262.03M
7. Creating the World of Harry Potter, Part 7: Story (2012 Video)
Stars: J.K. Rowling, Steve Kloves
Votes: 22
8. Harry Potter and the Deathly Hallows: Part 2 (2011)
PG-13 | 130 min | Adventure, Drama, Fantasy
Harry, Ron and Hermione search for Voldemort's remaining Horcruxes in their effort to destroy the Dark Lord as the final battle rages on at Hogwarts.
Director: David Yates | Stars: Daniel Radcliffe, Emma Watson, Rupert Grint, Michael Gambon
Votes: 598,470 | Gross: $380.96M
9. 1st Look (2011– )
Stars: Steven Samblis, Neil Patrick Harris, Bentley Kyle Evans, Alphonso McAuley
Votes: 22
10. Conversation with J.K. Rowling and Steve Kloves (2011 Video)
16 min | Documentary, Short
Lizo Mzimba interviews author J.K. Rowling and screenwriter Steve Kloves about Harry Potter and the Chamber of Secrets (2002).
Stars: J.K. Rowling, Steve Kloves, Lizo Mzimba
Votes: 15
Made in Hollywood (2005– )
Episode #6.32
Director: Cleveland O'Neal III | Stars: Stephen J. Anderson, Kristen Anderson-Lopez, Mike Cahill, Don Cheadle
1st Look (2011– )
Harry Potter
Director: Steven Samblis | Stars: Joey Fatone, Rupert Grint, David Heyman, Steve Kloves
13. Harry Potter and the Deathly Hallows: Part 1 (2010)
PG-13 | 146 min | Adventure, Family, Fantasy
As Harry races against time and evil to destroy the Horcruxes, he uncovers the existence of three most powerful objects in the wizarding world: the Deathly Hallows.
Director: David Yates | Stars: Daniel Radcliffe, Emma Watson, Rupert Grint, Bill Nighy
Votes: 361,777 | Gross: $294.98M
14. Harry Potter and the Forbidden Journey (2010)
5 min | Short, Adventure
Amusement ride at the Wizarding World of Harry Potter in the Island of Adventure Park, Orlando, Florida.
Director: Thierry Coup | Stars: Ken Bones, Claire Carroll, Robbie Coltrane, Tom Felton
Votes: 1,637
15. Creating the World of Harry Potter, Part 3: Creatures (2010 Video)
Stars: Chris Columbus, Alfonso Cuarón, David Yates, Daniel Radcliffe
Votes: 29
16. Harry Potter and the Half-Blood Prince (2009)
PG | 153 min | Adventure, Family, Fantasy
As Harry Potter begins his sixth year at Hogwarts, he discovers an old book marked as "the property of the Half-Blood Prince" and begins to learn more about Lord Voldemort's dark past.
Director: David Yates | Stars: Daniel Radcliffe, Emma Watson, Rupert Grint, Michael Gambon
Votes: 355,602 | Gross: $301.96M
17. Fantastic Mr. Fox (2009)
PG | 87 min | Animation, Adventure, Comedy
An urbane fox cannot resist returning to his farm raiding ways and then must help his community survive the farmers' retaliation.
Director: Wes Anderson | Stars: George Clooney, Meryl Streep, Bill Murray, Jason Schwartzman
Votes: 151,622 | Gross: $21.00M
18. Creating the World of Harry Potter, Part 1: The Magic Begins (2009 Video)
Stars: David Heyman, Rupert Grint, Chris Columbus, Emma Watson
Votes: 103
19. Harry Potter and the Goblet of Fire (2005)
PG-13 | 157 min | Adventure, Family, Fantasy
A young wizard finds himself competing in a hazard its tournament between rival schools of magic, but he is distracted by recurring nightmares.
Director: Mike Newell | Stars: Daniel Radcliffe, Emma Watson, Rupert Grint, Eric Sykes
Votes: 422,145 | Gross: $289.99M
20. Made in Hollywood (2005– )
60 min | Talk-Show
"MADE IN HOLLYWOOD", is an inventive behind-the-screen entertainment news, headline; magazine-styled series, featuring exclusive celebrity interviews with Hollywood's premiere talent. There... See full summary »
Stars: Kylie Erica Mar, Julie L. Harkness, Patrick Stinson, Rahsan-Rahsan Lindsay
Votes: 214
21. Harry Potter and the Prisoner of Azkaban (2004)
PG | 142 min | Adventure, Family, Fantasy
It's Harry's third year at Hogwarts; not only does he have a new "Defense Against the Dark Arts" teacher, but there is also trouble brewing. Convicted murderer Sirius Black has escaped the Wizards' Prison and is coming after Harry.
Director: Alfonso Cuarón | Stars: Daniel Radcliffe, Emma Watson, Rupert Grint, Richard Griffiths
Votes: 420,081 | Gross: $249.36M
22. Creating the Vision (2004 Video)
11 min | Documentary, Short
A documentary about the adaptation of Harry Potter and the Prisoner of Azkaban (2004) from the original novel.
Stars: David Heyman, Steve Kloves, Mark Radcliffe, Alfonso Cuarón
Votes: 30
23. Harry Potter and the Chamber of Secrets (2002)
PG | 161 min | Adventure, Family, Fantasy
Harry ignores warnings not to return to Hogwarts, only to find the school plagued by a series of mysterious attacks and a strange voice haunting him.
Director: Chris Columbus | Stars: Daniel Radcliffe, Rupert Grint, Emma Watson, Richard Harris
Votes: 425,203 | Gross: $261.97M
24. Capturing the Stone: A Conversation with the Filmmakers (2002 Video)
16 min | Documentary, Short
A documentary about the making of Harry Potter and the Sorcerer's Stone (2001).
Stars: David Heyman, Chris Columbus, Steve Kloves, Stuart Craig
Votes: 11
25. Harry Potter and the Sorcerer's Stone (2001)
PG | 152 min | Adventure, Family, Fantasy
Rescued from the outrageous neglect of his aunt and uncle, a young boy with a great destiny proves his worth while attending Hogwarts School of Witchcraft and Wizardry.
Director: Chris Columbus | Stars: Daniel Radcliffe, Rupert Grint, Richard Harris, Maggie Smith
Votes: 490,429 | Gross: $317.56M
26. Wonder Boys (2000)
R | 107 min | Comedy, Drama
An English Professor tries to deal with his wife leaving him, the arrival of his editor who has been waiting for his book for seven years, and the various problems that his friends and associates involve him in.
Director: Curtis Hanson | Stars: Michael Douglas, Tobey Maguire, Frances McDormand, Robert Downey Jr.
Votes: 56,314 | Gross: $19.39M
27. Flesh and Bone (1993)
R | 126 min | Drama, Mystery, Romance
Some thirty years after Arlis witnesses his father murdering a family, he runs into Kay, who happens to be the family's baby who was spared. Kay and Arlis suspect nothing about each other, ... See full summary »
Director: Steve Kloves | Stars: Dennis Quaid, Meg Ryan, James Caan, Julia McNeal
Votes: 4,233 | Gross: $9.49M
28. The Fabulous Baker Boys (1989)
R | 114 min | Drama, Music, Romance
The lives of two struggling musicians, who happen to be brothers, inevitably change when they team up with a beautiful, up-and-coming singer.
Director: Steve Kloves | Stars: Jeff Bridges, Michelle Pfeiffer, Beau Bridges, Ellie Raab
Votes: 18,586 | Gross: $16.82M
29. Racing with the Moon (1984)
PG | 108 min | Comedy, Drama, Romance
In 1942 California, two young men await induction into the U.S. Marines and say goodbye to their girlfriends.
Director: Richard Benjamin | Stars: Sean Penn, Elizabeth McGovern, Nicolas Cage, John Karlen
Votes: 3,447 | Gross: $5.40M


text:
4 720 jobs
91 ms
Within a radius of km of
Filter by date ▼
Last 24 hours
Last 3 days
Last 7 days
Last 30 days
Filter by source ▼
Job boards
Placement agencies
Jobs 1 - 10 of 4720
Windows Administrator Windows jobs
There are 7,927 Windows Administrator Windows-related jobs on Neuvoo India. Apply now and get the best job.
Job descriptions and categories including this search
Examples of corresponding vacancies are Caption Writer, Human Resources Director, Executive Director, Skin Care Specialist, Physician Internal Medicine or Teacher Music. These job vacancies are often related to categories like Education, IT, Management, Services, Sales or Customer Service.
Employment statistics
Regions with the largest quantity of jobs related to 'Windows Administrator Windows' are Karnataka, Maharashtra, Tamil Nadu, Telangana, Uttar Pradesh or Haryana. Cities with the highest number of search are Bangalore, Chennai, Pune, Mumbai, Noida or Hyderabad.
Top employers offering Windows Administrator Windows jobs
Corporations offering the most Windows Administrator Windows-related jobs are Siddhivinayak consultants, ExcellentJobsPvtLtd, Directi, Tata chemicals limited, ACE INFOWAY or Town School Education Initiatives.
Neuvoo India: the the largest job board across India
Neuvoo India is the largest job site in the country with over 1649617 job vacancies available, 7,927 of which are Windows Administrator Windows-related.Show more...
ProVal Technologies |
Noida, Uttar Pradesh
- 1d ago
Should be MCSA MCP. MCSE Having hands on experience on windows server 2003, 2008, R2Well versed with troubleshooting in windows environment. Have worked on L1 L. level handling active directory...
Hyderabad, Telangana
- 1d ago
Knowledge of UNIX (Solaris, AIX, HPUX, Windows, Linux)Understanding of Change Management Life Cycle... ..vendor certificationsSun Certified System AdministratorMCSE certifiedEducation and Qualifications...
Eli India |
Faridabad, Haryana
- 14d ago
Expertise in Windows 2008 2012 Active Directory, DNS, DHCP and IIS. Experience in configuring, managing... Experience in VMware ESX or ESXi server Experience in Windows server Hardening and security policies...
Wipro |
Pune, Maharashtra
- 2h ago
Mandatory Skills. Windows Admin. Desirable Skills. vBlock. Job Description. Key skills required for the... Windows Admin (Mandatory). vBlock. As a Lead Administrator, you should be able to act as a Single point...
Wipro Limited |
Bangalore, Karnataka
- 10d ago
Mandatory Skills. Windows Admin. Job Description. Key skills required for the job are. Windows Admin... As a Senior Administrator, you should be able to handle first point escalation for all technical and...
Wipro |
Chennai, Tamil Nadu
- 2h ago
Citrix Admin (Mandatory). Vmware Admin. Active Directory. As a Lead Administrator, you should be able to... Minimum Experience Required. 5 8 YEARS Mandatory Skills. Citrix Admin Citrix Admin, Windows and AD...
Wipro Limited |
Hyderabad, Telangana
- 15h ago
Mandatory Skills. Windows and AD Admin. Desirable Skills. Wintel AD and Exchange Infra Consulting... Windows and AD Admin (Mandatory). Wintel AD and Exchange Infra Consulting. As a Lead Administrator, you...
Wipro Limited |
Mumbai, Maharashtra
- 8d ago
Key skills required for the job are. MS Exchange Admin (Mandatory). As an Administrator, you should be... Minimum Experience Required. 1 3 YEARS Mandatory Skills. MS Exchange Admin Windows and AD Admin, MS...
Wipro Limited |
Bangalore, Karnataka
- 10d ago
Mandatory Skills. Windows Admin. Job Description. Key skills required for the job are. Windows Admin... Vmware VDI. As a Senior Administrator, you should be able to handle first point escalation for all...
Wipro Limited |
Bangalore, Karnataka
- 10d ago
Mandatory Skills. Windows Admin. Desirable Skills. MS Exchange Admin. Job Description. Key skills... Windows Admin (Mandatory). MS Exchange Admin. As a Senior Administrator, you should be able to handle...
Never miss a job. Get new jobs emailed to you everyday.

subset: commoncrawl


text:
Salsa Buena
Salsa Buena success extends far beyond running the most popular Salsa classes across Cardiff & Cowbridge, and running the busiest Salsa class and club night in Wales!
We are also regularly booked to teach and perform at public, charitable and private events, some of the many highlights include performing Salsa at the Cardiff Urban Beach Volleyball Tournament at Cardiff Bay and teaching and performing at the Llandrindod Wells Salsa and Fitness Weekender, the Cardiff Multicultural Mela and the UK's first ever Coffee festival, the KSSB dance festival in Bristol, and more all to great acclaim.
Salsa Buena were also chosen to teach and choreograph a Salsa routine to 2 of the stars of the hit BBC drama series 'Casualty' for an episode. As can be seen from the picture opposite!
Salsa Buena have also been featured in the South Wales Echo and in a BBC documentary. They were also approached to produce a beginners salsa DVD for worldwide release, this has completed filming and is out now. See DVD page for full details!
Salsa Buena are also responsible for organising some of the biggest and best dance events in South Wales. We organised the hugely successful Dance Xtravaganza at the Marriott Hotel in Cardiff in 2012 and the 1st ever Full Welsh Dance All Dayer Event in Wales at the Angel Hotel in Cardiff in 2014. Both of these events being the biggest and most successful of it's kind to be hosted in South Wales.


text:
Setup software utility quickly and simply. Our library is happy to introduce a handy diversity of the best freeware, tools, and systems. On this catalog you can try demo updates of hot marketable software, and get the greatest free programs for your PC or cellular appliance,gadget. Research an excellent group of first class recent tools on our library! Acquire trial editions and setup new apps on the laptop or digital appliance. See the fresh editions and updates of typical tool, recent software solutions, and notebook utilities! Test now!
Best Windows utility software downloads for the best costs and free!
System software downloads for latest versions and fresh updates.
Disk format utility software for external hard drives, desktops or laptop data processors.
Must - have utility software for Windows 7 to improve your system performance.
Are you facing trouble during the email conversion period of Windows Mail emails to Outlook PST mail? If yes, then make use of HOT Windows Mail to Outlook converter solution to convert from Windows Mail to Outlook mail format in simple approach. Our Windows Vista Mail to Outlook tool effortlessly converts EML email files of Windows Mail along with all key elements such as; Meta data information, attachments or embedded attachments, read/unread status, email formatting to Outlook, which helps you to access, view or read EML files information into Outlook right away. By using our Windows Mail to Outlook program you can completely convert your Windows Mail emails into Outlook 2010, 2007, 2003, etc. Import Windows Mail to Outlook software maintains same folder structure and same e-mail formatting during the conversion process of EML to PST successfully, so that you can easily manage your existing emails of Windows Mail to Outlook mail as well as you can also convert batch / bundle of eml emails into pst format at a time. You can also try the DEMO version of Birdie EML to PST Converter that will help you to move or convert 10 EML files to PST file, after that purchased the full-version of the convert Windows Mail to Outlook software only at $49.00. Know more from - http://www.birdiesoftware.com/windows-mail-to-outlook.html.
ABF Favorite Folders is an extremely useful compliment to the Windows Explorer shell. It allows you to easily store, manage and access a list of frequently used folders.
Stellar Phoenix (Solaris - Intel) is NON-DESTRUCTIVE and READ ONLY file & volume recovery software that helps you in recovering your all-important data. Key File System Data Structures in UFS File system.
Windows uses two types of file systems to access the data from the hard drives. NTFS (New Technology File System) is one of them. NTFS is the more advance than FAT file type. Sometimes due to virus intervention these file types gets corrupted.


text:
home tattoo kit
Thank you for visiting [blog]. A lot of people have tried online for locating facts, strategies, reports or other resource for their needs. Like you are. Do you come here to get new unique idea about home tattoo kit? How many websites have you browse to get more detail about home tattoo kit?
Home tattoo kit is one of raised niche at the moment. We realize it from internet search engine records like adwords or google trends. In an effort to give helpful information to our audience, weve attempted to find the closest relevance pic about home tattoo kit. And here you will observe now, this image have already been extracted from trustworthy resource.
We think this home tattoo kit pic will give you certain more point for your need and we hope you enjoy it. We understand, we might have different view about this but at least we have tried our best.
This image has been uploaded by our team. You can easily explore more useful articles in [cat] group. We thank you for your visit to our website. Make sure you get the information you are looking for. Do not forget to share and love our reference to help further develop our website.


text:
- Home
- →
- For Him
- -
- Sports Fan
Glitter Baseball Christmas Ornament
Personalized Christmas Ornament
Dimensions: 2 1/4" diameter x 4 1/2"
Material: Glass Ball and Resin Shoe
For the baseball star in your family. An authentic looking cleat dangles from the glittered baseball and the ornament makes a nice gift. Purchase our glass Glitter Baseball ornament and have a date added to commemorate a winning season or special achievement. Knock it out of the park with this glittered baseball ornament as a gift for someone who loves the sport of baseball, whether being a fan of MLB games or playing on the school baseball team. Personalize this baseball ornament with a name or team name!
Read what our customers say about our Personalized Christmas Ornaments and their shopping experience!Hover over testimonials to stop scrolling
12/13/2016 - "Personalization was better than I expected. Marjorie S."
10/24/2016 - "I always order Christmas Ornaments and they are a big hit. Patricia D."
12/14/2016 - "I have purchased ornaments for the past several years. I give to my daughters and grandkids. Thanks. Lynn E."
5/17/2017 - "I have always been very happy with the ornaments I get from the OrnamentShop. The quality is good and so is the selection and price. I love giving personalized ornaments pertaining to something that my grandchildren did or achieved that year. I did have a hard time trying to find out how to contact the company, but when I did an email, it was answered quickly. Ida C."
12/23/2016 - "I really like the personal touch with the email I got letting me see what goes on in the background to process my order. Very nice touch in customer service! Judy S."
12/14/2016 - "Despite having already placed my order, customer service graciously substituted one ornament with a new one I had not seen. With 5000 ornaments to look at, it's an overwhelming task to find just the perfect one for each of my grandchildren.Anonymous Respondent"
11/13/2016 - "I love the ornaments. Everything about them was great. I would definately buy ornaments from your company again. I am so happy with them they were exactly what I was looking for. Barbara"
12/13/2016 - "The items are unique and 2 will be hand carried to Italy in February. The champagne 1st anniversary will be on display so everyone can enjoy it. The tree with 12 heads easily took long names and got some families on same row. Bronner's limits characters so Alessandra and Christopher must be abbreviated. Initial price is higher but with free shipping over 5, it becomes good deal. The range of choices is outstanding. Rose Marie W."
11/9/2016 - "Wow. Yesterday I got the email that my ornaments had shipped. Today they were on my front porch! All 10 of them are perfect - thanks for the 11th time! See you next year! Sandi R."
11/7/2016 - "The ornaments are well made and were delivered efficiently.Arlene Y."


text:
Exploring the Potential of User Modeling Based on Mind Maps
Mind maps have not received much attention in the user modeling and recommender system community, although mind maps contain rich information that could be valuable for user-modeling and recommender systems. In this paper, we explored the effectiveness of standard user-modeling approaches applied to mind maps. Additionally, we develop novel user modeling approaches that consider the unique characteristics of mind maps. The approaches are applied and evaluated using our mind mapping and reference-management software Docear. Docear displayed 430,893 research paper recommendations, based on 4,700 user mind maps, from March 2013 to August 2014. The evaluation shows that standard user modeling approaches are reasonably effective when applied to mind maps, with click-through rates (CTR) between 1.16% and 3.92%. However, when adjusting user modeling to the unique characteristics of mind maps, a higher CTR of 7.20% could be achieved. A user study confirmed the high effectiveness of the mind map specific approach with an average rating of 3.23 (out of 5), compared to a rating of 2.53 for the best baseline. Our research shows that mind map-specific user modeling has a high potential, and we hope that our results initiate a discussion that encourages researchers to pursue research in this field and developers to integrate recommender systems into their mind mapping tools.
KeywordsMind map User modeling Recommender systems
Unable to display preview. Download preview PDF.


text:
Offer Ending In:
WARNING: Don't even think about contacting someone on LinkedIn until you get this ebook. The Complete Guide To Generating Leads on LinkedIn, developed by the experts at Closer College, the top resource for sales training in the U.S.
Generating leads on LinkedIn has never been easier.
Generate leads and close sales with The Complete Guide To Generating Leads on LinkedIn.
For A Limited Time:
Where should we send your copy?
*No credit card required – This eBook is 100% free
In the book you'll discover:
- How to find solid leads on LinkedIn
- How to make strong connections with buyers
- Best practices for building your LinkedIn profile
- Strategic ways to expand your network of connections
- Proven strategies for approaching leads
- Top tips for closing sales via LinkedIn
- and much more


text:
(803) 648-7621 - office
Welcome to our service department where we service what we sell.
Our service facility performs routine maintenance and repairs, such as oil changes, tire rotation, and brake service on both foreign and domestic automobiles.
We provide written estimates and stand behind our work.
All repairs are fully explained to you and we fix 'em right the first time.
Our reputation is based on honest pricing, quality workmanship, and a friendly attitude. We'll answer your questions and do only the work needed.
Call us at $phone to arrange for an appointment or use our Service Request Form 24 hours a day.
Angelos Used Cars
Angelos Used Cars
1109 Richland Ave W
318Lee Street Johnston SC
Aiken, SC 29801
(803) 648-7621 - office
[803] 6178552
|Customer Satisfaction is Job One ! ! !
|Email Us
Email us using your online webmail account
Use desktop email (Outlook, Thunderbird, etc...)


text:
BC has decided the vaulted ceiling in the great room should be rounded... of course he did. He is a master carpenter why settle for corners if you don't have to.
"If you intend to write as truthfully as you can, your days as a member of polite society are numbered." Stephen King
animals-on-counters (129) art (22) Baby J (22) backway Nevada (6) beneath the blue (114) chasing antelope (28) EBR photography (14) farm-a-cation (40) fences make (25) gods of glass and other broken things (81) history for history haters (25) holiday magic (39) hot springs (12) houses of straw (23) Idaho (3) knee deep (20) Life With Man by mlb (6) math (5) meanwhile down in the science lab (14) our 7th Grade (14) pegma (35) quiet down in front (178) right where I left it (22) seconds (68) signs of life (163) SLC (99) taming venus (6) the back forty (41) the life and times of Little Giants (119) the lunch line (2) the school house rocks (107) the wood shop (11) urban intersections (103) village life (177) way out west (118) weekending (156) wild west Utah (36) words of a barefoot cowboy (3) world history (4)
Friday, February 17, 2017
cutting corners BC style
Subscribe to: Post Comments (Atom)


text:
for Atom and RSS and KMLJump to navigation
This is a valid RSS feed.
This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

It made me think a little about Swiper, and I thought I would give it another go. I also felt validated for taking my little break from the project when I read the 'It's ok to hit pause' section of the Open Source best practices for Maintainers

So I needed to fix my Designer Launch settings, I really don't know how to do this by myself and have relied on others for this information. Previously it was Mikkel Heisterberg, and then for the past few years I turned to Ralf M Petter. I was very sad to see recent news that Ralf passed away from a cancer related illness. I would just like to express my sympathy to Ralf's family for their loss. Ralf's blog posts on setting up Eclipse to launch Notes and Designer were extremely helpful to me whilst developing Swiper and other plugins that I have made for Notes and Designer. Ralf was always quick to respond to my questions and his expertise will be missed.

A couple of months ago I had asked Ralf if he knew how to launch Designer FP8 from eclipse and surely enough within a day he had provided me with updated instructions, I had also asked Gary Marjoram @ IBM for some advice and armed with all this advice I was able to get FP8 launching again after a couple of hours tweaking.

Tonight I was able to debug the toolbar buttons again and therefore I was able to release the official version 2.

Let me know if you have any problems or suggestions!

<title>Auto-width Bootstrap Column XPages Controls</title>
<pubDate>Tue, 21 Mar 2017 13:13:18 +0000</pubDate>
<category><![CDATA[Software Development]]></category>
<guid isPermaLink="false">http://camerongregor.com/?p=479</guid>
<description><![CDATA[I've been stuck working with OneUI Version 3 for the past couple of years, due to a regretful decision made at the beginning of my major project. OneUI was better than nothing but very frustrating...]]></description>
<content:encoded><![CDATA[
I've been stuck working with OneUI Version 3 for the past couple of years, due to a regretful decision made at the beginning of my major project. OneUI was better than nothing but very frustrating at times.

Finally, I have moved on to my next project and I am now using bootstrap (version 3)

A common task when laying out a page using bootstrap is to divide sections up into rows and columns, and use the appropriate css styles to do so. I'm going to assume you are familiar with bootstrap's grid system, and if not I recommend you hearing it from the horse's mouth instead of me trying to explain it again.

I like creating XspLibrary controls, so I decided I would go ahead and create row and column controls. It could be seen as a little overkill and you can easily live without it, but I see the Bootfaces project did it, so I took inspiration from their container, row and column controls.

I then also added the ability for the columns to have their widths automatically distributed. Auto-widths is a feature that is coming with bootstrap 4, but for now we need to do it ourselves!

Example XPages Markup

The following examples end up looking like this: (Note: the blue border is just added for demo purposes to show the outline of the columns)

Here is a simple example of 2-column layout with equal width columns

<gb:row id="row1">
<gb:column id="column1">These two columns</gb:column>
<gb:column id="column2">are Equal Width</gb:column>
</gb:row>

Notice above how I haven't specified any column widths? The columns will all become equal width, so in the example above, they will both be 6 columns wide (12 divided by 2 columns).

If there have 3 columns, then they would each automatically be 4 columns wide (12 divided by 3 columns).

<gb:row id="row5">
<gb:column id="column3">These three </gb:column>
<gb:column id="column10">columns are also</gb:column>
<gb:column id="column11">Equal Width</gb:column>

Specifying a column width

If you want a column to be a specifc width, you use the span property to specify the width for that column, the remaining columns will receive their fair share of whatever is left over.

<gb:row id="row2">
<gb:column id="column4">These columns have</gb:column>
<gb:column id="column5" span="6">the middle with span="6"</gb:column>
<gb:column id="column6">and the outer columns are auto width</gb:column>

Specifying alignment

I've also added an align property so I can quickly align the contents.

<gb:row id="row4">
<gb:column id="column7" align="left">This is align left (default)</gb:column>
<gb:column id="column8" align="center">This is align middle</gb:column>
<gb:column id="column9" align="right">This is align left</gb:column>

Full Row column

If you want to use the entire row, then you can just leave the column definition out entirely and the contents will automatically be wrapped in a col-md-12 column

<gb:row id="row3">
If you want a Full Row, then just don't include columns

Using style and styleClass

You can still use style and styleClass properties as you normally would.

Container Control

If you are using one of the extension library bootstrap applicationLayouts, then you won't need to use the container control because it is already covered by that. But, If you are rolling your own you can use the container layout which has a fluid property to control whether is is a bootstrap fluid layout or not.

<gb:container id="container1" fluid="true">

Overview of creating the controls

Here is what we are going to do:

Create the Container UIComponent

Create the Column UIComponent

Create the Row UIComponent

Provide Control Definitions via an xsp-config file so that designer knows how to use them

Program in the auto-width algorithm

Notice we are not going to create a renderer. We will be extending the panel control, and the existing panel renderer will be used automatically.

For each component we are just going to extend the existing <xp:panel> control to re-use all the existing functionality, and just add a few extra properties.

Creating the Container Component

The container component is simply an extension of the panel control (UIPanelEx) with an additional property 'fluid'. We add the getters and setters for the fluid property, and make sure it is included in the restore and save state operations.

We also override the getStyleClass method so that it will always concatenate 'container' or 'container-fluid' depending on the fluid property.

package com.gregorbyte.xsp.component.bootstrap;
import javax.faces.context.FacesContext;
import javax.faces.el.ValueBinding;
import com.gregorbyte.xsp.util.GregorbyteUtil;
import com.ibm.xsp.component.UIPanelEx;
public class UIContainer extends UIPanelEx {
public Boolean fluid;
public UIContainer() {
public String getStyleClass() {
String parent = super.getStyleClass();
if (isFluid()) {
return GregorbyteUtil.concatStyleClasses("container-fluid", parent);
} else {
return GregorbyteUtil.concatStyleClasses("container", parent);
public Boolean isFluid() {
if (this.fluid != null) {
return this.fluid;
ValueBinding vb = getValueBinding("fluid");
if (vb != null) {
return (Boolean) vb.getValue(getFacesContext());
return false;
public void setFluid(Boolean fluid) {
this.fluid = fluid;
public void restoreState(FacesContext context, Object state) {
Object[] values = (Object[]) state;
super.restoreState(context, values[0]);
fluid = (Boolean) values[1];
public Object saveState(FacesContext context) {
Object[] values = new Object[2];
values[0] = super.saveState(context);
values[1] = fluid;
return values;

Creating the Column Component

The column component is a little more complex. We are also going to extend the UIPanelEx control but we will also add some control properties

span – This will be an integer that can be set to specify the column span of the bootstrap grid

align – This will be a String which can be 'left' (Default), 'center' or 'right'. This will then add the necessary bootstrap css class to perform aligning of the contents

I am also going to add a property guessSpan which is not exposed to domino designer and will only be used to store our 'guesstimate' column span when calculating the auto widths.

Then, I create a private method 'getEffectiveSpan' which will check if a column span has been explicitly set with the span property and if so it will use that. If a span was not set, it will use the 'guessSpan' that was guessed via the algorithm

Then we override the 'getStyleClass' method, so that when the renderer comes along and asks for the styleClasses, we can inject some styleClasses of our own.

We are using the very handy method from Extension Library's ExtLibUtil, which allows us to easily concatenate styles. I have copied the method into my own Util class so that there will be no dependency on the Extension Library.

First we ask for any styles that have been explicitly set. Then we concatenate our column style from the bootstrap grid system e.g. "col-md-8", and then we concatenate an alignment style if one was set on the column.

package com.gregorbyte.xsp.component.bootstrap;
import javax.faces.context.FacesContext;
import javax.faces.el.ValueBinding;
import com.gregorbyte.xsp.util.GregorbyteUtil;
import com.ibm.commons.util.StringUtil;
import com.ibm.xsp.component.UIPanelEx;
public class UIColumn extends UIPanelEx {
private Integer guessSpan = null;
// Defaults for Medium Columns, use styleClass for specific layouts
private Integer span = null;
private String align = null;
public UIColumn() {
private Integer getEffectiveSpan() {
if (getSpan() != null) {
return getSpan();
} else if (getGuessSpan() != null) {
return getGuessSpan();
return 12;
public String getStyleClass() {
String styleClass = super.getStyleClass();
styleClass = GregorbyteUtil.concatStyleClasses(styleClass, "col-md-" + getEffectiveSpan());
String align = getAlign();
if (StringUtil.equals(align, "left")) {
styleClass = GregorbyteUtil.concatStyleClasses(styleClass, "text-left");
} else if (StringUtil.equals(align, "right")) {
styleClass = GregorbyteUtil.concatStyleClasses(styleClass, "text-right");
} else if (StringUtil.equals(align, "center")) {
styleClass = GregorbyteUtil.concatStyleClasses(styleClass, "text-center");
return styleClass;
public Integer getGuessSpan() {
return guessSpan;
public void setGuessSpan(Integer guessSpan) {
this.guessSpan = guessSpan;
public Integer getSpan() {
if (this.span != null) {
return this.span;
ValueBinding vb = getValueBinding("span");
if (vb != null) {
return (Integer) vb.getValue(getFacesContext());
return null;
public void setSpan(Integer span) {
this.span = span;
public String getAlign() {
if (this.align != null) {
return this.align;
ValueBinding vb = getValueBinding("align");
if (vb != null) {
return (String) vb.getValue(getFacesContext());
return null;
public void setAlign(String align) {
this.align = align;
public void restoreState(FacesContext context, Object state) {
Object[] values = (Object[]) state;
super.restoreState(context, values[0]);
guessSpan = (Integer) values[1];
span = (Integer) values[2];
align = (String) values[3];
public Object saveState(FacesContext context) {
Object[] values = new Object[4];
values[0] = super.saveState(context);
values[1] = guessSpan;
values[2] = span;
values[3] = align;
return values;

Creating the Row Component

The row component is also an extension of the panel control. But we are going to add some extra behaviour to it. Just before the Row's children (the columns) are Rendered we are going to calculate the necessary spans for any columns that did not have a span. If we can't find any columns as children, then we will assume that we are supposed to wrap all the contents into a single column and therefore we will render a start and end tag for a

Programming the auto-width algorithm

The auto-width algorithm does the following

Finds the total span of columns that have been explicitly allocated using the span property

Figures out the remaining span available (e.g. 12 – allocated)

Figures out the average span to allocate to remaining columns without a span

Allocates the 'guessed' span to the remaining columns

package com.gregorbyte.xsp.component.bootstrap;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.faces.FacesException;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import com.gregorbyte.xsp.util.GregorbyteUtil;
import com.ibm.xsp.component.UIPanelEx;
import com.ibm.xsp.util.TypedUtil;
public class UIRow extends UIPanelEx {
private Boolean autoColumn = false;
public UIRow() {
public String getStyleClass() {
String parent = super.getStyleClass();
return GregorbyteUtil.concatStyleClasses("row", parent);
public void encodeBegin(FacesContext context) throws IOException {
if (autoColumn) {
context.getResponseWriter().startElement("div", null);
context.getResponseWriter().writeAttribute("class", "col-md-12", null);
public void encodeEnd(FacesContext context) throws IOException {
if (autoColumn) {
public void calculateColumnSpans(FacesContext context) throws FacesException {
List<UIComponent> kids = TypedUtil.getChildren(this);
List<UIColumn> cols = new ArrayList<UIColumn>();
int totalMediumSpecified = 0;
for (UIComponent comp : kids) {
if (comp instanceof UIColumn) {
UIColumn col = (UIColumn) comp;
if (col.getSpan() != null) {
totalMediumSpecified += col.getSpan();
} else {
// If No Columns we will render
autoColumn = (cols.size() == 0);
if (autoColumn)
int remaining = 12 - totalMediumSpecified;
Integer colGuess = remaining / cols.size();
if (colGuess != null) {
for (UIColumn uiColumn : cols) {
public void restoreState(FacesContext context, Object state) {
Object[] values = (Object[]) state;
super.restoreState(context, values[0]);
autoColumn = (Boolean) values[1];
public Object saveState(FacesContext context) {
Object[] values = new Object[2];
values[0] = super.saveState(context);
values[1] = autoColumn;
return values;

Provide Component Definition via xsp-config file

The xsp-config file tells Domino Designer everything it needs to know to include it on an XPage so we need to specify the properties that can be set.

The file starts with namespace definition to say 'all component definitions in this file are under this namespace' and then it specifies the 2 components.

We provide the description, tagname, display name, corresponding java class (so it knows how to instantiate it) a component type (usually just the same as the class).

Then we specify the properties that can be set. You can see for the row there is no extra properties, but for the column we have added the span and align properties and have provided combo options Left, Center and Right for the align property. For the container component, we have specified the fluid property.

<?xml version="1.0" encoding="UTF-8"?>
<description>Row Container for Bootstrap Columns
<display-name>Bootstrap Row</display-name>
<category>Gregorbyte Library</category>
<description>Bootstrap Columns
<display-name>Bootstrap Column</display-name>
<description>Adds an Alignment class to the column </description>
<description>Number of Columns to Span (Medium Screen size). Leave blank for auto calculation</description>
<display-name>Columns to Span</display-name>
<category>Gregorbyte Library</category>
<description>Container for Bootstrap Layout
<display-name>Bootstrap Container</display-name>
<description>Use Fluid Layout
<display-name>Use Fluid Layout</display-name>
<category>Gregorbyte Library</category>

If you would like to use these controls, you have 2 choices!

Install the latest version of my GregorbyteXspLibrary to your Designer Client and Domino Server using the same method as Extension Library Installation

Scavenge the necessary files from my Github repository and include it your own NSF

To Scavenge the necessary files from my Github Repo:

You will need to place these java files in your java design elements:

You will need to place this xsp-config file in the WEB-INF directory

You can easily get the job done without these controls, but so far I have really enjoyed having them in my palette.

I've only just started using these controls, so I expect to improve on them. Maybe by adding the 'small', 'medium', 'large', 'extraLarge' properties to the columns (but for now I can use styleClass="col-sm-4″ etc.)

I'm also keen to take a look at other parts of the bootfaces project and see if any of the ideas might be effective in Xpages.

If you end up using these please let me know! I'd love to hear any suggestions and as always if any problems then please leave a comment or post an issue on my GregorbyteXspLibrary project.

<title>Swiper FP8 Version Beta Release</title>
<pubDate>Thu, 16 Mar 2017 12:50:18 +0000</pubDate>
<category><![CDATA[Software Development]]></category>
<guid isPermaLink="false">http://camerongregor.com/?p=469</guid>
<description><![CDATA[Last week I released the 'alpha' version of Swiper which was untested on FP8 but presumed to be ok. So far I have only had good reports from the pioneers who have gone ahead...]]></description>
<content:encoded><![CDATA[
Last week I released the 'alpha' version of Swiper which was untested on FP8 but presumed to be ok. So far I have only had good reports from the pioneers who have gone ahead and installed FP8 + the alpha version.

I have since managed to ugrade my home office setup to FP8 which unfortunately has broken my ability to launch designer from eclipse but I am seeking some advice on fixing this up.

In the meantime I have to test the slow way of building plugins, import plugins, restart … ugh.

Anyway, I persist because I want to give the people what they want! I have prepared another release with some requests received last week. This will most likely be the final 2.0.0 release but I am just releasing as beta for now. You can download the v2.0.0 Beta release from the github repo right now! I'd love to hear if the requested features are also useful for you.

Note: for the toolbar buttons to enable, you must click on the Project Header in the left pane

'Refresh ODP and then Sync' button

requested by Tinus Riyanto

Tinus' setup is to have Build Automatically off, Refresh Automatically off (I assume) and also 'Auto Import' off.

This means that to for sync, he would need to find the ODP and right-click refresh, and then run a sync

Instead, he can now just click 'Refresh ODP and then Sync' button!

I spent about 20 minutes trying to figure out what Icon could represent 'Refresh and Sync' without confusing it with the other icons. I gave up and chose the 8-ball :p

For bonus points I threw in a 'Refresh ODP' button which just refreshes the ODP.

'Launch ODP Folder in System Explorer'

requested by me!

A few times I just want to open the ODP in the System Explorer (windows Explorer) so I added this button to quickly launch it without having to navigate to package explorer etc.

'Enable Swiper for All projects' preference option

Requested by Patrick Kwinten

Patrick wants to 'Fire and Forget' on a Headless Build setup so that all projects will definitely have swiper enabled when the Headless build runs.

Next step

As long as I hear everything is good, I will publish the final version 2.0.0 to OpenNTF next week.

As always happy to hear any further suggestions that may make your life with source-control in Domino Designer easier.

<title>Swiper FP8 Integration Rollout</title>
<pubDate>Wed, 08 Mar 2017 12:43:10 +0000</pubDate>
<category><![CDATA[Software Development]]></category>
<guid isPermaLink="false">http://camerongregor.com/?p=461</guid>
<description><![CDATA[Notes Domino 9.0.1 FP8 is finally here and as far as I know (I have yet to download it) it includes the necessary changes which will allow Swiper to swipe whatever it wants, whenever it wants,...]]></description>
<content:encoded><![CDATA[
Notes Domino 9.0.1 FP8 is finally here and as far as I know (I have yet to download it) it includes the necessary changes which will allow Swiper to swipe whatever it wants, whenever it wants, which is good news for people who don't like to have 'Build Automatically' turned on.

Plan of Attack for release of Swiper version 2.0.0

So, I haven't actually downloaded FP8 yet, so I can't say for sure that the updated version works perfectly. Here is a bit of background, I had been working with IBM team to make sure that the necessary changes would be sufficient. I received an updated version of the 'team' plugin and have tested my POC successfully against that updated plugin, but I haven't tested it fully against the full new FP8 because, as previously mentioned, I haven't downloaded it yet.

So the plan is: I am putting a pre-release of Swiper v2.0.0 up on the Swiper Github repository.

If you have updated to FP8 and would like to test the new version I would very much appreciated it!

Here are the steps to install and ugrade:

Download Swiper v2.0.0-alpha release from Github and install to designer

'Remove Swiper' and then 'Add Swiper' from any projects currently using swiper

Basically, the 'remove' will remove the old builders that are no longer needed, then 'add' will re-enable the new version.

Check that it is swiping your metadata whenever you sync!

I will also upgrade my Notes over the next week and test. Once I have heard back from a few people that it is working well, then I will prepare the final release and update the OpenNTF Project page.

Bonus Feature!

I added a new feature: there is a 'Sync' toolbar button to perform a sync on the currently active project. Give it a try and let me know if useful.

Background of the Reason for new Integration point

If you are curious about why there was a change necessary to allow Swiper to perform more efficiently, here is a summary:

Swiper version 1 worked like this:

Designer has a 'Builder' which triggers the sync process of Design Elements to Disk

Swiper version 1 sandwiched this Builder with 2 builders of it's own, a Pre and Post Sync builder.

The Pre sync builder saved some info about files that might be exported

The Post sync builder used Pre Sync builder to figure out if files were exported, if they were then it filtered them

The trouble with this, is that there is more than one way for the Sync process to be triggered. If it was triggered on 'project open' event or manually with the right-click menu, then the Swiper builders would not run.

IBM have now made a modification to provide a 'SyncListener' extension point, so that a class can be registered to listen to import / export / rename / delete events, and has the opportunity to run some code when those events fire.

This allows swiper to run whenever there is a sync operation, regardless of when it was called.

So Swiper version 2 simply listens for the events and then acts accordingly whenever they happen.

Other uses for SyncListener

I am also curious if there are other options to utilise this feature to correct DXL Import export errors. One example is to do with agent scheduling for all-day agents. A custom Scheduling metadata file could be created and used to save the agent scheduling info on export, and then configure the agent after import.

Feedback welcome

Let me know how you go, you can report bugs either on OpenNTF Swiper Project or the Github Repository Issues

Or maybe you just want to say it is all working well! It is nice to hear when people say thanks so if it is helping you please don't be shy! I do get some nice comments from time to time and it is a great ego boost.

When I first learned of Source Control Enablement in Designer, I was excited and then disappointed.

It was clearly not a workable solution if you needed to do any sort of branching and merging, which is core to good source control.

I was determined to get it working property. The initial DORA solution, took me about 2-3 months in my spare time to problem solve, develop and prepare so it was robust enough to share with others. It was workable but still a bit too fiddly. Later I decided that it would be cleaner to have it integrated into Designer, and a further month or two of development to get it ready. It was much more robust to install, and almost perfect.

This latest version should complete the puzzle, and hopefully there will be no more major developments needed!

I cannot imagine being able to manage the projects I have been working on over the past few years if I did not have source control, so I hope that my efforts have also enable you to work collaboratively with others, and also manage your own local branches as well!

<title>Markdown XPages UIControl</title>
<pubDate>Sun, 05 Mar 2017 11:44:24 +0000</pubDate>
<category><![CDATA[Software Development]]></category>
<guid isPermaLink="false">http://camerongregor.com/?p=444</guid>
<description><![CDATA[Often when I'm designing an xpage, there might be a section of the page in which I want to explain some instructions to the user. Some options here are to: write the Instructions using html...]]></description>
<content:encoded><![CDATA[
Often when I'm designing an xpage, there might be a section of the page in which I want to explain some instructions to the user. Some options here are to:

write the Instructions using html and embed directly in the xpage markup

write the Instructions directly in the design pane and format using designer's ui e.g. bold, color, size etc

use some native xpage controls to achieve the desired result.

Write the instructions in a richtext field on a notes document that is loaded to display the info.

Option 1 works good but is annoying to type html opening and closing all those tags. Option 2 is quick to use but creates ugly html with hardcoded styles / colours etc. Option 3 is doable but still a little clunky, Option 4 is not a great move because it is very hard to include the instructions within source control.

A better option needed

Lightweight markup languages are a great way to let formatting 'get out of the way' and just let you focus on writing the content. There are many lightweight languages to choose from. Markdown is a popular one so I thought that would be great to be able to quickly write some markdown and let the formatting take care of itself.

If you aren't familiar with the concept, it is basically a system of writing some plaintext content that can automatically be converted to html. For example the following text is plain text but easy to see the intended structure:

This is a heading
This is a paragraph
* this is a list item
* this is another item

This will processed by Markdown into the following html

This is a Heading

This is a paragraph

this is a list item

this is another item

Side note: Asciidoctor is good too

I have also created a similar control for AsciiDoctor which is another lightweight format. I actually prefer to use Asciidoctor now, however since Markdown seems to be more common I thought I would share the markdown control first.

If you are interested in AsciiDoctor control let me know. It is a bit more intense though because it starts up a JRuby instance and maybe that is not something you'd like to do (because AsciiDoctor is ruby based).

A few years ago Martin Rolph from Oval UK shared a solution of a Markdown Custom Control. You can find the project on github at OvalUK/XPagesDemos. The solution used markdown4j which is a java-based markdown processor. I decided to build on Martin's work and convert it from a custom control into an XspLibrary Control with a few extra options of where to retrieve the markdown from.

The markdown control allows you bind to a dynamic data source such as a NotesDocument / scoped variable etc. but also provides some options to load the source text from some static locations. You can have the source text:

Bound to a String Field in a Datasource or Scope variable

Supplied from a text file in the WEB-INF directory (read only)

Supplied from a text file from within a plugin (read only)

Supplied from a File in the 'Resources' Design Element (read only)

Written directly within the control's start and end tags (passthrough text) but this has some gotchas. (read only)

The control is an extension of the normal 'inputTextArea' control. When the control is in edit mode it just works exactly like a plain text area.

In Read-only mode, the supplied plaintext will be converted to html for display using the Markdown Processor.

Simple Example

In this simple example, I am binding the text to a viewScope variable 'sampleText'

I have 2 markdown controls, one on the left in edit mode, and one on the right in read mode, showing a live preview of the markup using the onKeyUp event to refresh the preview control. Here is the markup for the page

Live Preview example

<xp:table id="tablePreview" style="width:800px;margin-bottom:50.0px;margin-top:10.0px">
<xp:td style="width:50%" valign="top">
<gb:markdown id="markdown2" value="#{viewScope.sampleText}">
<xp:eventHandler event="onkeyup" submit="true" refreshMode="partial" refreshId="markdown3" execMode="partial" execId="tablePreview"
<xp:td valign="top">
<gb:markdown id="markdown3" value="#{viewScope.sampleText}" readonly="true"></gb:markdown>
</xp:table>

And here is an example of how it looks

Examples of the different methods of supplying the text

You should be able to find the control in the Controls palette under Gregorbyte Library. Drag it onto the page.

Bound to a Datasource / Managed Bean

You can bind it to any text field just like you would normally. In this example it is bound to a document and in edit mode acts just like a normal text area.

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:gb="http://www.gregorbyte.com/xsp/">
<xp:dominoDocument var="document1" formName="Markdown"></xp:dominoDocument>
<xp:button value="Save" id="button1">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<gb:markdown id="markdown1" value="#{document1.markdownText}"></gb:markdown>
</xp:view>

Then in edit mode:

In Read only mode:

Supplied from WEB-INF

To read a file from WEB-INF the 'value' should be the path to the file

It must start with '/WEB-INF'

It must finish with '.md'

readonly property should be 'true'

e.g.

<gb:markdown id="markdown4" readonly="true" value="/WEB-INF/markdown/Sample.md"></gb:markdown>

Supplied from a File in the Resources Design element

To supply the text from a File in the Resources Design element, give your file should the .md extension, and then supply 'value' as '/<yourfilename>.md', also set readonly="true" e.g.

<gb:markdown id="markdown1" readonly="true" value="/FileResource.md"></gb:markdown>

Supplied from a TextFile in a plugin

To supply the text from a file in a plugin, make sure your file has .md extension. Right click on the file in eclipse and 'Copy Qualified Name'. Paste this as the 'value' and set readonly = true.

You may run into some trouble if your file is not included in the build process, or it is built to a different location than it is in the source code, but basically the format should be '/com.your.plugin/your/classpath/to/resource/file.md'

<gb:markdown id="markdown6" readonly="true" value="/com.gregorbyte.xsp/resources/sample/Markdown.md"></gb:markdown>

Written directly within start and end tag

This is a quick and dirty method but it is a bit buggy. If you sometimes format your xsp markup with Ctrl + Shift + F then it will ruin your markdown with indents etc. The markdown text must be placed flush with the margin of the code editor

<gb:markdown id="markdown5" readonly="true">
This text is directly within the tags
It has some drawbacks though
* The text must be lined up directly against the margin (No indents)
* If you hit 'Ctrl + Shift + F' to format your xsp markup, it will indent the text and ruin everything
* You cannot embed html tags in the text
These bugs could be fixed but I just haven't got to it yet

To install you do one of the following:

install my GregorbyteXspLibrary to your designer + server

Scavenge necessary files from the Github repo

Method 1: Install my library

Go to the latest releases of camac/GregorbyteXspLibrary, download the zip file and install the update site using your favourite methods (same method as you would install IBM Extension Library)

Method 2: Scavenge Necessary files from github repo

You will need These java files

You will need this JAR

You will need this xsp-config (place in your WEB-INF

You will need to include the contents of this file in your WEB-INF/faces-config.xml file

I am pretty sure that is all that is needed, let me know if you have any trouble.

Once again thanks to Martin Rolph for providing the markdown custom control in the first place, I have simply added a few more ways to supply the source and wrapped it in a control.

I'd love to hear what you think if this is useful to you or not. Personally I have been using it mainly to supply markdown from within a plugin. Mainly help/instructions/code examples in our demo database.

<title>TextDiff XPages control – For visual comparison of text</title>
<pubDate>Tue, 28 Feb 2017 12:00:19 +0000</pubDate>
<category><![CDATA[Software Development]]></category>
<guid isPermaLink="false">http://camerongregor.com/2017/02/28/textdiff-xpages-control-for-visual-comparison-of-text/</guid>
<description><![CDATA[A few years back I stumbled across Google's diff-match-patch project which provides some handy algorithms for text manipulation. At the time of discovery I was doing 'classic' notes development. Although I probably could have...]]></description>
<content:encoded><![CDATA[
A few years back I stumbled across Google's diff-match-patch project which provides some handy algorithms for text manipulation. At the time of discovery I was doing 'classic' notes development. Although I probably could have implemented something that worked in lotuscript with RichText or Mime, it wasn't a priority at the time and I never bothered.

Since then, I have been doing mainly XPages, and now that I have been also doing a bit of XPages Control development. I was mainly interested in the 'diff' algorithm so I decided the time was right to turn the diff algorithm into a useful XPages control, which takes 2 input strings and displays a visual difference between them.

The diff-match-patch algorithm / project is licenced under Apache Licence 2.0 so it is the same licence as most OpenNTF projects.

Basically the control takes a 'from' and 'to' input, and displays the visual diff. I guess it is best to show the example!

Here is some From and To Input that we will use for our examples. I have bound these textareas to viewScope 'fromText' and 'toText' but they could be bound to whatever text field you like

So then we will use the text diff like so:

<gb:textDiff id="textDiff1" from="#{viewScope.fromText}" to="#{viewScope.toText}" disableTheme="true">
</gb:textDiff>

Note the following picture is from my demo page so the actual output from the textdiff control is only what is inside the black box.

Algorithm parameters

For a good explanation of the algorithm parameters, I suggest you have a look at the google diff-match-patch webpage. But here is my best explanation!

cleanup – whether to perform some sort of cleanup to produce some more human readable results. I find 'semantic' is a good option

edit cost – only used for 'efficiency' cleanup

Timeout – don't spend longer than this amount of seconds

Here is an example of output after changing the 'cleanup' option to 'semantic'. Note that it has lengthened the change from single words to a longer run of words

The control has style and styleClass properties for the insert, delete and equals operations. Basically the control outputs a bunch of ''s for each chunk of the diff operation. These outputs are either an insertion, a deletion or 'equals', and they have associated 'insertStyle' and 'insertStyleClass' properties.

All the above properties are themable. You can use the 'Text.Diff' control type to set properties for all textdiff controls or you can come up with a new ThemeId that can be applied as needed.

Here is an example using the following theme properties with a custom ThemeId

<control>
<value>background-color: black;</value>
<value>color: aqua;</value>
<value>color: lime;</value>
<value>color: pink;</value>
</control>

You have 2 choices

install my 'Gregorbyte' extension library

scavenge the necessary files from my github repo and install to your nsf

Install my Gregorbyte Extension Library

Go and get the latest release which should be an update site zip file.

Install this to your domino designer, and also to your domino server using your favourite update site method.

To Scavenge the necessary files from my github repo

You'll need to put these java files in your Java section of your NSF:

And this xsp-config (place in your WebContent/WEB-INF directory in you NSF using package explorer)

and add this entry to your faces-config.xml

<render-kit>
</render-kit>

Let me know if it works or doesn't work in case I forgot something. I haven't used this control heavily in production yet so there may be a bug here and there, please report it if so!

<title>XPages webmail – Using Mime Inspector to debug Mime</title>
<pubDate>Tue, 14 Feb 2017 11:12:21 +0000</pubDate>
<category><![CDATA[Software Development]]></category>
<guid isPermaLink="false">http://camerongregor.com/?p=320</guid>
<description><![CDATA[In a previous post in this series I did a bit of an overview on how MIME works. We also did a little bit about how MIME works in XPages + Domino land. With...]]></description>
<content:encoded><![CDATA[
In a previous post in this series I did a bit of an overview on how MIME works. We also did a little bit about how MIME works in XPages + Domino land. With this knowledge in hand we can now start to analyse the different ways a 'Pretty words, pictures and attachments' can be stored in the document.

During development of the 'XPages Webmail' interface, I encountered many problems which could only be solved by investigating the MIME content in detail.

To help me do this, I developed a simple control (Mime Inspector) that I could use during debugging, which allowed me to see details of Mime Entities and the relation between them.

To use the MIME Inspector, I just bind it to a "rich text/Mime" field, and then view the output in the XPage. There are 2 control properties that can be control the level of detail

showHeaders – will output the MimeHeader entries of each MimeEntity

showContent – will output the actual content of each MimeEntity

The output starts with a summary of the status of the DominoRichTextItem (which is a wrapper for the RichTextItem. This is less useful but can still be helpful to know in some situations.

Are there Embedded Images that have not been saved yet

are there attachments that are not saved yet

is the wrapped field a MIME field (or otherwise still rich text)

Is the backend item discarded

Then the control will output the visual representation of the Mime Structure.

It does this in a 'Nested List' of MIMEEntities so that you can see sibling / parent / child relationship (which is very important when debugging MIME problems)

Each Mime Entity will output:

content type e.g. text/html

encoding details

mime headers (if set to do so with showHeaders)

content (if set to do so with showContent)

Demonstration Video

Here is as short demonstration video of the control in action

Installation / usage

You can either install the GregorbyteXspLibrary and use from that, or you can rip out the necessary files and use within an NSF

To do it via installing the library:

Download the GregorbyteXspLibrary from the project's github releases page

Install the library to your Domino Designer (same method as IBM ExtLib)

Install the library to your Domino Server (same method as IBM ExtLib)

Enable the library in your NSF (Xsp Properties page, 'Page Generation' section choose 'com.gregorbyte.xsp.library'

Drag the 'Mime Inspector' onto your page

To do it the 'non-library' way:

Copy the MimeUtil class and paste it in your java elements section (you will need to removeh/comment out all statements referencing the GregorbyteLogger

Copy the UIMimeInspector class and paste it in your java elements section

Copy the gregorbyte-mimeinspector.xsp-config file and put it in your WebContent\WEB-INF directory in your NSF

There is no renderer because the control renders itself, so no need for renderer or faces-conig.xml entries

Here is an example of the code in the XPages Markup:

<gb:mimeInspector id="mimeInspector1" value="#{document1.Body}"
showContent="true"></gb:mimeInspector>

Here is an example of some output with 'showHeaders' and 'showContent'. In this example the mime being looked at is just a single text/html MimeEntity.

Let me know if you have any trouble, I hope this helps somebody!

<title>Pasting Images into XPages CKEditor</title>
<pubDate>Sun, 12 Feb 2017 22:00:21 +0000</pubDate>
<category><![CDATA[Software Development]]></category>
<guid isPermaLink="false">http://camerongregor.com/?p=392</guid>
<description><![CDATA[Programs like 'Snipping Tool' on Windows, are super useful for users to make a quick snapshot, do some quick markup on the image, paste into chat/email and send. Unfortunately when using the default configuration...]]></description>
<content:encoded><![CDATA[
Programs like 'Snipping Tool' on Windows, are super useful for users to make a quick snapshot, do some quick markup on the image, paste into chat/email and send.

Unfortunately when using the default configuration of CKEditor in XPages (the inputRichText control), support for pasting images is not available for all browsers, and even for the ones that do support it, the images are only pasted as a PNG data URI. I have explained data URI images in a previous post, so check that out if you are unfamiliar with it.

This also means the pasted images will not display properly in Some versions of IBM Notes client, and also if you are using the content of the inputRichText for sending email content, the pasted images will also not display in the majority of webmail / email clients. This will result in a lot of replies from recipients along the lines of "I can't see any images'.

My major project recently has been a webmail interface for XPages, and accordingly I needed to solve this problem to make the users happy!

From first solution to Current solution

The solution to this problem, was to intercept the image paste event and instead of creating the data URI image, it uploads the image via the same mechanism that is used for the standard 'image button' on the CKEditor toolbar. This involves posting the image data to a URL and interpreting the 'success' response, and then inserting the corresponding '' tag into the editor content.

The first solution I came up was a modification of the free imagepaste CKEditor plugin by Alfonso Martinez de Lizarrondo. Unfortunately this solution only worked for Firefox. So it was a good start but not completely useful because some users preferred to use Chrome.

Alfonso had also released a paid plugin called SimpleUploads, which included support for other browsers such as Chrome and Internet Explorer. So I purchased this plugin and ripped the parts out of it that were needed to support chrome and internet explorer, and modified my existing solution.

This was great for me! Now my users could paste from Firefox, Chrome and Internet Explorer. However I could not share this solution on my blog because it included source code from the plugin that I purchased. The plugin is not licensed as Open Source, so this would not be within my rights to do so.

So when a stackoverflow user had the same problem, I decided to amend the solution so that I could share it whilst respecting the licensing conditions of the original plugin author.

Alfonso had actually already included some callback functions which allowed customisation of the simpleuploads plugin. It turns out I could actually reconfigure my solution to be an 'extension' of the simpleuploads plugin.

I modified the solution to use the callbacks and it was almost perfect, but I just needed Alfonso to make 1 minor change to the SimpleUploads plugin. He agreed to make the change and his latest version of SimpleUploads includes the modification to allow my solution to work.

The Solution

Obtain SimpleUploads

So as mentioned above, you will need to purchase the SimpleUploads plugin and make sure you have the latest version or at least verson 4.4.4

It starts at 10 Euros for a single site licence.

If you are a new customer you will automatically receive the latest version.

If you had previously bought SimpleUploads you may need to request the latest version from Alfonso. Alfonso has not pushed the new version out to his customer mailing list yet as the change is not significant for other users.

Install SimpleUploads

Once you have obtained the simple uploads plugin, put it in your WEB-INF directory of the NSF

Create a new Javascript library in your nsf

This library will configure CKEditor to know the whereabouts of simpleuploads plugin, and also include the necessary extensions to simpleuploads to allow it to work with XPages.

I have called it 'xspSimpleUploads'

Here are the contents of the library:

// Get the Base Url of the nsf so we can figure out the location of simpleuploads plugin
var urlBase = document.URL.substr(0,document.URL.lastIndexOf('.nsf') + 4);
// Tell CKEditor not to include a random timestamp that forces cache (because Domino gets upset if it is there)
CKEDITOR.timestamp = '';
// Tell CKEditor to include simpleuploads as an available plugin
CKEDITOR.plugins.addExternal('simpleuploads', urlBase + '/simpleuploads/', 'plugin.js');
// Disable the file upload part of SimpleUploads
CKEDITOR.config.filebrowserUploadUrl = 'dontuploadfiles';
CKEDITOR.on('instanceReady', function(e) {
var currPageUrl = document.location.href;
e.editor.config.filebrowserUploadUrl = false;
if (currPageUrl.indexOf('?') === -1) {
e.editor.config.filebrowserImageUploadUrl = currPageUrl;
} else {
e.editor.config.filebrowserImageUploadUrl = currPageUrl.substring(0, currPageUrl.indexOf('?'));
// Listen for Start Upload
e.editor.on( 'simpleuploads.startUpload' , function(ev) {
var data = ev.data;
var id = ev.editor.element.$.id;
if (ev.data.url.indexOf('?') !== -1) {
ev.data.url = ev.data.url.substring(0, currPageUrl.indexOf('?'));
// Add the xpage viewid and the client id of the inputRichText
ev.data.url += '?$$axtarget=' + id + '&$$viewid=' + XSP.findForm(id)['$$viewid'].value;
var extraFields = ev.data.extraFields || {};
var imgid = CKEDITOR.tools.getNextId();
var fileName = imgid;
ev.data.name = fileName + '.png';
CKEDITOR.tools.extend(extraFields, {
'fileName': fileName + '.png',
'actionType': 'embedded-image'
ev.data.extraFields = extraFields;
// Tell the Request to expect a html document in response
ev.data.xhr = new XMLHttpRequest();
ev.data.xhr.responseType = 'document';
e.editor.on( 'simpleuploads.serverResponse' , function(ev) {
var respXml = ev.data.xhr.responseXML;
var jsonText; // = respXml.documentElement.childNodes[1].firstChild.innerHTML;;
if (!respXml) {
I am aware that parsing html with regex is not recommended
however the simple upload plugin does not allow for setting
the responseType to document, and the response should be the same
var re = /.*<textarea>(.*)<\/textarea>.*/;
var jsonText = ev.data.xhr.responseText.replace(re, "$1");
} else {
jsonText = respXml.documentElement.childNodes[1].firstChild.innerHTML;
var embeddedImage = XSP.fromJson(jsonText);
if (null != embeddedImage && embeddedImage.statusMessage == "SUCCESS") {
var imageElement = ev.editor.document.createElement(embeddedImage.tag);
imageElement.setAttribute("src", embeddedImage.src);
imageElement.setAttribute("data-cke-saved-src", embeddedImage.dataSrc);
imageElement.setAttribute("alt", ev.data.altText);
} else {
if (null != embeddedImage) {
} else {
var el = ev.editor.document.getById( ev.data.data.id );
if (!el) {
} else {
if (ev.data.data.originalNode)
el.$.parentNode.replaceChild(ev.data.data.originalNode, el.$);
});

Configure your XPage and Ckeditor

You must include the Script Library on your xpage, and you must tell your CKeditor to use simpleuploads via the extraPlugins dojoAttribute

Here is an example page that I am using with the key points highlighted.

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:script src="/xspSimpleUploads.js" clientSide="true"></xp:script>
<xp:dominoDocument var="document1" formName="Post"></xp:dominoDocument>
<xp:label value="Subject:" id="subject_Label1" for="subject1"></xp:label>
<xp:inputText value="#{document1.Subject}" id="subject1"></xp:inputText>
<xp:inputRichText id="inputRichText1" value="#{document1.Body}">
<xp:dojoAttribute name="extraPlugins" value="simpleuploads"></xp:dojoAttribute>
<xp:button value="Save" id="button1">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:saveDocument var="document1"></xp:saveDocument>
<xp:viewPanel rows="30" id="viewPanel1" pageName="/Home.xsp">
<xp:pager partialRefresh="true" layout="Previous Group Next" xp:key="headerPager" id="pager1"></xp:pager>
<xp:dominoView var="view1" viewName="Posts"></xp:dominoView>
<xp:viewColumn columnName="Subject" id="viewColumn1" displayAs="link" openDocAsReadonly="true">
<xp:viewColumnHeader value="Subject" id="viewColumnHeader1"></xp:viewColumnHeader>

Your users should be able to paste images with no worries!

As usual, I am sure I haven't thought of everything so if you have any problems with the above, then please let me know!

As requested by Timothy Briley, here is a demonstration video which demonstrates the problem and shows the steps to implement the solution.

<title>Preventing pasting of remotely hosted images in CKEditor</title>
<pubDate>Mon, 14 Nov 2016 23:21:59 +0000</pubDate>
<category><![CDATA[Software Development]]></category>
<guid isPermaLink="false">http://camerongregor.com/?p=384</guid>
<description><![CDATA[In the previous post, I showed how to prevent a user from pasting Images from the Clipboard into CKEditor. This post is of a similar nature but is designed to ensure that users don't...]]></description>
<content:encoded><![CDATA[
In the previous post, I showed how to prevent a user from pasting Images from the Clipboard into CKEditor. This post is of a similar nature but is designed to ensure that users don't paste images with URLs to external / internal applications.

This post is part of my XPages webmail tips series, and addresses a problem where, a user copies and pastes some HTML that includes images, from a webpage and pastes it into CKEditor for a message that is then sent via email. The recipient is then unable to see the image due to the fact they don't have the same access as the author of the email.

The cause of problem is, when the image is pasted it is pasted as an img tag with a link to the location of the image on a server.

There is no guarantee that the email recipient can access the server that the image is located on. The server is possibly behind a firewall, OR if the HTML was copied from an internal system, then it is possible an external email recipient does not have access to that internal server.

Additionally even for Internal emails, if the html was copied from an XPages application and the copied image is located inside a Notes Document, the URL that is used for that image is only temporarily available by the Xpages Persistence service, and is only available to the user that copied the HTML.

The result of all of this is more complaints of "I can't see any image"

Another CKEditor Plugin!

The solution is just a modified version of the CKEditor plugin in previous post. The plugin listens for pasted content, and strips out any remotely hosted Images.

CKEDITOR.plugins.add('blockpasteimagelink', {
init : function(editor) {
function replaceImgText(html) {
var replacedSomething = false;
var ret = html.replace(/]*src="http.*?"[^>]*>/gi, function(img) {
replacedSomething = true;
return '';
if (replacedSomething) {
alert('The Image you have attempted to paste is hosted on a remote server and may not be visible to others. Pasting these images is not currently supported, please upload an image file using the Image button in the toolbar.');
return ret;
function chkImg() {
// don't execute code if the editor is readOnly
if (editor.readOnly)
setTimeout(function() {
editor.document.$.body.innerHTML = replaceImgText(editor.document.$.body.innerHTML);
}, 100);
editor.on('contentDom', function() {
// For Firefox
editor.document.on('drop', chkImg);
// For IE
editor.document.getBody().on('drop', chkImg);
editor.on('paste', function(e) {
var html = e.data.dataValue;
if (!html) {
e.data.dataValue = replaceImgText(html);
});

Save the above javascript as a script library in your nsf, called 'blockpasteimagelink'

Make sure to include the script library on your XPage, and then tell your InputRichText to use the plugin using the extraPlugins dojoAttribute. Here is a sample XPage:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:dominoDocument var="document1"></xp:dominoDocument>
<xp:script src="/blockpasteimagelink.js" clientSide="true"></xp:script>
<xp:inputRichText id="inputRichText1" value="#{document1.body}">
<xp:dojoAttribute name="extraPlugins" value="blockpasteimagelink"></xp:dojoAttribute>
</xp:view>

Now let's test it out, I would like everyone to know about the mythical Jackalope, so I will copy some info from Wikipedia!

Then I will paste it into my CKEditor, where I will receive a warning…

And after clicking ok, I can see that everything except the image has been pasted…

So we have now prevented some more cases whereby the recipient of an email will have trouble viewing images, it can be a little frustating for a user, but probably less frustrating that having to re-send an email, so I call that a win.

I had also intended on looking into the possibility of modifying the plugin so that upon pasting a remote image, the browser would try to download that image and then upload to the XPages server to be attached as an embedded image, however I haven't looked into that yet!

In our system we have another CKEditor plugin which will allows users to paste image data from the clipboard, this is a nicer solution and I will cover that in the next post.

<title>Preventing Pasting of Images in CKEditor</title>
<pubDate>Mon, 14 Nov 2016 00:43:29 +0000</pubDate>
<category><![CDATA[Software Development]]></category>
<guid isPermaLink="false">http://camerongregor.com/?p=374</guid>
<description><![CDATA[In the process of developing our XPages 'Webmail' interface, we discovered that many recipients were unable to view embedded images in the emails. After investigating, it was caused by the images being embedded using...]]></description>
<content:encoded><![CDATA[
In the process of developing our XPages 'Webmail' interface, we discovered that many recipients were unable to view embedded images in the emails.

After investigating, it was caused by the images being embedded using Data URIs. Support for Data URI Images is not universal, and because it is supported in IBM Notes, everything looked like it was working ok, but a quick test viewing an email in Gmail confirmed a problem when images could not be seen.

What is a Data URI?

You are most likely familar with an image being specified by a URL to Resource, in this cause all the binary data for the image is requested from some location

With a data URI, all the binary data for the image is contained directly in the src="" attribute, and does not need to be requested from anywhere, here is an example I lifted from wikipedia:

When sending emails however, it is a much better idea to embed the image as a separate mime entity, and refer to it using a 'Content Identifier' (cid).

The image data is then retrieved from the related mime entity which specifies that Content-ID as a MimeHeader

--==IFJRGLKFGIR32748UHRUHIHD
Content-Type: image/jpeg
Content-Disposition: inline;
Content-ID: <reddot_1479074021464>
Content-Transfer-Encoding: base64
...more binary data...
--==IFJRGLKFGIR32748UHRUHIHD--

Sending Embedded Images in Emails

The best format for sending emails is the 'content-id' method, and the Xpages CKEditor provides a toolbar button which will perform the image upload and attach as separate mime entity.

On the other hand, an easy way for users to insert images is to use some screen capture software such as Snipping Tool and then copy and paste into the CKEditor. When this method is used, the image is inserted as a Data URI.

By default, some browsers don't support the pasting of images anyway, but Firefox and probably some others do, and it must be stopped!

Preventing Pasting of Images using a CKEditor plugin

After a bit of googling I found that someone else had already come up with a plugin which prevents pasted images, and it worked without modification for XPages

I will repost the plugin here, the only modification I have made is the alert message to explain to the User to use the image upload toolbar button

CKEDITOR.plugins.add('blockimagepaste', {
init : function(editor) {
function replaceImgText(html) {
var ret = html.replace(/]*src="data:image\/(bmp|dds|gif|jpg|jpeg|png|psd|pspimage|tga|thm|tif|tiff|yuv|ai|eps|ps|svg);base64,.*?"[^>]*>/gi, function(img) {
alert("Pasting Image Data is not allowed. Please use the Image Upload button (if available).");
return '';
return ret;
function chkImg() {
// don't execute code if the editor is readOnly
if (editor.readOnly)
setTimeout(function() {
editor.document.$.body.innerHTML = replaceImgText(editor.document.$.body.innerHTML);
}, 100);
editor.on('contentDom', function() {
// For Firefox
editor.document.on('drop', chkImg);
// For IE
editor.document.getBody().on('drop', chkImg);
editor.on('paste', function(e) {
var html = e.data.dataValue;
if (!html) {
e.data.dataValue = replaceImgText(html);
} // Init
});

To use the plugin, copy the above code into a Client Side JavaScript Library 'blockimagepaste'.

Then, make sure to include the ScriptLibrary as a resource on your page. Also add the dojoAttribute 'extraPlugins' with the name of the plugin (from line 1 above 'blockimagepaste'.

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:dominoDocument var="document1"></xp:dominoDocument>
<xp:script src="/blockimagepaste.js" clientSide="true"></xp:script>
<xp:inputRichText id="inputRichText1" value="#{document1.body}">
<xp:dojoAttribute name="extraPlugins" value="blockimagepaste"></xp:dojoAttribute>
</xp:view>

So now when a user attempts to paste an image it will not be completed, and they will be given the alert

Summary and Next Steps

So in this post we added a CKEditor plugin to our application, and configured our InputRichText to use it.

The plugin prevents the pasting of data URI images, however you could modify this to prevent any html you like, in a future post we will show a modified version of this plugin to prevent images pasted using URLs. This can be troublesome for emails, as users may copy and paste html from internal applications, which is then not available to external email recipients.

Also, copying and pasting images is actually quite a useful feature don't you think? our users did too, so we also implemented another plugin which intercepts the pasted image, and uploads it using the normal 'Content-ID' method instead, I will share that solution as well in a future post.

If you would like to create a banner that links to this page (i.e. this validation result), do the following:
Download the "valid RSS" banner.
Upload the image to your own server. (This step is important. Please do not link directly to the image on this server.)
Add this HTML to your page (change the image
src attribute if necessary):
If you would like to create a text link instead, here is the URL you can use:


text:
Filter Results:
- Full text PDF available (6)
Publication Year
- This year (0)
- Last five years (1)
Publication Type
Publication Venue
Key Phrases
Learn More
- Wilfried Dinh, Reiner Füth, +7 authors Werner Nickl
- Arquivos brasileiros de cardiologia
- 2011
BACKGROUND Growth differentiation factor-15 (GDF-15), a stress-responsive transforming growth factor-ß-related cytokine, is elevated and independently related to an adverse prognosis in systolic heart failure. OBJECTIVE This study aimed to investigate plasma levels of GDF-15 in patients with preclinical diastolic dysfunction or heart failure with normal… (More)
AIMS Left ventricular diastolic dysfunction is considered a precursor of diabetic cardiomyopathy, while diabetic cardiovascular autonomic neuropathy is associated with an increased risk of mortality. This study aimed to evaluate the association between left ventricular diastolic dysfunction and cardiovascular autonomic neuropathy, both diagnosed according… (More)
- C Holubarsch, T Ruf, +10 authors D Burkhoff
- Circulation
- 1996
BACKGROUND The Frank-Starling mechanism is one of the most important physiological principles for regulation of contractile performance. We therefore studied the question of whether this mechanism may be absent or attenuated in end-stage failing human left ventricular myocardium. METHODS AND RESULTS Different methodological approaches were used to analyze… (More)
- Wilfried Dinh, Reiner Füth, +7 authors Mark Lankisch
- Cardiovascular diabetology
- 2009
BACKGROUND Diabetes mellitus (DM) has reached epidemic proportions and is an important risk factor for heart failure (HF). Left ventricular diastolic dysfunction (LVDD) is recognized as the earliest manifestation of DM-induced LV dysfunction, but its pathophysiology remains incompletely understood. We sought to evaluate the relationship between… (More)
- Wilfried Dinh, Mark Lankisch, +7 authors Reiner Füth
- Acta cardiologica
- 2011
OBJECTIVE Left ventricular diastolic dysfunction (LVDD) is considered a precursor of diabetic cardiomyopathy, while the metabolic syndrome (MetS) is associated with an increased risk of cardiovascular morbidity and mortality. This study aimed to evaluate the association between LVDD, MetS and glucose metabolism disturbances classified by oral glucose… (More)
- Wilfried Dinh, Mark Lankisch, +7 authors Reiner Füth
- Cardiovascular diabetology
- 2010
BACKGROUND Left ventricular diastolic dysfunction (LVDD) is considered a precursor of diabetic cardiomyopathy, while insulin resistance (IR) is a precursor of type 2 diabetes mellitus (T2DM) and independently predicts heart failure (HF). We assessed whether IR and abnormalities of the glucose metabolism are related to LVDD. METHODS We included 208… (More)
- Wilfried Dinh, Werner Nickl, +8 authors Reiner Füth
- Cardiovascular ultrasound
- 2010
BACKGROUND Increased muscle mass index of the left ventricle (LVMi) is an independent predictor for the development of symptoms in patients with asymptomatic aortic stenosis (AS). While the onset of clinical symptoms and left ventricular systolic dysfunction determines a poor prognosis, the standard echocardiographic evaluation of LV dysfunction, only based… (More)
- Wilfried Dinh, Lars Bansemir, +8 authors Mark Lankisch
- Acta cardiologica
- 2009
OBJECTIVE The development of left ventricular remodelling (LVR) after acute myocardial infarction (AMI) is a predictor of heart failure and mortality. The extracellular matrix (ECM) is highly susceptible to ischaemic injury. Laminin and collagen type VI (CVI) contribute to ECM formation in the infarct zone. To determine whether these markers can be detected… (More)
- Wilfried Dinh, Reiner Füth, +7 authors Mark Lankisch
- International heart journal
- 2009
It has been suggested that matrix-metalloproteinases (MMPs) and their inhibitors (tissue inhibitors of metalloproteinases (TIMPs) play a major role in the regulation of myocardial remodeling. Myocardial extracellular matrix (ECM) is highly susceptible to ischemic injury in acute myocardial infarction (AMI).We measured serum levels of TIMP-1 in the early… (More)
- Reiner Füth, Wilfried Dinh, +8 authors Mark Lankisch
- Experimental and clinical cardiology
- 2009
OBJECTIVE The development of diastolic dysfunction (DDF) is multifactorial. Possible mechanisms include metabolic disturbances, myocardial fibrosis, chronic inflammation and endothelial dysfunction. Recognizing early stages of DDF may help to identify patients at risk of developing symptomatic DDF. Therefore, biomarkers reflecting pathophysiological changes… (More)


text:
New Guidelines Seek To Provide Clarity On Food Expiration Dates
Google+. Email. February 17, 20174:32 PM ET. Heard on All Things Considered. There's no federal standard for indicating food expiration dates. Now, new guidance for food companies suggests using one of just two descriptors, "best if used by" and "use by.".
Source: food – Google News
Sharing information is key – Foods Business News UK. Social Commerce and Social Media Management playing a big part. Suaju Ltd


text:
Sponsored by: Island Synagogue
- Home
- About Us
- Calendar
- Donate
- Kiddush and Seudah Shlishit
- Communications
- Community Notice Board
Visit Us
Island Synagogue is located at:
8685 SE 47th Street
Mercer Island, WA 98040
Our hospitality committee is dedicated to creating a welcoming atmosphere for observant Jews visiting Island Synagogue.
We can arrange lodging and meals over Shabbat and holidays for singles, couples and families.
We also provide information about where to find kosher food. If you are visiting Western Washington, or would like simply to visit Island Synagogue for Shabbat or a holiday, please contact us at email@example.com and we will do our best to accommodate your needs and introduce you to our warm community.
See Driving Directions for how to find us.
Tue, July 25 2017
2 Av 5777
kiddush contributors
This week's Shabbat Kiddush is sponsored by:
Jennifer and Davit Adut
Sarah and Joel Baskin
Mark Brawerman
Janice and Ellis Cohen
Elaine and Ed Epstein
Randy and Joe Fischer
Stacy and Rich Gilmore
Julie Hirsch
Jennifer and Randy Kessler
Barb and Les Leon
Diane and Michael Medved
Marv and Saralyn Negrin
Janet and Menachem Rochon
Henrika and Michael Sandorffy
Joanna and Aaron Sandorffy
Irwin Schiller
Carol Teitz and Craig Keebler
Gabriala and Lloyd Tucker
Laurie and Ze'ev Young
in honor of
Jodi and Rick Negrin
and their new role at
Island Synagogue.
Please donate to the Kiddush Fund so we can continue our wonderful Kiddushim.
~ ~ ~
This week's Seudah Shlishit is sponsored by
No sponsor
Please sponsor a Seudah Shlishit so we can continue this program. Click here.
refuah shleimah
During Shabbat morning services, Rabbi Kornfeld reads aloud the Hebrew names of those in need of a Refuah Shlemah.
If you would like to add a name to this list, please REGISTER here before 5 p.m. on Thursday. When your loved one has recovered notify the ADMINISTRATOR.
SHABBat MEALS
Sponsor a Kiddush - go to Kiddush Calendar
Email: Kiddush Manager.
Sponsor a Seudah Shlishit - for a month or a single Shabbat
Email Howie Goldstein
Today's Calendar
|Shacharit: 7:00a
|Mincha/Maariv: 7:00p
|Nightfall: 9:49p
Tomorrow's Calendar
|Shacharit: 7:00a
|Mincha/Maariv: 7:00p
|Nightfall: 9:48p
Friday Night
|Early Mincha/Maariv: 6:59p
|Earliest Candle Lighting: 7:14p
|Candle Lighting: 8:31p
|Nightfall: 9:44p
Shabbat Day
|Shacharit: 9:30a
|Mincha/Maariv: 8:20p
|Shabbos Ends: 9:43p
Candle Lighting
|Friday, Jul 28, 8:31p
Shabbat Hazon
|Shabbat, Jul 29


text:
The Author
Prof. Vikas Slariya is a Mechanical Engineer and has done his M.Tech from PEC University of Technology and had been a research fellow with IIT - Delhi. Apart from being a Member with Institute of Engineers (India), carries a candid experience from Blue Chip companies like Larsen & Toubro and Wipro.
After serving India's most reputed companies he had started his own venture as GATE Mechanical coaching in the year 2002 wherein he is preparing Mechanical Engineering students for GATE, PSU and IES examination.
His passion for knowledge and Industry experience encouraged him to launch this book "Mechanical Engineering for GATE" published by McGRAW - Hill Education and is working hard to contribute into the field of Mechanical Engineering for GATE,IES and PSU Exam preparation.
Apart from preparing students and authoring this book Prof. Vikas Slariya has also prepared a set of highly expected questions in exam which are also shared in his book with a special emphasis on short tricks and an easy approach to solve numerical in shortest time for a healthy balance of time management during exam.
Video Gallery


text:
Durable Clear Flooring Performs well on Cruise Ship
The challenge to make a seamless 50 foot long by 10 foot wide Red Carpet with a White hashtag and letters that said "#DREAMFEARLESSLY"
Print on Carpet got the call asking for a 50 foot long by 10 foot wide custom red carpet that was to be Dye-sublimated Printed and then trimmed to its final size of 50′ by 10′. The one criteria was that it was for an event, it had to be red in color with large white letters and had to look spectacular when finished. The Carpet was done in one week of the call and delivered to the 40/40 Club in New York City at 6 West 25th Street.


text:
C. Wonder Pebble Leather Drawstring Bucket Handbag
In Stock
Sold Out
We're sorry. This item is not available at this time.
Pre Order Possible .
Low Stock
C. Wonder Pebble Leather Drawstring Bucket Handbag
C. Wonder Pebble Leather Drawstring Bucket Handbag
In Stock
Not just a drop in the bucket. Fashioned with pebble leather and a drawstring detail, this C. Wonder bag is worthy of everyday use. Use the handle or long shoulder strap to comfortably carry everything you need. Plus, stay organized with the interior pockets. From C. Wonder.
- Pebble leather body, drawstring detail, handle, adjustable shoulder strap, signature "C" hardware
- Trellis lining, back zipper pocket, two front slip pockets
- Measures approximately 12"W x 11"H x 5"D with a 9" handle drop and a 22" to 24" strap drop; weighs approximately 1 lb, 7 oz
- Body 100% leather; lining 100% polyester
- Imported


text:
Congregation of the SACRED HEARTSof JESUS and MARYGeneral Governments of the Brothers and Sisters, Rome
For SSCC only
Home / Our deceased / † Fr. Constantino HINOJOSA FLORES (Mexico)
Fr. Constantino, 46 years old, died on February 7, 2017 in México D.F. (Mexico).
He entered the novitiate in 1994 and he was professed on August 4, 1995 in Chalco (Mexico).
He was ordained a priest in México D.F. (Mexico) on May 26, 2001.
The Foundress leaves for Mende with seven sisters.
Letters from the Superior Generals
MIGRATION – a new post in the SSCC Blog
Blessed Carmelites of Compiegne, Virgins and Martyrs
Prayer support for the International Meeting of the SSCC SECULAR BRANCH (Brs & Srs)
† Father Lud van DONGEN sscc (Indonesia)
† Fr. Conrado (Ramón) MONREAL GOYENECHE sscc (Iberia)
† Sister Lucía Jaén Sánchez, ss.cc (Spain)
© 2017 SSCC picpus Congregation of the Sacred Hearts