Using require() in Web-Engine Plug-in

Wanted to require function to include a ser of functions in my web-engine plugin
I added require 'myfunctions' to manifest.lrweb but i get an error that
module 'myfunctions' not found:
   no field package.preload['myfunctions']
   no file './myfunctions.lua'
   no file '/usr.local.share........
But in my web plugin Lightroom/Web Galleries/mygallery.lrwebengine there is a file called myfunctions.lua
Is this where it should go, can't seem to find any documentaion on require with web-engine plug-in

Hi,
I haven't tried to write a web engine so don't know the answer off the top of my head. A quick glance at the SDK guide and the two SDK samples didn't give me any hints at the answer.
Before I nudge one of the gallery developers to see if they know the answer I need to confirm one thing. Can you please confirm you have a file in the same directory as your manifest using the name "myfunctions.lua", and that your require statement looks something like this:
  require "myfunctions"
(Thie filename should be considered case sensitive).
I know its an obvious question but I need to ask before I ask one of the others for assistance.
Matt
UPDATE: It might also be worth having a look at Sean's 3 post series on web galleries, which is the only other resource I can recall re building web galleries.
Added additional resource re web gallery development

Similar Messages

  • Pass export file/directory name in Web Engine plug-in

    I use a custom Lightroom web engine plug-in that I use to publish my website (5000+ pages).  Here is an example of an output section:
    http://www.johnkane.com/2010-03-01-MuirWoods/index.html.
    I use Dreamweaver to synchronize all the assets such as menus and links, including the plug-in files (Lua pages).  Each web gallery is published to its own folder in my website.  It works great except that every time I publish/republish a web gallery, I have to scroll and identify the directory in the Export / Save Web Gallery dialog box (or type the file (directory) name in for an initial export/publish).
    I have created a panel text box and variable (metadata.directoryPermalink.value) that can contain the directory name.  By storing this directory permalink along with the web gallery, I hope to ensure that each gallery is always published to its correct directory...
    ... except I don't know how to pass this variable to the export dialog box (as "File name" which actually is the directory name all the gallery files are exported to.
    Do I specify this in the manifest?  I don't see references in either the manifest or galleryInfo files... or in the sdk LrWebViewFactory section.  Perhaps I've missed it?
    Any help appreciated!
    Thanks,
    jk

    Hi,
    I haven't tried to write a web engine so don't know the answer off the top of my head. A quick glance at the SDK guide and the two SDK samples didn't give me any hints at the answer.
    Before I nudge one of the gallery developers to see if they know the answer I need to confirm one thing. Can you please confirm you have a file in the same directory as your manifest using the name "myfunctions.lua", and that your require statement looks something like this:
      require "myfunctions"
    (Thie filename should be considered case sensitive).
    I know its an obvious question but I need to ask before I ask one of the others for assistance.
    Matt
    UPDATE: It might also be worth having a look at Sean's 3 post series on web galleries, which is the only other resource I can recall re building web galleries.
    Added additional resource re web gallery development

  • Is a web server plug-in required between Apache 2.2 and WLS 10.3.5

    I am using Fusion Middleware 11g PS4 (11.1.1.5) at a new client and they currently are using Apache 2.2 for their web clients. The detailed question that I cannot answer is... Why do I need the web server plug-in mod_wl_22.so to be installed? I've read the docs that state how to install and configure and I have done this before without question. But, is this module really needed to send requests to weblogic server?
    Does anyone know the detailed answer to this? What is the mod_wl_22.so really doing?
    My client is very web savvy and is wondering if the web server can be set up to front-end weblogic server without this.
    The environment is a 2 node cluster with SOA suite as the main component. I have a soa_cluster, bam_cluster, wsp-pm_cluster and Admin Server installed on both of these nodes.
    Any help is appreciated.
    Thanks,

    I found this link to a .pdf that I believe explains the difference between OHS and Apache and what the web server plug-ins do. See this link:
    http://www.oracle.com/technetwork/middleware/ias/ohs11gr1-131852.pdf

  • A Website I use requires adobe flash plug in but iPad does not support this, canyou provide a solution?

    A website I use requires adobe Flash plug-in. In trying to download this it states It is not supported by the device. Can you please suggest a solution?

    Use different hardware that supports Flash instead of the iPad that doesn't.
    Allan

  • Path to Web Engine folder using LrPathUtils

    Is there a way to refer to the Web Engine folder path (cross platform) using LrPathUtils or LrFileUtils in galleryInfo.lrweb?

    Prateek,
    You have two options, you can either concatenate the strings, or if the variable is already a string, enclose it in square brackets. The square brackets insert the value of the parameter.
    Option A - Concatenate
    print('My variable is: '||$p_parameter);
    Option B - Inline
    print('My variable is : \[$p_parameter\]');
    Cheers,
    Aaron
    Edited by: Aaron Titmarsh on Feb 9, 2012 9:06 AM

  • Should I install Apache Web server to use Jakarta Tomcat Servlet engine?

    Hello,
    I have some problems and now have a question:
    Should I install Apache Web server to use Jakarta Tomcat Servlet engine?
    JTK home page is available via http://localhost:8080
    Tomcat ver 3.1.3
    Thanks.

    No, you don't need to run Apache webserver (httpd) to run Tomcat. Tomcat by default runs on port 8080, but you can set it to any port, including 80, if you have permission to do so (on *nix systems, you need root permissions to run services on any port below 1024).
    Tomcat is a webserver as well, just one that includes a servlet container and JSP processor. So it will serve your html files, images, etc (aka static content), just as well as Apache httpd, in addition to being able to run servlets and JSPs.
    Apache httpd has more options for serving static content than Tomcat, so many people prefer to use it as their main webserver and only use Tomcat as a sort of "plugin" to handle servlets and JSPs. This can be achieved through a connector. Instructions on how to set this up are on the Jakarta website.
    So you could use Apache and Tomcat combined, next to each other, or totally separated. In many cases, just Tomcat will do.

  • I currently have the iphone using imei is 013428003820386. I'm using normal. When I plug the phone into the laptop to copy the photos to your computer system requires update to the latest version. I agree to the machine but when the update requires activa

    I currently have the iphone using imei is 013428003820386. I'm using normal. When I plug the phone into the laptop to copy the photos to your computer system requires update to the latest version. I agree to the machine but when the update requires activation by icloud account. I logged in with my account but still not activated and security. My account is being used to send mail me this log. I respectfully request that you can help me to reactivate my phone. Thank you very much. I swear this is my phone and I have been using previously. Thank you, thank you

    Don't post personal details on a public user to user technical support forum where nobody can help you.
    If you want help, then contact Apple directly, but not here on a public user forum.

  • Using the Embedded Web Server To Connect A Wireless Printer To Your Network

    AKA:No Wireless Setup Wizard Button, which would be way easier.
    The Prelude
    Some entry level printers do not offer a 'Wireless Setup Wizard' button, or a menu option that is accessible from the front of the printer. Printers that do not offer this luxury option, can still be easily configured to communicate to your router if you have a Mac or Windows PC.
    You still may have an easy option to get your network settings configured in your printer, if your router supports WPS. I personally do not like to use WPS as it can bring its own frustrations. WPS is not within the scope of this document.
    This document is geared towards the last available option, and in my opinion the best option. It can however be the most involved option. I am referring to using the Embedded Web Server (EWS). Most modern network capable HP Printers have a setting page that can be accessed from a web browser. The process is rather simple, but many confusing hiccups can occur, and that is what I hope to prepare you for.  There will be variances for different printers. I am using my experience with consumer printers that have been around the last few years.
    First, do not get overexcited about this document: Accessing the HP Embedded Web Server. Don't get me wrong, it is a great document, it's just that the instructions, while accurate, will not work until your printer is configured to connect to your network first. We will revisit this later however.
    Seatbelts Please
    The first thing we need to do, is have the printer broadcast its own network, sometimes referred to as AdHoc, sometimes referred to as Auto Wireless Connect. To do this, you need to navigate the menu system of the printer, and find the option to reset the network settings, network defaults or something similar. If your printer has the Wireless Direct feature you won't need to reset the network settings, but this is a perfect time to make sure Wireless Direct is turned on. If you aren't using Wireless Direct, the timer starts. Generally speaking, for the next two hours, the printer will broadcast an 'HP Setup' network, or have some variation of the printers name listed in available wireless networks. Regardless you should have plenty of time, if you read it all first and then went throught the steps.
    *Preparation:
    Here is where you want to use your favorite device, one capable of seeing 2.4ghz networks. Android phone, Apple iPad, Chromebook, Windows or Mac Notebook that you decided not to install the printer software on. Any of these devices will work. Apple iOS devices required a bit of coddling, as Safari doesn't work well with the EWS Wireless Setup Wizard.
    Do you know your network SSID? What about the passphrase, passkey or whatever the security word is called?
    If you didn't set it up, and just started using it when the internet guy installed it, then there is probably a sticker on the router with that information. If you still can't find it, call your ISP, router manufacturer or favorite family member for help to find that information (If you use a family member, remember to buy them something nice on the next gift giving holiday in your region).
    *Apple iOS specific, device preparation:
    1. You will save yourself a lot of frustration by downloading the Chrome Browser for iOS now. Go ahead, I will wait...
    If you are installing Chrome for the first time, when it completes the install, open it, and get passed the greeting and tutorial before continuing.
    2. You need to forget your home network connection when you are done with step 1. Just hold down on your home network in the wireless networks list, and 'Forget' the connection (or find the arrow that leads to the same option). If you do not take this step, it will reconnect to the home network once you run the Wireless Setup Wizard, causing you to have to back track.
    3. Be aware, when you connect to your printer's network, that it may appear to not connect (ie. spinning wheel, no confirmation) to the printer. This is a known behavior. Just close the wireless settings, and proceed as normal.
    Begin The Journey
    Open up the wireless section of your device and look in the list of available networks and tell it to connect to the HP printer network. The SSID will usually start with HP, and may have the printer model or the word SETUP in the name. Once you are connected (see "Apple iOS specific, device preparation #3 if you are using iOS), it is time to open your browser, preferably the Chrome browser when at all possible. In the address bar type 192.168.223.1 and press go or hit enter. I use the colloquialism 'hit' when I just mean 'press' again, sorry for the redudancy.
    If all is well, you should see a web page that should refer to your printer. Now is the time to find the 'Wireless Setup Wizard' button. Most printers should have it here on the main page of the EWS. Just take your time, it may not be obvious at first. Once you press it, the setup process will begin. Follow the instructions. It should see a list of detected wireless networks, and you can select your home network. Then if it requires a password, it will prompt for you to enter it. At the end of the Wizard, it might say something about not being able to test it, or show a page cannot be displayed screen. This is OK. This means the printer is now talking to your router and not your device in your hand.
    Proof Of Concept
    You can now tell your device to scan and connect back to your normal home network. Once you connect, you can verify if you can see your printer. Keep in mind, with dual band routers, that the printers will typically only be visible on the 2.4GHZ network, so your device should also connect to that network as well for testing. Once connected, now we need to find out what IP Address the printer has. Remember the document I started with “Accessing the HP Embedded Web Server”. It now is relevant, and you can complete those instructions to make sure you can see your printer on the same network. If your device can enter the printers EWS with its new IP, then you have officially connected your printer to your network. Also your printers wireless light should be solid, indicating communication.
    If It Worked
    Now the fun begins. If you are setting up ePrint, and if there is no option to configure ePrint from the front panel, find the Web Services tab, and proceed with that process. If you are setting it up to a Chomebook, you still need to setup ePrint (if it is an ePrinter) before configuring Cloudprint... but that's another document.
    I hope I have not missed any small detail that pertains to your configuration that made this hard to follow. Any comments would be welcomed to improve this for future use.
    TwoPointOh
    I work on behalf of HP
    Please click “Accept as Solution ” if you feel my post solved your issue, it will help others find the solution.
    Click the “Kudos, Thumbs Up" on the bottom to say “Thanks” for helping!

    That printer also has a USB port why don't you connect it using that port?
    If you insist on using ethernet, Mac OS X can create two network connections at the same time. On the iMac you can configure one of the network connections to be wireless and the other to be wired using the ethernet port.
    Since you already have a wireless network configured and connecting to your AirPort Extreme for Internet access all you need to do is plug in an ethernet cable from your iMac directly to your printer and configure them to use self-assigned IP addresses. Self-assigned IP addresses take the form of 169.xxx.xxx.xxx and are used in this configuration to avoid any conflicts with your other network. You have to configure the iMac and the printer to each have a unique IP address in the self-assigned range, just make each of the last group of numbers in the IP address different, and then the iMac should be able to print to the printer.
    Note that when you configure the Imac and printer this way no other network devices will be able to print

  • Payment engine - Plug-In for own file format

    Hi,
    I developed a plug-in for the payment engine (2004C for Poland) which generally can be debugged/compared/deployed successfully.
    But: Depending on choosing certain company databases, it's posible/not possible to run the project of the add-on from the debugging environment. If I choose one of the "incorrect" databases, starting the debugger using Visual Studio .NET 2003 succeeds, but I am getting two popup windows within the B1-GUI and one popup outside of B1:
    1. window within B1: "Check database". To my mind, this popup is generated by the payment engine.
    2.window  within B1: "The database has been upgraded to a more recent version of the SAP Add-on, please upgrade the SAP Add-On on this computer to version 6.70.2.0"
    At this time within Visual Studio, I can notice two exceptions thrown by a corresponding thread: First-chance exception at 0x7c812a5b in SBOAddOn.exe: Microsoft C++ exception: MalformedURLException @ 0x0112b6b4.
    First-chance exception at 0x7c812a5b in SBOAddOn.exe: Microsoft C++ exception: [rethrow] @ 0x00000000.
    3. window outside of B1: "SAP Add-On terminated due to required software update"
    This means to me: The process of debugging starts as usual (successful). Thereby, the payment engine is started (successful). After that, it seems to me that the payment-engine is either comparing different library version of certain dll's / AddOn.exe as stated in SAP notice 1156374 or comparing information stored in the database table of the company and - due to the result -terminates. This behaviour seems depend on the selected company-database.
    Did anyone notice a similar behaviour of payment-engine plug-ins? Is it possible to change data (within the company database or somewhere else) in order to be able to debug the affected company databases again?
    Best regards,
    Norbert
    SAP - Notice: 1156374
    Symptom
    When you start an SAP addon, sometimes it will show an error message like this, "The Database was upgraded to a newer Version of the SAP Add-on; please perform an upgrade of the SAP Addons to Version X.XX.XX.XX on this
    client also."
    Cause and Prerequisites
    Usually, an addon is comprised of two parts, addon exe with relevant dlls installed in addon folder and a BFAddonFramework.dll in windows' system32
    folder which will provide common functionality for addons to connect with SBO and some other utilities like db operation, form operation etc.
    As we will release a new addon patch only when there are bug fixes in this period, not all addons have relevant patch comforming to the patch No.
    Some addons will do version check before starting up successfully, and this check will compare the version difference between addon and framework dll.
    If they do not match, such a warning message will display. This is a friendly notification warning you that issue may occur when the versions do not match, but normally they can work properly with each other.
    If we have framework changed a bit which will cause the incompatibility between addons and framework, we will release addons with relevant framework version. That is in our concern.
    Solution
    Normally, the error message will not affect the addon's behavior. You should just ignore it.

    There are commercial plugins from DTP Tools and Markzware that will allow you to open a PDF and convert to .indd directly, but that's the only way to edit a PDF inside ID, and there may be some loss in translation.
    You can export the images and the text from the PDF using Acrobat pro, then plalce the PDF into ID as a template on which to rebuild, or you can try to obtain the original files used to create the PDF. As a format, PDF is inteneded to be the final output, not subject to further editing.

  • Problem in Using an URL in Exit Plug (NW 2004s SP12)

    Hi,
    I have a Webdynpro application to specify the terms and conditions for the users when they login to the portal for the first time.
    Upon Accepting the terms by the user, i used to loggoff the user and will redirect to the portal logon page again to relogin. (This was a requirment )
    I was using an exit plug with the URL pointing to loggoff.jsp which invalidates the session and redirect to the portal login page again. This was working fine in NW 2004.
    The code used to call the exit plug in the Window Interface view is,
    <b>wdThis.wdGetTermsandConditionsWindowInterfaceViewController().wdFirePlugToPortal("/globalportal/web/logoff.jsp");</b>
    When we upgarded into 2004s SP12 i am getting the folllowing error when firing the exit plug with the URL.
    <b>"The Exit Plug can not use an URL when used in Portal, use Portal Navigation instead"</b>
    We tried portal navigation as well, but seems that will work with PCD Objects only, where we need to redirect to the URL(logoff.jsp).
    I tried the HttpServletResponse.sendRedirect() as well, but the control remains in the TermsandConditions view only.
    <b>Code Used:
    WebCallback  webcallback = new WebCallback();
    HttpServletResponse response= webcallback.getResponse();
    response.sendRedirect(URL);</b>
    Please let me know if somebody faced this issue and the work around for this.
    My requirement is that upon clicking on the Accept button, i need to logoff the user by calling logoff.jsp will be destroy
    the session and redirect to portal login page.
    Please let me know the work around to call the URL in the view.
    Appreciate your reply.
    Thanks and Regards,
    Sekar

    Hi
    Try
    WDClientUser.forceLogoffClientUser(null);
    url - the URL of the page that is shown to the user after logoff was done. If the parameter is null, the redirect is done to the "LogoffURL" URL that can be specified in the application properties. If this URL is also not defined, a redirect to a Web Dynpro internal logoff page is done.
    So you may either accept default logoff-page (just text "Web Dynpro application terminated. Good bye!" or provide your own page via application properties).
    Next, it is impossible to just log-off to auth screen. It is necessary to set as log-off URL some application that requires authentication also.
    This way WD will first log-off user, then shows auth-screen and then login him again to the target application.
    So try the following:
    In NW IDE open your application properties, and add standard property "log-off URL", for example "/useradmin/userAdminServlet?userProfileView";
    Regards
    Ayyapparaj

  • What does it mean "Business Service leak: Web Engine State Properties"

    Hi ,
    We are on the Siebel 8.0.0.2 with extra patches to address the memory Issues. we are experiencing memory Leak, When I increase the logging level to 5 and couple of other parameter enabled, I see statements like "Business Service leak: Web Engine State Properties" ( even for Custom Business Service as well). Also when I enable Trace Statements, I don't see Release statements for the ALLOCS associated with Business Services. I am wondering to know if you have experienced something of this sort? Any thoughts will be greatly appreciated.
    Thanks,
    GS
    Edited by: user4496185 on Jan 20, 2009 12:03 PM

    Agree with everyone's suggestions here. We recently went through a process of reviewing all of our eScript and found a number of occurrences of objects created and never destroyed.
    We applied a standard approach of declaring object type variables at the beginning of each script then destroying them all with a finally() block at the end (oObject=null).
    Initialising objects if and when they are required, instead of all up front at the beginning of a script, may also serve to reduce the impact of this problem. So instead of:
    var oCustBS = TheApplication().GetService("Custom BS");
    if (bIsRecord) {
         oCustBS.InvokeMethod("CustMethod");
    oCustBS = null;
    ...use:
    var oCustBS;
    if (bIsRecord) {
         oCustBS = TheApplication().GetService("Custom BS");
         oCustBS.InvokeMethod("CustMethod");
    oCustBS=null;
    ...There is an Expert Services Review which can be conducted that will identify problems, though it's relatively straight forward to do so yourself with enough time and effort.

  • Is it possible to use the JAVA Report Engine SDK to modify DESKI reports?

    Post Author: Nadine
    CA Forum: JAVA
    Hi, is it possible to add a complex filter to a DESKI report using the JAVA report engine sdk?
    In the developer tutorials for this API, I've only found references to WEBI in terms of modifying reports, though it seems to be possible to view DESKI reports with this sdk.
    I am a bit confused in terms of the scope of this API and how I would use it in regard to DESKI.
    Many thanks for any suggestions!
    Nadine

    Post Author: Ted Ueda
    CA Forum: JAVA
    Current (XI R2) version of ReportEngine API only supports refreshing/viewing functionality for Desktop Intelligence documents.  Document modification/creation is only supported with Web Intelligence documents.  Queries aren't modifiable for Deski using ReportEngine API - you can only do so using Desktop Intelligence Reporter SDK, which is COM based.Sincerely,Ted Ueda

  • Using WebCenter Spaces Web Service API through JDeveloper's Data Control

    Hi,
    I'm trying to access WebCenter Spaces Web Service API (located at http://host:port/webcenter/SpacesWebService)
    using JDeveloper's Web Center Data Control.
    I created a data control in my portal project using JDeveloper's Web Service Data Control wizard.
    I also created and configured key stores (jps-config.xml) at both sides (spaces server and my portal client).
    How I created a data control:
    * First I entered the name and the URL (http://host:port/webcenter/SpacesWebService?WSDL)
    * Then I entered HTTP basic authentication details (user name and password)
    * After that I drag-and-drop the getGroupSpaces() method from the data control to a .jspx page as a ADF read-only table.
    * Then ran my portal project and navigated to this .jspx page and it worked. List of group spaces appeared well on that page.
    The problem is that I got only public group spaces and group spaces created by the user I entered on HTTP basic authentication details.
    I makes no sense to enter some static user details in a web service client (or a data control).
    So the question is; can I use identity propagation to get only group spaces created by the same user which I logged in my portal?
    Edited by: 832886 on Feb 18, 2011 3:09 AM

    Hi,
    You generally get NameError when you are executing the createCred/updateCred from a incorrect location. Are you using the wlst from oracle_common\common\bin?
    Also, In your steps I don't see what you did to populate the walllet at JDeveloper end after your updateCred failed. This is a required step. Use the wlst from the location emntioned above and you should be able to proceed.
    Thanks,
    Vishal

  • CS5 - Flex UI plug-in using a C++ model backend plug-in

    Hi,
    I'm new to InDesign CS4/CS5 plug-in development and been given the task of coming up with a plug-in equivalent to one done for QuarkXPress 8.
    In the CS4 SDK there were two samples for the FlexUIStroke plug-in. One was a pure Flex/scripting sample and the other was a combination of Flex and C++. The latter was useful for showing how C++ source code could interface with Flex. In the CS5 SDK (build 335) the C++ sample has been removed.
    The Flex/scripting sample has been rewritten for use with CS Extension Builder under Flash Builder 4. I've quickly tested this using CSEB and it is a really handy tool for creating, installing and debugging InDesign extensions using Flex panels.
    In CS5, Adobe state the importance of model/UI separation as the former permits multiple threads. By this I assume that a separate thread in the model plug-in can manipulate a document. I like the idea purely as a means of developing code where the UI is separate from a backend which loads, saves and manipulates documents. The UI can be reinstalled without changing or reinstalling the backend.
    My project requires:
    A panel-based user interface (using Flex).
    Sockets code to listen for messages from a browser to load and save documents etc - therefore a multi-thread solution.
    Code to add text and images to the document via the plug-in user interface and report back any problems to the user interface - two-way communications.
    It sounds straightforward - as it was in QXP. But here's the crunch, is it possible to have a UI plug-in developed using CSEB and a model-compliant (not using WidgetBin.lib) backend developed using C++? At the moment I'm thinking I'm stuck using a "CS4" approach (single plug-in without CSEB) for the project.
     

    This morning I added some code to a C++ plug-in to enumerate through the plug-ins installed under InDesign. The aom was to see if LoadMovieFromResource() could work. I noticed that the CSEB plug-in was not listed. Then I realized that CSEB doesn't generate plug-ins but extensions. Therefore the last few days has been a waste.
    The CS SDK states that:
    It is possible to combine a Creative Suite extension with a C++ plug-in to create a hybrid extension; the
    tech note provides more information about how to do this.
    I haven't found the tech note!
    I've lost too much time on this, so my project will revert back to two C++ plug-ins (one UI and one model) where the UI plug-in loads the SWF.
    Shame, I feel a real opportunity has been missed here to make plug-in development using Flex user interfaces really easy (especially debugging). Oh well may be a few SDK builds down the road, C++ plug-in using Flex user interfaces will be documented better.

  • Muti-page HTML Web Engine that shows filename or other details

    I am getting frustrated with the limited web support in Lightroom 2.1. I am looking for a very basic HTML based web engine that can show labels, flagged status or name on the thumbnail page. I don't have the time to figure out the SDK and start writing my own.
    I have tried the TTG engines, which will allow you to put additional info into the thumbnails, but it dumps everything into one page and it doesn't stack the thumbnails correctly.
    Can anyone point me to something that would work. It just shouldn't be this hard.
    Thanks,
    Chris

    Right.
    There are 3 ways to use CSS:
    Inline: styles applied to the  HTML code between the <body> tags.  This is not usually recommended.
    Embedded:  inside  <style> and </style> tags between the  <head> tags in your HTML document. This code is applied to only one page.
    External: a physical file that contains nothing but CSS code and applies to all site pages that are linked to it.
    If you have a unique style you want to use on a single page, either use embedded CSS (in the HTML document itself) or set up a unique class in your external stylesheet.
    CSS classes:
    .center {text-align:center}
    .right {text-align:right}
    .left {text-align:left}
    HTML:
    <p class="center"> this is centered text</p>
    Nancy O.
    Alt-Web Design & Publishing
    Web | Graphics | Print | Media  Specialists
    www.alt-web.com/
    www.twitter.com/altweb
    www.alt-web.blogspot.com

Maybe you are looking for