NewsBlur iOS: #1238 (statistics)

- Added a Statistics item to the feed detail menu (please provide an icon).
- This command will show the statistics web page in a popover on iPad, or pushed on iPhone.
- Extended the “original” view controller to support showing a custom page without changing the title or including the navigation bar buttons.
This commit is contained in:
David Sinclair 2020-01-28 16:10:16 -08:00
parent a50bb09141
commit fa3f60a531
6 changed files with 76 additions and 43 deletions

View file

@ -2502,8 +2502,9 @@ didEndSwipingSwipingWithState:(MCSwipeTableViewCellState)state
- (void)openStatisticsWithFeed:(NSString *)feedId {
NSString *urlString = [NSString stringWithFormat:@"%@/rss_feeds/statistics_embedded/%@", appDelegate.url, feedId];
NSURL *url = [NSURL URLWithString:urlString];
NSString *title = appDelegate.storiesCollection.activeFeed[@"feed_title"];
[appDelegate showSafariViewControllerWithURL:url useReader:NO];
[appDelegate showInAppBrowser:url withCustomTitle:title fromBarButtonItem:settingsBarButton];
}
- (void)openRenameSite {

View file

@ -357,6 +357,7 @@ SFSafariViewControllerDelegate> {
- (void)reloadFeedsView:(BOOL)showLoader;
- (void)setTitle:(NSString *)title;
- (void)showOriginalStory:(NSURL *)url;
- (void)showInAppBrowser:(NSURL *)url withCustomTitle:(NSString *)customTitle fromBarButtonItem:(UIBarButtonItem *)barButtonItem;
- (void)showSafariViewControllerWithURL:(NSURL *)url useReader:(BOOL)useReader;
- (void)closeOriginalStory;
- (void)hideStoryDetailView;

View file

@ -2066,24 +2066,35 @@
} else if ([storyBrowser isEqualToString:@"inappsafarireader"]) {
[self showSafariViewControllerWithURL:url useReader:YES];
} else {
if (!originalStoryViewController) {
originalStoryViewController = [[OriginalStoryViewController alloc] init];
}
self.activeOriginalStoryURL = url;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
[self.masterContainerViewController transitionToOriginalView];
} else {
if ([[navigationController viewControllers]
containsObject:originalStoryViewController]) {
return;
}
[navigationController pushViewController:originalStoryViewController
animated:YES];
[self showInAppBrowser:url withCustomTitle:nil fromBarButtonItem:nil];
}
}
- (void)showInAppBrowser:(NSURL *)url withCustomTitle:(NSString *)customTitle fromBarButtonItem:(UIBarButtonItem *)barButtonItem {
if (!originalStoryViewController) {
originalStoryViewController = [[OriginalStoryViewController alloc] init];
}
self.activeOriginalStoryURL = url;
originalStoryViewController.customPageTitle = customTitle;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
if (barButtonItem) {
[originalStoryViewController view]; // Force viewDidLoad
[originalStoryViewController loadInitialStory];
[self showPopoverWithViewController:originalStoryViewController contentSize:CGSizeMake(600.0, 1000.0) barButtonItem:barButtonItem];
} else {
[self.masterContainerViewController transitionToOriginalView];
}
} else {
if ([[navigationController viewControllers]
containsObject:originalStoryViewController]) {
return;
}
[navigationController pushViewController:originalStoryViewController
animated:YES];
[originalStoryViewController view]; // Force viewDidLoad
[originalStoryViewController loadInitialStory];
}
}

View file

