Пример #1
0
        async Task LoadSource(string content, string filename, bool isMarkdown)
        {
            var fontSize = (int)UIFont.PreferredSubheadline.PointSize;

            if (isMarkdown)
            {
                var markdownContent = await _applicationService.Client.Markdown.GetMarkdown(content);

                var model       = new MarkdownModel(markdownContent, fontSize);
                var htmlContent = new MarkdownWebView {
                    Model = model
                };
                LoadContent(htmlContent.GenerateString());
            }
            else
            {
                var zoom        = UIDevice.CurrentDevice.UserInterfaceIdiom != UIUserInterfaceIdiom.Phone;
                var theme       = _applicationService.Account.CodeEditTheme;
                var model       = new SyntaxHighlighterModel(content, theme, fontSize, zoom, file: filename);
                var contentView = new SyntaxHighlighterWebView {
                    Model = model
                };
                LoadContent(contentView.GenerateString());
            }
        }
Пример #2
0
        async Task LoadSource(Uri fileUri)
        {
            var fontSize = (int)UIFont.PreferredSubheadline.PointSize;
            var content  = System.IO.File.ReadAllText(fileUri.LocalPath, System.Text.Encoding.UTF8);

            if (ViewModel.IsMarkdown)
            {
                var markdownContent = await Mvx.Resolve <IApplicationService>().Client.Markdown.GetMarkdown(content);

                var model       = new MarkdownModel(markdownContent, fontSize);
                var htmlContent = new MarkdownWebView {
                    Model = model
                };
                LoadContent(htmlContent.GenerateString());
            }
            else
            {
                var zoom        = UIDevice.CurrentDevice.UserInterfaceIdiom != UIUserInterfaceIdiom.Phone;
                var model       = new SyntaxHighlighterModel(content, "idea", fontSize, zoom, fileUri.LocalPath);
                var contentView = new SyntaxHighlighterWebView {
                    Model = model
                };
                LoadContent(contentView.GenerateString());
            }
        }
Пример #3
0
        void SegmentValueChanged()
        {
            if (_viewSegment.SelectedSegment == 0)
            {
                if (_previewView != null)
                {
                    _previewView.RemoveFromSuperview();
                    _previewView.Dispose();
                    _previewView = null;
                }

                Add(TextView);
                TextView.BecomeFirstResponder();
            }
            else
            {
                if (_previewView == null)
                {
                    _previewView = new WKWebView(this.View.Bounds, new WKWebViewConfiguration());
                }

                TextView.RemoveFromSuperview();
                Add(_previewView);

                var markdownService = Mvx.Resolve <IMarkdownService>();
                var markdownText = markdownService.Convert(Text);
                var model = new MarkdownModel(markdownText, (int)UIFont.PreferredSubheadline.PointSize);
                var view = new MarkdownWebView {
                    Model = model
                }.GenerateString();
                _previewView.LoadHtmlString(view, NSBundle.MainBundle.BundleUrl);
            }
        }
Пример #4
0
        private async Task <string> ConvertToWebView(Octokit.Readme readme)
        {
            var content = await _markdownService.Convert(readme.Content);

            var model = new MarkdownModel(content, (int)UIFont.PreferredSubheadline.PointSize);

            return(new MarkdownWebView {
                Model = model
            }.GenerateString());
        }
        private async Task LoadPreview(WKWebView previewView)
        {
            var markdownText = await _markdownService.Convert(Text);

            var model = new MarkdownModel(markdownText, (int)UIFont.PreferredSubheadline.PointSize);
            var view = new MarkdownWebView {
                Model = model
            }.GenerateString();

            previewView.LoadHtmlString(view, NSBundle.MainBundle.BundleUrl);
        }
Пример #6
0
        public async Task <ActionResult> Page(string page)
        {
            var markdown = await _markdownRenderer.RenderMarkdownFromFile(page);

            var model = new MarkdownModel();

            model.Title    = markdown.Yaml?.Title;
            model.Markdown = markdown.Html;

            return(View(model));
        }
Пример #7
0
 public IActionResult Markdown(MarkdownModel model)
 {
     if (!ModelState.IsValid)
     {
         return(BadRequest(ModelState));
     }
     else
     {
         model.MarkdownHtml = CommonMarkConverter.Convert(model.MarkdownText);
         return(View(model));
     }
 }
        private MarkdownModel GetModel()
        {
            var model = new MarkdownModel();

            if (!this.IsEmpty)
            {
                model.Markdown = this.GetHtml();
            }

            model.UseWrapper = this.UseWrapper;
            return(model);
        }
