// bind template to controller Frame: LSWSkyrixFrame {} Window: LSWWindowFrame { title = labels.jobViewerWindowTitle; onClose = session.navigation.leavePage; } Title: LSWViewerTitle { title = job.name; } TabView: SkyTabView { selection = tabKey; } JobHistoryTab: SkySimpleTabItem { key = "jobHistoryList"; label = labels.jobHistoryList; } LogTab: SkySimpleTabItem { key = "log"; label = labels.logsTitle; } AttributeCell: WOGenericContainer { elementName = "td"; align = "right"; // hh: not top aligned? bgcolor = config.colors_attributeCell; width = "15%"; } ValueCell: SkyValueCell {} ProjectLabel: WOString { value = labels.projectLabel; } Project: WOHyperlink { action = viewProject; string = project.name; } CurrentJobConditionElse: WOConditional { condition = isCurrentJob; negate = YES; } CurrentJobCondition: WOConditional { condition = isCurrentJob; } JobLink: WOHyperlink { string = item.name; action = viewJob; } ProjectString: WOString { value = project.name; } JobLabel: WOString { value = labels.jobLabel; } CreatorLabel: WOString { value = labels.creatorLabel; } ExecutantLabel: WOString { value = labels.executantLabel; } JobName: WOString { value = job.name; } CreatorVisibleCond: WOConditional { condition = creatorIsVisible; } CreatorVisibleCondElse: WOConditional { condition = creatorIsVisible; negate = YES; } CreatorName: SkyObjectValue { value = creatorName; object = job.creator; action = viewCreator; bold = userIsCreator; } ExecutantVisibleCond: WOConditional { condition = executantIsVisible; } ExecutantVisibleCondElse: WOConditional { condition = executantIsVisible; negate = YES; } ExecutantName: SkyObjectValue { value = executantName; object = job.executant; action = viewExecutant; bold = userIsExecutant; } ExecutantTeamName: SkyObjectValue { value = job.executant.description; object = job.executant; action = viewExecutant; } IsTeamJob: WOConditional { condition = job.isTeamJob; } IsTeamJobElse: WOConditional { condition = job.isTeamJob; negate = YES; } StartDateLabel: WOString { value = labels.startDateLabel; } EndDateLabel: WOString { value = labels.endDateLabel; } StartDate: WOString { value = job.startDate; formatter = session.formatDate; } EndDate: WOString { value = job.endDate; formatter = session.formatDate; } OnTimeCondition: WOConditional { condition = endDateOnTime; } OnTimeConditionElse: WOConditional { condition = endDateOnTime; negate = YES; } OutOffTimeFont: WOGenericContainer { elementName = "font"; color = config.font_alertColor; } CategoryLabel: WOString { value = labels.categoryLabel; } KeywordsLabel: WOString { value = labels.keywords; } PriorityLabel: WOString { value = labels.priorityLabel; } Category: WOString { value = job.category; } Keywords: WOString { value = job.keywords; } Priority: WOString { value = priority; } JobHistoryList: LSWTableView { labels = labels; title = labels.jobHistoryTitle; start = start; label = labels.jobHistoryLabel; list = job.jobHistory; item = jobHistory; selectedAttribute = selectedAttribute; blockSize = 12; sorter = session.eoSorter; dateFormatter = session.formatDateTime; isDescending = isDescending; attributes = ( { key = "actionDate"; labelKey = "date"; sort = YES; }, { key = "jobStatus"; labelKey = "jobStatus"; sort = NO; image = { "00_created" = "led_red.gif"; "02_rejected" = "led_red.gif"; "20_processing" = "led_yellow.gif"; "25_done" = "led_green.gif"; "30_archived" = "led_dark.gif"; }; alt = "jobStatus"; isAltLocalized = YES; }, { key = "actor"; relKey = "login"; labelKey = "actor"; sort = NO; changeFontColorCondition = isActorArchived; electFontColor = "colors_deleted_object"; fontColor = "font_color"; }, { key = "action"; labelKey = "action"; sort = NO; isLocalized = YES; }, { key = "toJobHistoryInfo"; labelKey = "Comment"; relKey = "comment"; label = "comment"; sort = NO; }); } Form: WOForm {} AnnotationLabel: WOString { value = labels.annotationLabel; } AnnotationText: WOText { value = comment; rows = 30; cols = 80; } AnnotationSubmit: WOImageButton { action = saveJobHistory; filename = "annotation.gif"; disabledFilename = "annotation_inactive.gif"; border = "0"; } ForbidProjectLink: WOConditional { condition = forbidViewProject; } EnableProjectLink: WOConditional { condition = forbidViewProject; negate = YES; } IsRejectEnabled: WOConditional { condition = isRejectEnabled; } RejectLink: WOHyperlink { action = rejectJob; filename = "reject.gif"; alt = labels.reject; border = "0"; align = "top"; } Font: SkyConfigFont {} EditFont: SkyConfigEditFont {} Buttons: SkyButtonRow { ordering = ( start, stop, clear, accept, done, archive, reject, annotation, delete, assignproject, detachproject ); hasDelete = enableDelete; onDelete = deleteJob; hasAccept = enableAccept; onAccept = acceptJob; hasDone = enableDone; onDone = doneJob; hasArchive = enableArchive; onArchive = archiveJob; hasReject = isRejectEnabled; onReject = rejectJob; hasAnnotation = isAnnotateEnabled; onAnnotation = annotateJob; onClip = placeInClipboard; onMail = mailObject; hasEdit = enableEdit; onEdit = edit; hasStart = hasNoRunningTimer; onStart = startTimer; hasStop = hasRunningTimer; onStop = stopTimer; hasClear = hasRunningTimer; onClear = clearTimer; hasAssignproject = canAssignProject; hasDetachproject = canDetachProject; onAssignproject = assignProject; onDetachproject = detachProject; start = labels.startTimer; stop = labels.stopTimer; clear = labels.clearTimer; accept = labels.accept2; done = labels.done2; archive = labels.archive2; reject = labels.reject2; annotation = labels.annotation; clip = labels.clip; mail = labels.mail; edit = labels.edit; delete = labels.delete; assignproject = labels.assignProject; detachproject = labels.detachProject; } LogList: SkyObjectLogList { object = job; } IsLogTabEnabled: WOConditional { condition = isLogTabEnabled; } IsLinkTabEnabled: WOConditional { condition = isLinkTabEnabled; } LinkTab: SkySimpleTabItem { key = "links"; label = labels.jobviewer_tab_links; } RelatedLinks: OGoObjectLinkList { object = job; } IsInConfigMode: WOConditional { condition = viewerConfigMode; } IsNotInConfigMode: WOConditional { condition = viewerConfigMode; negate = YES; } ViewerConfig: SkyPersonalViewerConfig { object = object; viewerPattern = currentPattern; checkedItems = patternValues; isInConfigMode = viewerConfigMode; } AttributesTab: SkySimpleTabItem { key = "attributes"; label = labels.attributesTab; isScript = YES; } PersonalAttributes: SkyPersonalAttributesViewer { object = job; } TimerImage: WOImage { filename = "led_animated.gif"; alt = labels.timer; border = "0"; align = "absmiddle"; } HasProject: WOConditional { condition = hasProject; } HasRunningTimer: WOConditional { condition = hasRunningTimer; } HasReferredPerson: WOConditional { condition = hasReferredPerson; } HasPrefExec: WOConditional { condition = hasPrefExec; } TimerLabel: WOString { value = labels.timer; } TimerValue: WOString { value = timerValue; } ReferredPersonLabel: WOString { value = labels.referredPerson; } RefPersonLink: WOString { value = referredPersonLink; } RefPersonLabel: WOString { value = referredPersonLabel; } PrefExecLabel: WOString { value = labels.preferredExecutants; } PrefExcString: WOString { value = prefExec; } /* comment quick create */ CanComment: WOConditional { condition = isAnnotateEnabled; } CommentCollapsible: SkyCollapsibleContent { title = labels.annotation; visibility = session.userDefaults.jobui_history_expand_quickcreate; } CommentQuickCreateForm: WOForm { action = quickCreateComment; } CommentTextArea: WOText { value = newComment; rows = 3; style = "width: 100%;"; } CommentSubmit: WOSubmitButton { action = quickCreateComment; value = labels.new; } CreateCommentTitle: WOString { value = labels.commentQuickCreateTitle; }