Changeset 660


Ignore:
Timestamp:
09/23/14 13:28:43 (3 years ago)
Author:
jls17
Message:
  • fixed a crash if a field in a join form is pointing to a deleted field in one of the join-members (#143)
Location:
branches/work_312
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/work_312/doc/DocSchemaDetails.cpp

    r618 r660  
    277277                                                        CPageParams fldRightLink(PAGE_DETAILS, &fldRight); 
    278278 
    279                                                         string leftFieldName = fldLeft.GetName(); 
    280                                                         string leftFieldLink = CWebUtil::GetRelativeURL(rootLevel, fldLeftLink); 
    281                                                         string leftSchemaName = schemaLeft.GetName(); 
    282                                                         string leftSchemaLink = CWebUtil::GetRelativeURL(rootLevel, schemaLeftLink); 
     279                                                        string leftFieldName; 
     280                                                        string leftFieldLink; 
     281                                                        if (fldLeft.Exists()) 
     282                                                        { 
     283                                                                leftFieldName = fldLeft.GetName(); 
     284                                                                leftFieldLink = CWebUtil::GetRelativeURL(rootLevel, fldLeftLink); 
     285                                                        } 
     286                                                        else 
     287                                                        { 
     288                                                                leftFieldName = "1"; 
     289                                                        } 
     290 
     291                                                        string leftSchemaName = compSchema.u.join.memberA; 
     292                                                        string leftSchemaLink; 
     293                                                        if (schemaLeft.Exists()) 
     294                                                                leftSchemaLink = CWebUtil::GetRelativeURL(rootLevel, schemaLeftLink); 
    283295                                                         
    284                                                         string rightFieldName = fldRight.GetName(); 
    285                                                         string rightFieldLink = CWebUtil::GetRelativeURL(rootLevel, fldRightLink); 
    286                                                         string rightSchemaName = schemaRight.GetName(); 
    287                                                         string rightSchemaLink = CWebUtil::GetRelativeURL(rootLevel, schemaRightLink); 
     296                                                        string rightFieldName; 
     297                                                        string rightFieldLink; 
     298                                                        if (fldRight.Exists()) 
     299                                                        { 
     300                                                                rightFieldName = fldRight.GetName(); 
     301                                                                rightFieldLink = CWebUtil::GetRelativeURL(rootLevel, fldRightLink); 
     302                                                        } 
     303                                                        else 
     304                                                        { 
     305                                                                rightFieldName = "1"; 
     306                                                        } 
     307                                                        string rightSchemaName = compSchema.u.join.memberB; 
     308                                                        string rightSchemaLink; 
     309                                                        if (schemaRight.Exists()) 
     310                                                                rightSchemaLink = CWebUtil::GetRelativeURL(rootLevel, schemaRightLink); 
    288311 
    289312                                                        Value leftNameVal(leftFieldName.c_str(), static_cast<SizeType>(leftFieldName.size()), alloc); 
     
    321344                                                                CPageParams baseFieldPage(PAGE_DETAILS, &baseField); 
    322345 
    323                                                                 string baseFieldName = baseField.GetName(); 
    324                                                                 string baseFieldLink = CWebUtil::GetRelativeURL(rootLevel, baseFieldPage); 
    325                                                                 string baseSchemaLink = CWebUtil::GetRelativeURL(rootLevel, baseSchemaPage); 
     346                                                                string baseFieldName; 
     347                                                                string baseFieldLink; 
     348 
     349                                                                // now check if the field exists in the join-member! Otherwise we can't determine the field name and URL! 
     350                                                                if (baseField.Exists()) 
     351                                                                { 
     352                                                                        baseFieldName = baseField.GetName(); 
     353                                                                        baseFieldLink = CWebUtil::GetRelativeURL(rootLevel, baseFieldPage); 
     354                                                                } 
     355                                                                else 
     356                                                                { 
     357                                                                        // if this field doesn't exist in the join member, show the fieldid instead! 
     358                                                                        stringstream baseFieldIdStrm; 
     359                                                                        baseFieldIdStrm << field.GetMapping().u.join.realId; 
     360                                                                        baseFieldName = baseFieldIdStrm.str(); 
     361                                                                } 
     362                                                                 
     363                                                                string baseSchemaLink;  
     364                                                                if (baseSchema.Exists()) 
     365                                                                        baseSchemaLink = CWebUtil::GetRelativeURL(rootLevel, baseSchemaPage); 
    326366                                                                 
    327367                                                                Value baseFileNameVal(baseFieldName.c_str(), static_cast<SizeType>(baseFieldName.size()), alloc); 
  • branches/work_312/res/schema_page.js

    r512 r660  
    2222            if (first > 0) { div.append($("<br/>")); } 
    2323 
    24             div.append($("<a>").attr("href", schemaFieldList[row][pos + 1]).text(schemaFieldList[row][pos])); 
     24            if (schemaFieldList[row][pos+1]==="") 
     25              div.append($("<span class='fieldNotFound'>").text(schemaFieldList[row][pos])); 
     26            else 
     27              div.append($("<a>").attr("href", schemaFieldList[row][pos + 1]).text(schemaFieldList[row][pos])); 
    2528            div.appendText("\u00a0 -> \u00a0"); 
    2629            div.append($("<img>").attr("width", 16).attr("height", 16).attr("alt", "schema.gif").attr("src", "../../img/schema.gif")); 
    27             div.append($("<a>").attr("href", schemaFieldList[row][pos + 3]).text(schemaFieldList[row][pos + 2])); 
     30            if (schemaFieldList[row][pos+3]==="") 
     31              div.append($("<span>").text(schemaFieldList[row][pos+2])); 
     32            else 
     33              div.append($("<a>").attr("href", schemaFieldList[row][pos + 3]).text(schemaFieldList[row][pos + 2])); 
    2834 
    2935            first++; 
Note: See TracChangeset for help on using the changeset viewer.