Пример #9
0
        public void DingDingMarkdown()
        {
            var list = new List <DingDingMsgModel>()
            {
                new DingDingMsgModel()
                {
                    msgtype = ""
                },
                new DingDingMsgModel()
                {
                    msgtype = null
                }
            };

            var l    = list.Where(t => t.msgtype.Contains("")).ToList();
            var url  = "https://oapi.dingtalk.com/robot/send?access_token=5f534e705e8965260dbae62e29c9abc7b5bdb9ff5c43af1914426ac2d8516d81";
            var oper = "1001";
            var com  = "01";
            var mo   = new MarkdownModel()
            {
                msgtype = "markdown",
                //markdown = new Markdown()
                //{
                //    text = $@"<font color=#FF0000 size=11 face='黑体'>事故系统[TMS] </font>
                //    <font color=black size=6 >**发生时间:** {DateTime.Now} </font>
                //    <font color=black size=6 >**涉及页面:** 录入  </font>
                //    <font color=black size=6 >**操作人:** {oper}  </font>
                //    <font color=black size=6 >**操作仓:** {com}   </font>
                //    <font color=black size=6 >**问题:** 就是有问题  </font>",
                //    title = "收到TMS错误信息",
                //},
                markdown = new Markdown()
                {
                    text  = $@"<font color=#FF0000 size=11 face='黑体'>事故系统[TMS]</font>    
**发生时间:** {DateTime.Now}    
**涉及页面:** 录入    
**操作仓:** {com}   
**操作人:** {oper}   
**问题:** 就是有问题",
                    title = "收到TMS错误信息",
                },
                at = new At()
                {
                    atMobiles = new[] { "" },
                    isAtAll   = false
                },
            };
            string response = HttpPostConnectToServer(url, mo.ToJsonString());

            Console.WriteLine(response);
        }
        public ViewModelLocator()
        {
            _Model = new MarkdownModel();

            if (DesignMode)
            {
            }
            else
            {
                using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(MARKDOWN))
                    using (StreamReader reader = new StreamReader(stream))
                    {
                        _Model.Markdown = reader.ReadToEnd();
                    }
            }
        }
Пример #11
0
        public async Task <IActionResult> Markdown(
            string target, int pid, MarkdownModel model)
        {
            if (!IProblemStore.MarkdownFiles.Contains(target))
            {
                return(NotFound());
            }
            if (target != model.Target || $"p{pid}" != model.BackingStore)
            {
                return(BadRequest());
            }
            await Problems.WriteFileAsync(Problem, $"{target}.md", model.Markdown ?? string.Empty);

            StatusMessage = "Description saved.";
            return(RedirectToAction());
        }
Пример #12
0
        public async Task <IActionResult> Markdown(
            string target, int pid, MarkdownModel model)
        {
            if (!AcceptableTarget.Contains(target))
            {
                return(NotFound());
            }
            var backstore = "p" + pid;

            if (target != model.Target || backstore != model.BackingStore)
            {
                return(BadRequest());
            }
            await IoContext.WritePartAsync(backstore, target + ".md", model.Markdown);

            return(View(model));
        }
        private MarkdownModel ParseMarkdownToModel(string markdown, MarkdownProcessingFolder folderConfig = null)
        {
            var model = new MarkdownModel();

            if (folderConfig == null)
            {
                folderConfig = new MarkdownProcessingFolder();
            }

            if (folderConfig.ExtractTitle)
            {
                var firstLines     = StringUtils.GetLines(markdown, 30);
                var firstLinesText = String.Join("\n", firstLines);

                // Assume YAML
                if (markdown.StartsWith("---"))
                {
                    var yaml = StringUtils.ExtractString(firstLinesText, "---", "---", returnDelimiters: true);
                    if (yaml != null)
                    {
                        model.Title      = StringUtils.ExtractString(yaml, "title: ", "\n");
                        model.YamlHeader = yaml.Replace("---", "").Trim();
                    }
                }

                if (model.Title == null)
                {
                    foreach (var line in firstLines.Take(10))
                    {
                        if (line.TrimStart().StartsWith("# "))
                        {
                            model.Title = line.TrimStart(new char[] { ' ', '\t', '#' });
                            break;
                        }
                    }
                }
            }

            model.RawMarkdown      = markdown;
            model.RenderedMarkdown = Markdown.ParseHtmlString(markdown);

            return(model);
        }