@ -34,6 +34,7 @@ UIGestureRecognizerDelegate> {
@property (nonatomic) IBOutlet WKWebView *webView;
//@property (strong, nonatomic) SloppySwiper *swiper;
@property (nonatomic) NJKWebViewProgressView *progressView;
@property (nonatomic, strong) NSString *customPageTitle;
- (void)resetProgressBar;
- (void)loadInitialStory;

View file

@ -32,20 +32,6 @@
self.view.layer.shadowOpacity = 0.5;
self.view.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.view.bounds].CGPath;
UIImage *separatorImage = [UIImage imageNamed:@"bar-separator.png"];
if ([ThemeManager themeManager].isDarkTheme) {
separatorImage = [UIImage imageNamed:@"bar_separator_dark"];
}
UIBarButtonItem *separatorBarButton = [UIBarButtonItem barItemWithImage:separatorImage
target:nil
action:nil];
[separatorBarButton setEnabled:NO];
UIBarButtonItem *sendToBarButton = [UIBarButtonItem
barItemWithImage:[UIImage imageNamed:@"barbutton_sendto"]
target:self
action:@selector(doOpenActionSheet:)];
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
closeButton = [UIBarButtonItem barItemWithImage:[UIImage imageNamed:@"ios7_back_button"]
target:self
@ -53,12 +39,6 @@
self.navigationItem.leftBarButtonItem = closeButton;
}
backBarButton = [UIBarButtonItem
barItemWithImage:[UIImage imageNamed:@"barbutton_back"]
target:self
action:@selector(webViewGoBack:)];
backBarButton.enabled = NO;
titleView = [[UILabel alloc] init];
titleView.textColor = UIColorFromRGB(0x303030);
titleView.font = [UIFont fontWithName:@"Helvetica-Bold" size:14.0];
@ -67,11 +47,6 @@
titleView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
self.navigationItem.titleView = titleView;
self.navigationItem.rightBarButtonItems = @[sendToBarButton,
separatorBarButton,
backBarButton
];
webView = [[WKWebView alloc] initWithFrame:self.view.frame];
[webView sizeToFit];
webView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
@ -207,6 +182,9 @@
}
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
if (self.customPageTitle != nil) {
return NO;
}
CGPoint velocity = CGPointMake(0, 0);
if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) {
velocity = [(UIPanGestureRecognizer *)gestureRecognizer velocityInView:self.view];
@ -285,10 +263,44 @@
}
}
- (void)updateBarItems {
if (self.customPageTitle != nil) {
self.navigationItem.rightBarButtonItems = nil;
} else {
UIBarButtonItem *sendToBarButton = [UIBarButtonItem
barItemWithImage:[UIImage imageNamed:@"barbutton_sendto"]
target:self
action:@selector(doOpenActionSheet:)];
UIImage *separatorImage = [UIImage imageNamed:@"bar-separator.png"];
if ([ThemeManager themeManager].isDarkTheme) {
separatorImage = [UIImage imageNamed:@"bar_separator_dark"];
}
UIBarButtonItem *separatorBarButton = [UIBarButtonItem barItemWithImage:separatorImage
target:nil
action:nil];
[separatorBarButton setEnabled:NO];
backBarButton = [UIBarButtonItem
barItemWithImage:[UIImage imageNamed:@"barbutton_back"]
target:self
action:@selector(webViewGoBack:)];
backBarButton.enabled = NO;
self.navigationItem.rightBarButtonItems = @[sendToBarButton,
separatorBarButton,
backBarButton
];
}
}
- (void)loadInitialStory {
finishedLoading = NO;
activeUrl = nil;
[self updateBarItems];
[MBProgressHUD hideHUDForView:self.webView animated:YES];
MBProgressHUD *HUD = [MBProgressHUD showHUDAddedTo:self.webView animated:YES];
HUD.labelText = @"On its way...";
@ -366,8 +378,13 @@
- (void)updateTitle:(WKWebView*)aWebView
{
NSString *pageTitleValue = webView.title;
titleView.text = [pageTitleValue stringByDecodingHTMLEntities];
if (self.customPageTitle != nil) {
titleView.text = self.customPageTitle;
} else {
NSString *pageTitleValue = webView.title;
titleView.text = [pageTitleValue stringByDecodingHTMLEntities];
}
[titleView sizeToFit];
}

View file

@ -98,6 +98,8 @@
</array>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>LSSupportsOpeningDocumentsInPlace</key>
<false/>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>