Changeset 529


Ignore:
Timestamp:
04/13/14 15:11:43 (5 years ago)
Author:
jls17
Message:
  • added CheckedURLLink class, which in case the object is missing generates alternate HTML
Location:
branches/work_311
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/work_311/ARInsideLib.vcproj

    r527 r529  
    542542                                > 
    543543                        </File> 
    544                         <File 
    545                                 RelativePath=".\output\URLLink.h" 
    546                                 > 
    547                         </File> 
    548544                </Filter> 
    549545                <Filter 
     
    12161212                        <File 
    12171213                                RelativePath=".\output\URLLink.cpp" 
     1214                                > 
     1215                        </File> 
     1216                        <File 
     1217                                RelativePath=".\output\URLLink.h" 
    12181218                                > 
    12191219                        </File> 
  • branches/work_311/doc/DocCharMenuDetails.cpp

    r524 r529  
    227227                        const ARCharMenuSQLStruct& menu = this->menu.GetDefinition().u.menuSQL; 
    228228 
    229                         // in case a field in placed within the SQL command 
     229                        // in case a field is placed within the SQL command 
    230230                        CRefItem refItem(this->menu, REFM_CHARMENU_SQL); 
    231231 
     
    237237                        // add the table row now 
    238238                        CTableRow row; 
    239                         row.AddCell( (schema.Exists() ? schema.GetURL(rootLevel) : MenuDefinitionText) ); 
    240                         row.AddCell( strm.str() ); 
     239                        row.AddCell(CheckedURLLink(schema, MenuDefinitionText, rootLevel)); 
     240                        row.AddCell(strm.str()); 
    241241                        table.AddRow(row); 
    242242                } 
     
    331331                        // add the table row 
    332332                        CTableRow row; 
    333                         row.AddCell((schema.Exists() ? schema.GetURL(rootLevel) : MenuDefinitionText)); 
     333                        row.AddCell(CheckedURLLink(schema, MenuDefinitionText, rootLevel)); 
    334334                        row.AddCell(strm.str()); 
    335335                        table.AddRow(row); 
     
    412412                        // now add the row to the table 
    413413                        CTableRow row; 
    414                         row.AddCell((schema.Exists() ? schema.GetURL(rootLevel) : MenuDefinitionText)); 
     414                        row.AddCell(CheckedURLLink(schema, MenuDefinitionText, rootLevel)); 
    415415                        row.AddCell(strm.str()); 
    416416                        table.AddRow(row); 
  • branches/work_311/output/URLLink.cpp

    r522 r529  
    5757        URLLink::URLLink(const CARServerObject &workflowObject, int rootLevel, bool showImage) 
    5858        { 
    59                 CPageParams linkToPage(PAGE_DETAILS, &workflowObject); 
    60                 Init(workflowObject.GetName(), linkToPage, (showImage ? ImageTag(workflowObject, rootLevel) : ImageTag(ImageTag::NoImage, 0)), rootLevel, true, URLLink::TARGET_MODE_SELF); 
     59                InitObj(workflowObject, rootLevel, showImage); 
    6160        } 
    6261 
     
    9291        } 
    9392 
     93        void URLLink::InitObj(const CARServerObject &workflowObject, int rootLevel, bool showImage) 
     94        { 
     95                CPageParams linkToPage(PAGE_DETAILS, &workflowObject); 
     96                Init(workflowObject.GetName(), linkToPage, (showImage ? ImageTag(workflowObject, rootLevel) : ImageTag(ImageTag::NoImage, 0)), rootLevel, true, URLLink::TARGET_MODE_SELF); 
     97        } 
     98 
     99        void URLLink::InitDirect(const std::string &linkHTML) 
     100        { 
     101                link = linkHTML; 
     102        } 
     103 
    94104        void URLLink::AddCaption(std::ostream &strm, const std::string &caption, bool validate) 
    95105        { 
     
    116126 
    117127}; // end namespace OUTPUT 
     128 
     129CheckedURLLink::CheckedURLLink(const CARServerObject &workflowObject, const std::string &alternateHTML, int rootLevel, bool showImage) 
     130{ 
     131        if (workflowObject.Exists()) 
     132        { 
     133                InitObj(workflowObject, rootLevel, showImage); 
     134        } 
     135        else 
     136        { 
     137                InitDirect(alternateHTML); 
     138        } 
     139} 
  • branches/work_311/output/URLLink.h

    r522 r529  
    4444                std::ostream& ToStream(std::ostream &strm) const; 
    4545                operator std::string () const; 
     46        protected: 
     47                URLLink() {}; 
    4648        private: 
    4749                std::string link; 
    4850 
    49         private: 
     51        protected: 
    5052                void Init(const std::string &caption, const CPageParams &linkToPage, const OUTPUT::ImageTag &image, int rootLevel, bool validate, OUTPUT::URLLink::LinkTargetMode target); 
     53                void InitObj(const CARServerObject &workflowObject, int rootLevel, bool showImage); 
     54                void InitDirect(const std::string &linkHTML); 
    5155                static void AddCaption(std::ostream &strm, const std::string &caption, bool validate); 
     56        }; 
     57 
     58        class CheckedURLLink : public URLLink 
     59        { 
     60        public: 
     61                CheckedURLLink(const CARServerObject &workflowObject, const std::string &alternateHTML, int rootLevel, bool showImage = true); 
    5262        }; 
    5363 
  • branches/work_311/output/URLLinkTest.cpp

    r522 r529  
    6767TEST_F(URLLinkTests, ObjectLinkWithImage) 
    6868{ 
    69         CFakeServerObject fakeWorkflow; 
     69        CFakeServerObject fakeWorkflow("TheTestObj"); 
    7070 
    7171        stringstream strm; 
     
    108108        ASSERT_STREQ("<img src=\"../img/overlay.gif\" style=\"background:url(../img/menu.gif)\" width=\"16\" height=\"16\" alt=\"menu.gif\" /><a href=\"../menu/SampleMenu.htm\">SampleMenu</a>", result.c_str()); 
    109109} 
     110 
     111TEST_F(URLLinkTests, CheckedObject) 
     112{ 
     113        CFakeServerObject fakeWorkflow("TheTestObj", AR_STRUCT_ITEM_XML_ESCALATION); 
     114 
     115        stringstream strm; 
     116        strm << CheckedURLLink(fakeWorkflow, "<p>Object is missing</p>", rootLevel); 
     117        string result = strm.str(); 
     118 
     119        ASSERT_STREQ("<img src=\"../img/escalation.gif\" width=\"16\" height=\"16\" alt=\"escalation.gif\" /><a href=\"../escalation/TheTestObj.htm\">TheTestObj</a>", result.c_str()); 
     120} 
     121 
     122TEST_F(URLLinkTests, CheckedObjectMissing) 
     123{ 
     124        const char* AlternateHTMLIfObjectDoesNotExist = "<p>Object is missing</p>"; 
     125        CFakeServerObject noneExistingWorkflow; 
     126 
     127        stringstream strm; 
     128        strm << CheckedURLLink(noneExistingWorkflow, AlternateHTMLIfObjectDoesNotExist, rootLevel); 
     129        string result = strm.str(); 
     130 
     131        ASSERT_STREQ(AlternateHTMLIfObjectDoesNotExist, result.c_str()); 
     132} 
  • branches/work_311/test/fakes/FakeARServerObject.h

    r520 r529  
    77{ 
    88public: 
    9         CFakeServerObject(const std::string &name = "TheTestObj", unsigned int xmlType = AR_STRUCT_ITEM_XML_ACTIVE_LINK, unsigned int overlayType = AR_ORIGINAL_OBJECT) 
     9        CFakeServerObject(const std::string &name, unsigned int xmlType = AR_STRUCT_ITEM_XML_ACTIVE_LINK, unsigned int overlayType = AR_ORIGINAL_OBJECT) 
    1010                : CARServerObject(0) { objName = name; objType = xmlType; objOverlayType = overlayType; } 
     11        CFakeServerObject() 
     12                : CARServerObject(-1) { objType = 0; objOverlayType = 0; } 
    1113 
    1214        ARAccessNameType name; 
     
    1618 
    1719        // from CARServerObject 
    18         virtual bool Exists() const { return true; } 
     20        virtual bool Exists() const { return (insideId>-1); } 
    1921 
    2022        virtual const char* GetHelpText() const { return ""; } 
     
    2729        virtual int GetServerObjectTypeXML() const { return objType; } 
    2830 
    29         virtual CARServerObject* Clone() const { return new CFakeServerObject(); } 
     31        virtual CARServerObject* Clone() const { return NULL; } 
    3032        virtual bool IsClonable() const { return true; } 
    3133 
Note: See TracChangeset for help on using the changeset viewer.