Пример #14
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            _splitButton1 = _split.AddButton("Comments", "-");
            _splitButton2 = _split.AddButton("Participants", "-");

            Title = "Issue #" + ViewModel.Id;
            HeaderView.SetImage(null, Images.Avatar);
            HeaderView.Text = Title;

            Appeared.Take(1)
            .Select(_ => Observable.Timer(TimeSpan.FromSeconds(0.2f)))
            .Switch()
            .ObserveOn(RxApp.MainThreadScheduler)
            .Select(_ => ViewModel.Bind(x => x.IsClosed, true).Where(x => x.HasValue).Select(x => x.Value))
            .Switch()
            .Subscribe(x =>
            {
                HeaderView.SubImageView.TintColor = x ? UIColor.FromRGB(0xbd, 0x2c, 0) : UIColor.FromRGB(0x6c, 0xc6, 0x44);
                HeaderView.SetSubImage((x ? Octicon.IssueClosed :Octicon.IssueOpened).ToImage());
            });

            _milestoneElement = new StringElement("Milestone", "No Milestone", UITableViewCellStyle.Value1)
            {
                Image = Octicon.Milestone.ToImage()
            };
            _assigneeElement = new StringElement("Assigned", "Unassigned", UITableViewCellStyle.Value1)
            {
                Image = Octicon.Person.ToImage()
            };
            _labelsElement = new StringElement("Labels", "None", UITableViewCellStyle.Value1)
            {
                Image = Octicon.Tag.ToImage()
            };
            _addCommentElement = new StringElement("Add Comment")
            {
                Image = Octicon.Pencil.ToImage()
            };

            var actionButton = new UIBarButtonItem(UIBarButtonSystemItem.Action)
            {
                Enabled = false
            };

            NavigationItem.RightBarButtonItem = actionButton;

            ViewModel.Bind(x => x.IsModifying).SubscribeStatus("Loading...");

            ViewModel.Bind(x => x.Issue).Subscribe(x =>
            {
                _assigneeElement.Value  = x.Assignee != null ? x.Assignee.Login : "******";
                _milestoneElement.Value = x.Milestone != null ? x.Milestone.Title : "No Milestone";
                _labelsElement.Value    = x.Labels.Count == 0 ? "None" : string.Join(", ", x.Labels.Select(i => i.Name));

                var model    = new MarkdownModel(ViewModel.MarkdownDescription, (int)UIFont.PreferredSubheadline.PointSize, true);
                var markdown = new MarkdownWebView {
                    Model = model
                };
                var html = markdown.GenerateString();
                _descriptionElement.SetValue(string.IsNullOrEmpty(ViewModel.MarkdownDescription) ? null : html);

                HeaderView.Text    = x.Title;
                HeaderView.SubText = "Updated " + x.UpdatedAt.Humanize();
                HeaderView.SetImage(x.User?.AvatarUrl, Images.Avatar);
                RefreshHeaderView();

                Render();
            });

            ViewModel.BindCollection(x => x.Comments).Subscribe(_ => RenderComments());
            ViewModel.BindCollection(x => x.Events).Subscribe(_ => RenderComments());
            ViewModel.Bind(x => x.ShouldShowPro).Subscribe(x => {
                if (x)
                {
                    this.ShowPrivateView();
                }
            });

            OnActivation(d =>
            {
                d(_milestoneElement.Clicked.BindCommand(ViewModel.GoToMilestoneCommand));
                d(_assigneeElement.Clicked.BindCommand(ViewModel.GoToAssigneeCommand));
                d(_labelsElement.Clicked.BindCommand(ViewModel.GoToLabelsCommand));
                d(_addCommentElement.Clicked.Subscribe(_ => AddCommentTapped()));
                d(_descriptionElement.UrlRequested.BindCommand(ViewModel.GoToUrlCommand));
                d(_commentsElement.UrlRequested.BindCommand(ViewModel.GoToUrlCommand));
                d(actionButton.GetClickedObservable().Subscribe(ShowExtraMenu));
                d(HeaderView.Clicked.BindCommand(ViewModel.GoToOwner));

                d(ViewModel.Bind(x => x.IsCollaborator, true).Subscribe(x => {
                    foreach (var i in new [] { _assigneeElement, _milestoneElement, _labelsElement })
                    {
                        i.Accessory = x ? UITableViewCellAccessory.DisclosureIndicator : UITableViewCellAccessory.None;
                    }
                }));

                d(ViewModel.Bind(x => x.IsLoading).Subscribe(x => actionButton.Enabled = !x));
            });
        }
Пример #15
0
 public MainViewModel(MarkdownModel model)
 {
     _Model = model;
 }
        public ActionResult Index()
        {
            MarkdownModel model = GetModel();

            return(View(this.Template, model));
        }