Page MenuHomePhabricator

D9088.id21615.diff
No OneTemporary

D9088.id21615.diff

diff --git a/src/applications/auth/controller/config/PhabricatorAuthListController.php b/src/applications/auth/controller/config/PhabricatorAuthListController.php
--- a/src/applications/auth/controller/config/PhabricatorAuthListController.php
+++ b/src/applications/auth/controller/config/PhabricatorAuthListController.php
@@ -53,15 +53,15 @@
$item->setBarColor('green');
$item->addAction(
id(new PHUIListItemView())
- ->setIcon('delete')
+ ->setIcon('fa-times')
->setHref($disable_uri)
->addSigil('workflow'));
} else {
$item->setBarColor('grey');
- $item->addIcon('delete-grey', pht('Disabled'));
+ $item->addIcon('fa-times grey', pht('Disabled'));
$item->addAction(
id(new PHUIListItemView())
- ->setIcon('new')
+ ->setIcon('fa-plus')
->setHref($enable_uri)
->addSigil('workflow'));
}
diff --git a/src/applications/config/controller/PhabricatorConfigIssueListController.php b/src/applications/config/controller/PhabricatorConfigIssueListController.php
--- a/src/applications/config/controller/PhabricatorConfigIssueListController.php
+++ b/src/applications/config/controller/PhabricatorConfigIssueListController.php
@@ -58,7 +58,7 @@
$item->setBarColor('yellow');
$item->addAction(
id(new PHUIListItemView())
- ->setIcon('unpublish')
+ ->setIcon('fa-eye-slash')
->setWorkflow(true)
->setName(pht('Ignore'))
->setHref('/config/ignore/'.$issue->getIssueKey().'/'));
@@ -68,7 +68,7 @@
$item->setDisabled(true);
$item->addAction(
id(new PHUIListItemView())
- ->setIcon('preview')
+ ->setIcon('fa-eye')
->setWorkflow(true)
->setName(pht('Unignore'))
->setHref('/config/unignore/'.$issue->getIssueKey().'/'));
diff --git a/src/applications/daemon/controller/PhabricatorWorkerTaskDetailController.php b/src/applications/daemon/controller/PhabricatorWorkerTaskDetailController.php
--- a/src/applications/daemon/controller/PhabricatorWorkerTaskDetailController.php
+++ b/src/applications/daemon/controller/PhabricatorWorkerTaskDetailController.php
@@ -92,7 +92,7 @@
id(new PhabricatorActionView())
->setName(pht('Retry Task'))
->setHref($this->getApplicationURI('/task/'.$id.'/retry/'))
- ->setIcon('undo')
+ ->setIcon('fa-refresh')
->setWorkflow(true)
->setDisabled(!$can_retry));
} else {
@@ -100,7 +100,7 @@
id(new PhabricatorActionView())
->setName(pht('Cancel Task'))
->setHref($this->getApplicationURI('/task/'.$id.'/cancel/'))
- ->setIcon('delete')
+ ->setIcon('fa-times')
->setWorkflow(true));
}
@@ -111,7 +111,7 @@
id(new PhabricatorActionView())
->setName(pht('Free Lease'))
->setHref($this->getApplicationURI('/task/'.$id.'/release/'))
- ->setIcon('unlock')
+ ->setIcon('fa-unlock')
->setWorkflow(true)
->setDisabled(!$can_release));
diff --git a/src/applications/differential/landing/DifferentialLandingToGitHub.php b/src/applications/differential/landing/DifferentialLandingToGitHub.php
--- a/src/applications/differential/landing/DifferentialLandingToGitHub.php
+++ b/src/applications/differential/landing/DifferentialLandingToGitHub.php
@@ -70,7 +70,7 @@
}
return $this->createActionView($revision, pht('Land to GitHub'))
- ->setIcon('octocat');
+ ->setIcon('fa-cloud-upload');
}
public function pushWorkspaceRepository(
diff --git a/src/applications/diffusion/controller/DiffusionChangeController.php b/src/applications/diffusion/controller/DiffusionChangeController.php
--- a/src/applications/diffusion/controller/DiffusionChangeController.php
+++ b/src/applications/diffusion/controller/DiffusionChangeController.php
@@ -113,7 +113,7 @@
id(new PhabricatorActionView())
->setName(pht('View History'))
->setHref($history_uri)
- ->setIcon('history'));
+ ->setIcon('fa-clock-o'));
$browse_uri = $drequest->generateURI(
array(
@@ -124,7 +124,7 @@
id(new PhabricatorActionView())
->setName(pht('Browse Content'))
->setHref($browse_uri)
- ->setIcon('file'));
+ ->setIcon('fa-files-o'));
return $view;
}
diff --git a/src/applications/diffusion/controller/DiffusionHistoryController.php b/src/applications/diffusion/controller/DiffusionHistoryController.php
--- a/src/applications/diffusion/controller/DiffusionHistoryController.php
+++ b/src/applications/diffusion/controller/DiffusionHistoryController.php
@@ -113,7 +113,7 @@
id(new PhabricatorActionView())
->setName(pht('Browse Content'))
->setHref($browse_uri)
- ->setIcon('file'));
+ ->setIcon('fa-files-o'));
// TODO: Sometimes we do have a change view, we need to look at the most
// recent history entry to figure it out.
diff --git a/src/applications/diffusion/controller/DiffusionLintController.php b/src/applications/diffusion/controller/DiffusionLintController.php
--- a/src/applications/diffusion/controller/DiffusionLintController.php
+++ b/src/applications/diffusion/controller/DiffusionLintController.php
@@ -279,7 +279,7 @@
id(new PhabricatorActionView())
->setName(pht('View As List'))
->setHref($list_uri)
- ->setIcon('transcript'));
+ ->setIcon('fa-list'));
$history_uri = $drequest->generateURI(
array(
@@ -290,7 +290,7 @@
id(new PhabricatorActionView())
->setName(pht('View History'))
->setHref($history_uri)
- ->setIcon('history'));
+ ->setIcon('fa-clock-o'));
$browse_uri = $drequest->generateURI(
array(
@@ -301,7 +301,7 @@
id(new PhabricatorActionView())
->setName(pht('Browse Content'))
->setHref($browse_uri)
- ->setIcon('file'));
+ ->setIcon('fa-files-o'));
return $view;
}
diff --git a/src/applications/diffusion/controller/DiffusionRepositoryEditMainController.php b/src/applications/diffusion/controller/DiffusionRepositoryEditMainController.php
--- a/src/applications/diffusion/controller/DiffusionRepositoryEditMainController.php
+++ b/src/applications/diffusion/controller/DiffusionRepositoryEditMainController.php
@@ -1098,7 +1098,7 @@
$item->addAction(
id(new PHUIListItemView())
- ->setIcon('delete')
+ ->setIcon('fa-times')
->setHref($delete_uri)
->setWorkflow(true));
diff --git a/src/applications/drydock/controller/DrydockLeaseViewController.php b/src/applications/drydock/controller/DrydockLeaseViewController.php
--- a/src/applications/drydock/controller/DrydockLeaseViewController.php
+++ b/src/applications/drydock/controller/DrydockLeaseViewController.php
@@ -76,7 +76,7 @@
$view->addAction(
id(new PhabricatorActionView())
->setName(pht('Release Lease'))
- ->setIcon('delete')
+ ->setIcon('fa-times')
->setHref($this->getApplicationURI("/lease/{$id}/release/"))
->setWorkflow(true)
->setDisabled(!$can_release));
diff --git a/src/applications/drydock/controller/DrydockResourceViewController.php b/src/applications/drydock/controller/DrydockResourceViewController.php
--- a/src/applications/drydock/controller/DrydockResourceViewController.php
+++ b/src/applications/drydock/controller/DrydockResourceViewController.php
@@ -87,7 +87,7 @@
id(new PhabricatorActionView())
->setHref($uri)
->setName(pht('Close Resource'))
- ->setIcon('delete')
+ ->setIcon('fa-times')
->setWorkflow(true)
->setDisabled(!$can_close));
diff --git a/src/applications/files/controller/PhabricatorFileInfoController.php b/src/applications/files/controller/PhabricatorFileInfoController.php
--- a/src/applications/files/controller/PhabricatorFileInfoController.php
+++ b/src/applications/files/controller/PhabricatorFileInfoController.php
@@ -129,7 +129,7 @@
$view->addAction(
id(new PhabricatorActionView())
->setName(pht('View File'))
- ->setIcon('preview')
+ ->setIcon('fa-file-o')
->setHref($file->getViewURI()));
} else {
$view->addAction(
@@ -138,14 +138,14 @@
->setRenderAsForm(true)
->setDownload(true)
->setName(pht('Download File'))
- ->setIcon('download')
+ ->setIcon('fa-download')
->setHref($file->getViewURI()));
}
$view->addAction(
id(new PhabricatorActionView())
->setName(pht('Delete File'))
- ->setIcon('delete')
+ ->setIcon('fa-times')
->setHref($this->getApplicationURI("/delete/{$id}/"))
->setWorkflow(true));
diff --git a/src/applications/harbormaster/controller/HarbormasterBuildViewController.php b/src/applications/harbormaster/controller/HarbormasterBuildViewController.php
--- a/src/applications/harbormaster/controller/HarbormasterBuildViewController.php
+++ b/src/applications/harbormaster/controller/HarbormasterBuildViewController.php
@@ -246,7 +246,7 @@
$list->addAction(
id(new PhabricatorActionView())
->setName(pht('Restart Build'))
- ->setIcon('backward')
+ ->setIcon('fa-backward')
->setHref($this->getApplicationURI('/build/restart/'.$id.'/'))
->setDisabled(!$can_restart)
->setWorkflow(true));
@@ -254,7 +254,7 @@
$list->addAction(
id(new PhabricatorActionView())
->setName(pht('Stop Build'))
- ->setIcon('stop')
+ ->setIcon('fa-stop')
->setHref($this->getApplicationURI('/build/stop/'.$id.'/'))
->setDisabled(!$can_stop)
->setWorkflow(true));
@@ -262,7 +262,7 @@
$list->addAction(
id(new PhabricatorActionView())
->setName(pht('Resume Build'))
- ->setIcon('play')
+ ->setIcon('fa-play')
->setHref($this->getApplicationURI('/build/resume/'.$id.'/'))
->setDisabled(!$can_resume)
->setWorkflow(true));
diff --git a/src/applications/harbormaster/controller/HarbormasterBuildableViewController.php b/src/applications/harbormaster/controller/HarbormasterBuildableViewController.php
--- a/src/applications/harbormaster/controller/HarbormasterBuildableViewController.php
+++ b/src/applications/harbormaster/controller/HarbormasterBuildableViewController.php
@@ -101,7 +101,7 @@
$list->addAction(
id(new PhabricatorActionView())
- ->setIcon('backward')
+ ->setIcon('fa-backward')
->setName(pht('Restart All Builds'))
->setHref($this->getApplicationURI($restart_uri))
->setWorkflow(true)
@@ -109,7 +109,7 @@
$list->addAction(
id(new PhabricatorActionView())
- ->setIcon('stop')
+ ->setIcon('fa-stop')
->setName(pht('Stop All Builds'))
->setHref($this->getApplicationURI($stop_uri))
->setWorkflow(true)
@@ -117,7 +117,7 @@
$list->addAction(
id(new PhabricatorActionView())
- ->setIcon('play')
+ ->setIcon('fa-play')
->setName(pht('Resume All Builds'))
->setHref($this->getApplicationURI($resume_uri))
->setWorkflow(true)
@@ -197,11 +197,11 @@
$item->addAttribute(HarbormasterBuild::getBuildStatusName($status));
if ($build->isRestarting()) {
- $item->addIcon('backward', pht('Restarting'));
+ $item->addIcon('fa-backward', pht('Restarting'));
} else if ($build->isStopping()) {
- $item->addIcon('stop', pht('Stopping'));
+ $item->addIcon('fa-stop', pht('Stopping'));
} else if ($build->isResuming()) {
- $item->addIcon('play', pht('Resuming'));
+ $item->addIcon('fa-play', pht('Resuming'));
}
$build_id = $build->getID();
@@ -212,7 +212,7 @@
$item->addAction(
id(new PHUIListItemView())
- ->setIcon('backward')
+ ->setIcon('fa-backward')
->setName(pht('Restart'))
->setHref($this->getApplicationURI($restart_uri))
->setWorkflow(true)
@@ -221,14 +221,14 @@
if ($build->canResumeBuild()) {
$item->addAction(
id(new PHUIListItemView())
- ->setIcon('play')
+ ->setIcon('fa-play')
->setName(pht('Resume'))
->setHref($this->getApplicationURI($resume_uri))
->setWorkflow(true));
} else {
$item->addAction(
id(new PHUIListItemView())
- ->setIcon('stop')
+ ->setIcon('fa-stop')
->setName(pht('Stop'))
->setHref($this->getApplicationURI($stop_uri))
->setWorkflow(true)
diff --git a/src/applications/herald/query/HeraldRuleSearchEngine.php b/src/applications/herald/query/HeraldRuleSearchEngine.php
--- a/src/applications/herald/query/HeraldRuleSearchEngine.php
+++ b/src/applications/herald/query/HeraldRuleSearchEngine.php
@@ -184,24 +184,24 @@
->setHref($this->getApplicationURI("rule/{$id}/"));
if ($rule->isPersonalRule()) {
- $item->addIcon('user', pht('Personal Rule'));
+ $item->addIcon('fa-user', pht('Personal Rule'));
$item->addByline(
pht(
'Authored by %s',
$handles[$rule->getAuthorPHID()]->renderLink()));
} else {
- $item->addIcon('world', pht('Global Rule'));
+ $item->addIcon('fa-globe', pht('Global Rule'));
}
if ($rule->getIsDisabled()) {
$item->setDisabled(true);
- $item->addIcon('disable-grey', pht('Disabled'));
+ $item->addIcon('fa-lock grey', pht('Disabled'));
}
$item->addAction(
id(new PHUIListItemView())
->setHref($this->getApplicationURI("history/{$id}/"))
- ->setIcon('transcript')
+ ->setIcon('fa-file-text-o')
->setName(pht('Edit Log')));
$content_type_name = idx($content_type_map, $rule->getContentType());
diff --git a/src/applications/phame/controller/post/PhamePostViewController.php b/src/applications/phame/controller/post/PhamePostViewController.php
--- a/src/applications/phame/controller/post/PhamePostViewController.php
+++ b/src/applications/phame/controller/post/PhamePostViewController.php
@@ -119,13 +119,13 @@
if ($post->isDraft()) {
$actions->addAction(
id(new PhabricatorActionView())
- ->setIcon('preview')
+ ->setIcon('fa-eye')
->setHref($this->getApplicationURI('post/publish/'.$id.'/'))
->setName(pht('Preview / Publish')));
} else {
$actions->addAction(
id(new PhabricatorActionView())
- ->setIcon('unpublish')
+ ->setIcon('fa-eye-slash')
->setHref($this->getApplicationURI('post/unpublish/'.$id.'/'))
->setName(pht('Unpublish'))
->setWorkflow(true));
@@ -133,7 +133,7 @@
$actions->addAction(
id(new PhabricatorActionView())
- ->setIcon('delete')
+ ->setIcon('fa-times')
->setHref($this->getApplicationURI('post/delete/'.$id.'/'))
->setName(pht('Delete Post'))
->setDisabled(!$can_edit)
@@ -152,7 +152,7 @@
$actions->addAction(
id(new PhabricatorActionView())
->setUser($user)
- ->setIcon('world')
+ ->setIcon('fa-globe')
->setHref($live_uri)
->setName(pht('View Live'))
->setDisabled(!$can_view_live)
diff --git a/src/applications/phragment/controller/PhragmentHistoryController.php b/src/applications/phragment/controller/PhragmentHistoryController.php
--- a/src/applications/phragment/controller/PhragmentHistoryController.php
+++ b/src/applications/phragment/controller/PhragmentHistoryController.php
@@ -72,7 +72,7 @@
if (!$first && $can_edit) {
$item->addAction(id(new PHUIListItemView())
- ->setIcon('undo')
+ ->setIcon('fa-refresh')
->setRenderNameAsTooltip(true)
->setWorkflow(true)
->setName(pht("Revert to Here"))
@@ -82,7 +82,7 @@
$disabled = !isset($files[$version->getFilePHID()]);
$action = id(new PHUIListItemView())
- ->setIcon('download')
+ ->setIcon('fa-download')
->setDisabled($disabled || !$this->isCorrectlyConfigured())
->setRenderNameAsTooltip(true)
->setName(pht("Download"));
diff --git a/src/applications/phragment/controller/PhragmentSnapshotViewController.php b/src/applications/phragment/controller/PhragmentSnapshotViewController.php
--- a/src/applications/phragment/controller/PhragmentSnapshotViewController.php
+++ b/src/applications/phragment/controller/PhragmentSnapshotViewController.php
@@ -117,7 +117,7 @@
->setName(pht('Download Snapshot as ZIP'))
->setHref($this->isCorrectlyConfigured() ? $zip_uri : null)
->setDisabled(!$this->isCorrectlyConfigured())
- ->setIcon('zip'));
+ ->setIcon('fa-floppy-o'));
$actions->addAction(
id(new PhabricatorActionView())
->setName(pht('Delete Snapshot'))
@@ -125,7 +125,7 @@
"snapshot/delete/".$snapshot->getID()."/"))
->setDisabled(!$can_edit)
->setWorkflow(true)
- ->setIcon('delete'));
+ ->setIcon('fa-times'));
$actions->addAction(
id(new PhabricatorActionView())
->setName(pht('Promote Another Snapshot to Here'))
@@ -133,7 +133,7 @@
"snapshot/promote/".$snapshot->getID()."/"))
->setDisabled(!$can_edit)
->setWorkflow(true)
- ->setIcon('promote'));
+ ->setIcon('fa-arrow-up'));
$properties = id(new PHUIPropertyListView())
->setUser($viewer)
diff --git a/src/applications/phragment/controller/PhragmentVersionController.php b/src/applications/phragment/controller/PhragmentVersionController.php
--- a/src/applications/phragment/controller/PhragmentVersionController.php
+++ b/src/applications/phragment/controller/PhragmentVersionController.php
@@ -63,7 +63,7 @@
->setName(pht('Download Version'))
->setDisabled($file === null || !$this->isCorrectlyConfigured())
->setHref($this->isCorrectlyConfigured() ? $file_uri : null)
- ->setIcon('download'));
+ ->setIcon('fa-download'));
$properties = id(new PHUIPropertyListView())
->setUser($viewer)
@@ -113,7 +113,7 @@
$patch_uri = $this->getApplicationURI(
'patch/'.$previous_version->getID().'/'.$version->getID());
$item->addAction(id(new PHUIListItemView())
- ->setIcon('patch')
+ ->setIcon('fa-file-o')
->setName(pht("Get Patch"))
->setHref($this->isCorrectlyConfigured() ? $patch_uri : null)
->setDisabled(!$this->isCorrectlyConfigured()));
@@ -124,7 +124,7 @@
$item->setHeader('Prior to Version 0');
$item->addAttribute('Prior to any content (empty file)');
$item->addAction(id(new PHUIListItemView())
- ->setIcon('patch')
+ ->setIcon('fa-file-o')
->setName(pht("Get Patch"))
->setHref($this->getApplicationURI(
'patch/x/'.$version->getID())));
diff --git a/src/applications/phrequent/query/PhrequentSearchEngine.php b/src/applications/phrequent/query/PhrequentSearchEngine.php
--- a/src/applications/phrequent/query/PhrequentSearchEngine.php
+++ b/src/applications/phrequent/query/PhrequentSearchEngine.php
@@ -182,7 +182,7 @@
$usertime->getUserPHID() === $viewer->getPHID()) {
$item->addAction(
id(new PHUIListItemView())
- ->setIcon('history')
+ ->setIcon('fa-time-o')
->addSigil('phrequent-stop-tracking')
->setWorkflow(true)
->setRenderNameAsTooltip(true)
diff --git a/src/applications/settings/panel/PhabricatorSettingsPanelExternalAccounts.php b/src/applications/settings/panel/PhabricatorSettingsPanelExternalAccounts.php
--- a/src/applications/settings/panel/PhabricatorSettingsPanelExternalAccounts.php
+++ b/src/applications/settings/panel/PhabricatorSettingsPanelExternalAccounts.php
@@ -76,13 +76,13 @@
if ($can_refresh) {
$item->addAction(
id(new PHUIListItemView())
- ->setIcon('refresh')
+ ->setIcon('fa-refresh')
->setHref('/auth/refresh/'.$account->getProviderKey().'/'));
}
$item->addAction(
id(new PHUIListItemView())
- ->setIcon('delete')
+ ->setIcon('fa-times')
->setWorkflow(true)
->setDisabled(!$can_unlink)
->setHref('/auth/unlink/'.$account->getProviderKey().'/'));
@@ -124,7 +124,7 @@
$item->setHref($link_uri);
$item->addAction(
id(new PHUIListItemView())
- ->setIcon('link')
+ ->setIcon('fa-link')
->setHref($link_uri));
$linkable->addItem($item);
diff --git a/src/applications/uiexample/examples/PHUITimelineExample.php b/src/applications/uiexample/examples/PHUITimelineExample.php
--- a/src/applications/uiexample/examples/PHUITimelineExample.php
+++ b/src/applications/uiexample/examples/PHUITimelineExample.php
@@ -29,57 +29,57 @@
$events[] = id(new PHUITimelineEventView())
->setUserHandle($handle)
- ->setIcon('love')
+ ->setIcon('fa-heart')
->setTitle('A minor event.');
$events[] = id(new PHUITimelineEventView())
->setUserHandle($handle)
- ->setIcon('comment')
+ ->setIcon('fa-comment')
->appendChild('A major event with no title.');
$events[] = id(new PHUITimelineEventView())
->setUserHandle($handle)
- ->setIcon('dislike')
+ ->setIcon('fa-star')
->setTitle('Another minor event.');
$events[] = id(new PHUITimelineEventView())
- ->setIcon('like')
+ ->setIcon('fa-trophy')
->setToken('medal-1')
->setUserHandle($handle);
$events[] = id(new PHUITimelineEventView())
- ->setIcon('dislike')
+ ->setIcon('fa-quote-left')
->setToken('medal-1', true)
->setUserHandle($handle);
$events[] = id(new PHUITimelineEventView())
->setUserHandle($handle)
->setTitle('Major Red Event')
- ->setIcon('love')
+ ->setIcon('fa-heart-o')
->appendChild('This event is red!')
->setColor(PhabricatorTransactions::COLOR_RED);
$events[] = id(new PHUITimelineEventView())
->setUserHandle($handle)
- ->setIcon('love')
+ ->setIcon('fa-female')
->setTitle('Minor Red Event')
->setColor(PhabricatorTransactions::COLOR_RED);
$events[] = id(new PHUITimelineEventView())
- ->setIcon('like')
+ ->setIcon('fa-refresh')
->setUserHandle($handle)
->setTitle('Minor Not-Red Event')
->setColor(PhabricatorTransactions::COLOR_GREEN);
$events[] = id(new PHUITimelineEventView())
->setUserHandle($handle)
- ->setIcon('love')
+ ->setIcon('fa-calendar-o')
->setTitle('Minor Red Event')
->setColor(PhabricatorTransactions::COLOR_RED);
$events[] = id(new PHUITimelineEventView())
->setUserHandle($handle)
- ->setIcon('dislike')
+ ->setIcon('fa-random')
->setTitle('Minor Not-Red Event')
->setColor(PhabricatorTransactions::COLOR_BLACK);
diff --git a/src/infrastructure/customfield/config/PhabricatorCustomFieldConfigOptionType.php b/src/infrastructure/customfield/config/PhabricatorCustomFieldConfigOptionType.php
--- a/src/infrastructure/customfield/config/PhabricatorCustomFieldConfigOptionType.php
+++ b/src/infrastructure/customfield/config/PhabricatorCustomFieldConfigOptionType.php
@@ -83,21 +83,21 @@
id(new PHUIListItemView())
->setHref('#')
->addSigil('field-spec-toggle')
- ->setIcon('new'));
+ ->setIcon('fa-plus'));
$enabled_item->setBarColor('green');
if (!$field->canDisableField()) {
$enabled_item->addAction(
id(new PHUIListItemView())
- ->setIcon('lock-grey'));
+ ->setIcon('fa-lock grey'));
$enabled_item->addIcon('none', pht('Permanent Field'));
} else {
$enabled_item->addAction(
id(new PHUIListItemView())
->setHref('#')
->addSigil('field-spec-toggle')
- ->setIcon('delete'));
+ ->setIcon('fa-times'));
}
$fields[$key] = array(

File Metadata

Mime Type
text/plain
Expires
Mon, Oct 21, 1:50 AM (3 w, 2 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6723745
Default Alt Text
D9088.id21615.diff (24 KB)

Event Timeline